协议层:理论与实战


***【在线视频教程】***

好文章,来自【福优学苑@音视频+流媒体】

协议操作:三大数据结构

AVIOContext, URLContext, URLProtocol


协议操作对象结构:


image.png



image.png


协议(文件)操作的顶层结构是AVIOContext,这个对象实现了带缓冲的读写操作;FFMPEG的输入对象AVFormat的pb字段指向一个AVIOContext。


AVIOContext的opaque实际指向一个URLContext对象,这个对象封装了协议对象及协议操作对象,其中prot指向具体的协议操作对象,priv_data指向具体的协议对象。


URLProtocol为协议操作对象,针对每种协议,会有一个这样的对象,每个协议操作对象和一个协议对象关联,比如,文件操作对象为ff_file_protocol,它关联的结构体是FileContext。


初始化AVIOContext函数调用关系

初始化AVIOFormat函数调用关系:


image.png

avio实战:打开本地文件或网络直播流


avio_file1.c





avio实战:自定义AVIO


avio_file2.c



avio实战:自定义数据来源

avio自定义数据来源: 

可以是文件,可以是内存,可以是网络


avio_reading.c


内存映射文件:


av_file_map

av_file_unmap







好文章,来自【福优学苑@音视频+流媒体】
***【在线视频教程】***