FFMpeg中的AVPacket与H.264 NAL Uint之间的关系是什么?

Ell*_*llo 7 video ffmpeg video-streaming h.264 x264

我使用FFMpeg的api将图像编码为H.264流,代码就像这个编码代码.当我调用该函数时,avcodec_encode_video2我得到了一个AVPacket的数据,然后我将它保存到文件中.我使用几个图像来获取几个文件进行测试.根据起始码00 00 00 0100 00 01,我发现第一和第二文件的数据都包含几个H.264 NAL UINT.但是从第三个文件开始,我找不到startcode.喜欢跟随图像. 图片

我感到困惑.根据FFMpeg的代码,我认为一个AVPacket的数据应该包含至少一个NAL Uint,但结果是意外的.这是否意味着一个NAL Uint可能被划分为两个AVPackets的数据?AVPacket和H.264 NAL Uint之间的关系是什么?

Ell*_*llo 0

经过一番测试,我发现这只是我的愚蠢错误。
我在 Qt 中获取了 avpkt 和setRawDataQByteArray,然后将字节数组保存到文件中。在保存之前,我打电话av_packet_unref重置了avpkt。我以为这setRawData会复制 avpkt 的数据,但实际上 QByteArray 只包含数据指针。所以一个AVPacket的数据至少包含一个完整的NAL Uint,这是正确的。