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

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.kler.cn/news/341637.html

相关文章:

  • AR虚拟试用,让网购不再只靠想象!
  • 新闻推荐系统:Spring Boot框架详解
  • PCB缺陷检测数据集 xml 可转yolo格式 ,共10688张图片
  • vue3.x系列之v-model的使用技巧及面试高频问题
  • Github 2024-10-06 php开源项目日报 Top10
  • 多种方式连接和管理 Oracle 数据库详解
  • 风口来了:有空可以考个人工智能证书!
  • k8s中pod的管理
  • 【ArcGIS/C#】调用控制台处理代码
  • 仓储物流行业--仓储服务升级经典案例
  • 【element-tiptap】如何将编辑器初始化为全屏显示?
  • 如何用AI两小时上线自己的小程序
  • 量化交易常见策略
  • 【斯坦福CS144】Lab1
  • 基于springboot和vue.js 养老院管理系统设计与实现
  • AI生成视频
  • 4.扩散模型的似然函数最大化(1)
  • 如何制作低代码开发的视频教程?
  • 腾讯云SDK 下载
  • Solidity优质例子(二)物流的增删改查智能合约(附truffle测试)