ffmpeg面向对象——AVInputFormat与URLProtocol啥关系

ffmpeg面向对象-rtsp拉流相关对象》和《ffmpeg面向对象------拉流协议匹配机制探索》探索过了输入格式匹配和底层协议匹配,且ffmpeg拉流是先是匹配输入格式------抽象为AVInputFormat类,然后再匹配url协议类------抽象为URLProtocol类。

它们是啥关系?为啥先匹配输入格式再匹配协议类?

前者是应用层协议,比如rtsp,http等,后者是实际协议的底层承载体,比如open,tcp等。

其实还是模块化编程、分层思想。

以rtsp为例。

标准rtsp拉流的是采用tcp传输,那么rtsp协议层实现要和底层传输分离,模块化,各自并行迭代开发,耦合性降低,它们唯一的纽带就是接口------面向接口编程------软件设计5大原则的依赖倒置原则。只要接口不变,各自并行迭代开发前进就行了。

所以标准rtsp拉流协议的实现------不管ffmpeg还是各大公司,都是把应用层协议和底层传输协议分离的,所以ffmpeg把rtsp协议实现放到了rtsp.c中,把tcp放到了tcp.c中------其实以面向对象的思想和规范,各类都是一个个c/cpp文件,看看c++源文件和ffmpeg源文件起名,惊人的一致。

所以对于大型软件,如果追求极致性能,选择c语言开发,那么oopc是所有项目的必选。

相关推荐
神仙别闹5 小时前
基于C#实现的(WinForm)模拟操作系统文件管理系统
java·git·ffmpeg
Fre丸子_18 小时前
ffmpeg之播放一个yuv视频
ffmpeg·音视频
yinqinggong20 小时前
从源码编译支持FFmpeg的OpenCV
opencv·ffmpeg
冰山一脚201321 小时前
ffmpeg添加sps,pps
ffmpeg
嘟嘟实验室2 天前
微信小程序xr-frame透明视频实现
微信小程序·ffmpeg·音视频·xr
泰勒朗斯2 天前
如何编译Opencv +ffmpeg linux 明明安装了ffmpeg但是opencv就是找不到
linux·opencv·ffmpeg
-Mr_X-2 天前
windows下srs流媒体服务器使用ffmpeg推流
ffmpeg
dvlinker2 天前
C++开源项目 VLC 源代码的交叉编译以及库的裁剪方法详解
ffmpeg·mingw-w64·msys2·cygwin·开源vlc·vlc编译·vlc裁剪
因我你好久不见3 天前
springboot java ffmpeg 视频压缩、提取视频帧图片、获取视频分辨率
java·spring boot·ffmpeg
cuijiecheng20183 天前
音视频入门基础:MPEG2-TS专题(21)——FFmpeg源码中,获取TS流的视频信息的实现
ffmpeg·音视频