1.注意:什么是解封装,就是将二进制音视频文件,开始音视频文件分离,解码的具体操作。
2.解封装没有严格的性能问题。它的开销非常小。
3.解封装使用的一些接口
(1)av_register_all()
会注册所有的解封装和加封装格式。也可以单个注册,这个是在使用之前,最先执行的一个借口。
(2)avformat_network_init()
直接解封装rtsp数据,一般指摄像机
(3)avformat_open_input()
打开文件并解析
(4)avformat_find_stream_info
查找文件的格式和索引
(5)找到对应的音频流和视频流
av_find_best_stream()
(6)三个结构体:
AVFormatContex:stream数组,如音频流,视频流参数信息
AVStream
AVpackt:针对于具体的解封装完之后的一个一个的数据包,它提供了一个av_read_frame()用来读取一个pts/dts,stream_index,用来判断他是音频还是视频。
所以综和上面的接口我们可以有下面的解封装流程。
一:注册函数:av_register_all()
二:打开封装:avformat_open_input()
三:找到音视频流信息:avformat_find_stream_info
四:找到对应的音频和视频:av_find_best_stream()
五:读取:av_read_frame()