站长之家下载,做ppt的网站有哪些内容,2021年国家大事件有哪些,营销型外贸网站制作《ffmpeg面向对象-rtsp拉流相关对象》和《ffmpeg面向对象——拉流协议匹配机制探索》探索过了输入格式匹配和底层协议匹配#xff0c;且ffmpeg拉流是先是匹配输入格式——抽象为AVInputFormat类#xff0c;然后再匹配url协议类——抽象为URLProtocol类。
它们是啥关系#…《ffmpeg面向对象-rtsp拉流相关对象》和《ffmpeg面向对象——拉流协议匹配机制探索》探索过了输入格式匹配和底层协议匹配且ffmpeg拉流是先是匹配输入格式——抽象为AVInputFormat类然后再匹配url协议类——抽象为URLProtocol类。
它们是啥关系为啥先匹配输入格式再匹配协议类
前者是应用层协议比如rtsphttp等后者是实际协议的底层承载体比如opentcp等。 ffmpeg的这种设计就是先查找匹配输入格式然后在根据匹配的输入格式再查找对应的协议是一环接一环的——因为具体的输入格式里会有具体的底层协议先找到AA才能告诉你B在哪。所以也层层递进有先有后的。
其实还是模块化编程、分层思想。
以rtsp为例。 标准rtsp拉流的是采用tcp传输那么rtsp协议层实现要和底层传输分离模块化各自并行迭代开发耦合性降低它们唯一的纽带就是接口——面向接口编程——软件设计5大原则的依赖倒置原则。只要接口不变各自并行迭代开发前进就行了。
所以标准rtsp拉流协议的实现——不管ffmpeg还是各大公司都是把应用层协议和底层传输协议分离的所以ffmpeg把rtsp协议实现放到了rtsp.c中把tcp放到了tcp.c中——其实以面向对象的思想和规范各类都是一个个c/cpp文件看看c源文件和ffmpeg源文件起名惊人的一致。
所以对于大型软件如果追求极致性能选择c语言开发那么oopc是所有项目的必选。