1.在完成了视频的格式的解析,即音视频编码参数获取之后,我们就可以开始读取具体的音视频帧数据。
av_read_frame
我们要忠实的是,函数调用之后是否应该涉及到清理方法。
先看下上面函数的参数:
AVFormatContext *s //文件格式的上下文
AVPacket *pkt //你传的指针是否需要事先处理,如何处理(提前说这个指针是不能传NULL的)
AVPacket重点讲:
里面的成员:
1.AVBufferrRef *buf;
2.int64_t pts; //pts *(num/den)(f分子/分母)显示时间
3.int64_t dts; 解码时间
4.uint8_t *data;int size //指的是avbuffer空间
AVPacket的几个函数:
(1)AVPacket *av_packet_alloc(void);创建并初始化,这个是创建在堆上的空间,需要我们自己记得释放。
(2)AVPacket *av_packet_clone(const AVPacket *src)创建并引用计数
(3)int av_packet_ref(AVPacket *dst,const AVPacket *src);av_packet_unref(AVPacket *pkt):引用计数相关
(4)void av_packet_free(AVPacket **pkt)清空对象并减引用计数
(5)void av_init_packet(AVPacket *pkt);默认值
(6)int av_packet_from_data(AVPacket *pkt,uint8_t *data, int size);
(7)int av_copy_packet(AVPacket *dst,const AVPacket *src);attribute_deprecateds 数据相关。