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

相关推荐
mortimer2 小时前
Python + FFmpeg 视频自动化处理指南:从硬件加速到精确剪辑
python·ffmpeg·音视频开发
小c君tt5 小时前
ffmpeg-音-视频-基本概念
ffmpeg·音视频
Hello World,7 小时前
使用ffmpeg播放视频并添加当前时间水印
ffmpeg·音视频
筏.k7 小时前
WebRTC 集成 FFmpeg D3D12VA HEVC 硬件编码 avcodec_open2 返回 -22 问题排查与解决方案
ffmpeg·webrtc
苏三福19 小时前
摄像头推流、拉流
ffmpeg
你好音视频1 天前
RTSP拉流:RTP包解析流程详解
ffmpeg·音视频
大熊背1 天前
PotPlay视频播放器YUV色彩空间不一致所导致的图像发蒙问题及优化方案
ffmpeg·色彩空间·通透度
hjjdebug1 天前
标注 avcodec_send_packet 和 avcodec_receive_frame 函数
ffmpeg·send_packet·receive_frame
别动哪条鱼1 天前
FFmpeg API 数据结构及其详细说明:
数据结构·ffmpeg·音视频·aac
Industio_触觉智能1 天前
瑞芯微RK3568平台FFmpeg硬件编解码移植及性能测试实战攻略
ffmpeg·rk3588·rk3568·瑞芯微·rk3562·rk3576