每天一点点音视频_AVPacket

之前已经提到了, AVPacket 里存储着压缩后的视频帧数据。现在我们详细来说明以下它的结构, 创建,使用和释放。

结构

它的结构主要包括属于那个流,数据, 数据的信息包括大小等。

创建

AVPacket *pkt = av_packet_alloc();

释放

av_packet_free(AVPacket **pkt);

这里需要注意的是, 传的是指针的指针, 这就避免了每次调用了这个方法后自己再置空, 这个方法内部自动做了置空。

操作

AVPacket 是一个传递数据的结构, 所以没有专门的操作的方法, 它有一些方便复用的方法, 比如:

AVPacket *av_packet_clone(const AVPacket *src);
int av_copy_packet(AVPacket *dst, const AVPacket *src);
int av_packet_ref(AVPacket *dst, const AVPacket *src);
void av_packet_unref(AVPacket *pkt);

当然还是有一些其他的方法的, 比如对数据进行压缩的, 对额外数据进行的操作,知道就行。

明天: 每天一点点音视频_AVFrame