协议层:理论与实战
好文章,来自【福优学苑@音视频+流媒体】
协议操作:三大数据结构
AVIOContext, URLContext, URLProtocol
协议操作对象结构:
协议(文件)操作的顶层结构是AVIOContext,这个对象实现了带缓冲的读写操作;FFMPEG的输入对象AVFormat的pb字段指向一个AVIOContext。
AVIOContext的opaque实际指向一个URLContext对象,这个对象封装了协议对象及协议操作对象,其中prot指向具体的协议操作对象,priv_data指向具体的协议对象。
URLProtocol为协议操作对象,针对每种协议,会有一个这样的对象,每个协议操作对象和一个协议对象关联,比如,文件操作对象为ff_file_protocol,它关联的结构体是FileContext。
初始化AVIOContext函数调用关系
初始化AVIOFormat函数调用关系:
avio实战:打开本地文件或网络直播流
avio_file1.c
avio实战:自定义AVIO
avio_file2.c
avio实战:自定义数据来源
avio自定义数据来源:
可以是文件,可以是内存,可以是网络
avio_reading.c
内存映射文件:
av_file_map
av_file_unmap
***【在线视频教程】***