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是所有项目的必选。

相关推荐
Mahut1 天前
我用 Electron + FFmpeg 做了一个本地视频处理工作站 ClipForge
前端·ffmpeg·electron
源之缘-OFD先行者10 天前
破界渲染:WinForm下的FFmpeg+Vortice极速推流引擎
ffmpeg·winform·推流·h264
源来猿往10 天前
记ffmpeg-8.1.1 之Android库编译(window)
android·ffmpeg
Deitymoon10 天前
RV1126+FFMPEG多路码流监控项目
ffmpeg·音视频
芝麻别开门10 天前
GStreamer DASH Demux 知识文档
ffmpeg·dash
ltlovezh11 天前
ROI 编码学习指南:Android 与 FFmpeg 的真实实现边界
android·ffmpeg·音视频开发
m0_7471245312 天前
多媒体框架 FFmpeg 和 GStreamer
ffmpeg·gstreamer
小鹿研究点东西12 天前
AI直播系统怎么搭?
人工智能·ffmpeg·自动化·音视频·语音识别
Nightwish512 天前
Oracle 数据库巡检检查清单
数据库·oracle·ffmpeg
luoyayun36113 天前
Qt/QML + FFmpeg 实现多音频文件顺序拼接功能
qt·ffmpeg·音频拼接