本文主要用于个人记忆,大量引用了别人的文章内容,不一定正确,如有错误,欢迎指正
本文主要讲述解封装获得记录了流信息AVStream的解封转上下文后,如何从解封转上下文中获取AVPacket数据,并将AVPacket数据解码为AVFrame数据。
其中AVPacket数据是存放解码前的数据的,AVFrame是存放解码后的数据(PCM数据或YUV/RBG数据)的
对于视频来说一般一个AVPacket对应一个AVFrame(也就是一帧),音频一般一个AVPacket对应多个AVFrame
目录
解码用到的结构体
AVStream 存放视频/音频流信息的结构体
AVPacket 存放压缩编码数据相关的结构体
AVFrame 存放解码后数据的结构体
AVCodecContext 编/解码上下文,在解码全程都会用到
AVCodec 存放编/解码器信息的结构体
AVStream包含的重要变量:
int index:标识该视频/音频流
AVCodecContext *codec:指向该视频/音频流的AVCodecContext
AVRational time_base:时基。通过该值可以把PTS,DTS转化为真正的时间。
int64_t duration:该视频/音频流长度
AVDictionary *metadata:元数据信息
AVRational avg_frame_rate:帧率(不能直接使用需要用分子/分