之前已经提到了, 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