当前位置: 首页 > news >正文

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


http://www.mrgr.cn/news/46853.html

相关文章:

  • Python----Python高级(函数基础,形参和实参,参数传递,全局变量和局部变量,匿名函数,递归函数,eval()函数,LEGB规则)
  • kalilinux - msf和永恒之蓝漏洞
  • Spring Boot中的扫描注解如何使用
  • vue 中的 v-model
  • 【日常小记】Ubuntu启动后无图形界面且网络配置消失
  • Python进阶-在Ubuntu上部署Flask应用
  • 息肉检测数据集 yolov5 yolov8适用于目标检测训练已经调整为yolo格式可直接训练yolo网络
  • Java 21的虚拟线程是怎么回事
  • FLAG肽;DYKDDDDK;98849-88-8
  • 【C++】红黑树
  • Python知识点:基于Python工具,如何使用Scikit-Image进行图像处理与分析
  • NASA数据集:GES DISC 的 ATMOS L2 压力网格痕量气体,固定场格式 V3 (ATMOSL2PF)
  • Java | Leetcode Java题解之第467题环绕字符串中唯一的子字符串
  • 微服务发展历程
  • JimuReport报表部署 | 升级 | 仪表盘集成 | 迁移其他项目 (图文讲解)
  • MES系列-生产过程管理
  • 衡石分析平台系统管理手册-智能运维之数仓管理
  • 54页PPT | 显示面板行业商业智能BI解决方案
  • Python知识点:基于Python工具,如何使用Mediapipe进行人体姿态估计
  • linux执行脚本的时候为什么要写成 ./脚本名 而不是用脚本名直接执行
  • 【海思方案的4G低功耗抓拍摄像机模组方案】
  • python画图|两个Y轴共享X轴
  • C语言 | Leetcode C语言题解之第467题环绕字符串中唯一的子字符串
  • 三星SCX-4521F硒鼓加粉后的清零方法
  • Ansible 中的 Role
  • 【JVM系列】深入理解Java虚拟机(JVM)的核心技术 :从程序计数器到栈帧结构(二、Java虚拟机栈探秘)