我使用FFMpeg的API将图像编码为H.264流,代码如下(编码代码)。当我调用函数
根据起始码
avcodec_encode_video2
时,我得到一个AVPacket的数据,然后将其保存到文件中。我使用多张图片进行测试,得到多个文件。根据起始码
00 00 00 01
或00 00 01
,我发现第一个和第二个文件的数据都包含多个H.264 NAL单元。但是从第三个文件开始,我找不到起始码了。就像下面的图片一样。
我感到困惑。根据FFMpeg的代码,我认为一个AVPacket的数据应该至少包含一个NAL单元,但结果出乎意料。这是否意味着一个NAL单元可能被分成两个AVPacket的数据?AVPacket和H.264 NAL单元之间有什么关系?
avcodec_encode_video2
的说明:从帧(frame)中获取输入的原始视频数据,并将下一个输出包(avpkt)写入,如果可用。输出包不一定包含最新帧的数据,因为编码器可以根据需要内部延迟和重新排序输入帧。 所以可能被分割了。您能够将数据连接起来并提供给解码器,看看它是否会出现问题吗? - Dimitri Podborskigot_output
每次都是真的。 - Ello1034 9ab2 047f 0000 a0f7 816e 047f 0000 0000 0000 0000 0000 70c6 5eb2 047f 0000
。如果avpkt是正常的,我认为连续的00 00 00
应该被编码器替换为00 00 03 00
。感觉第三个avpkt是错误的。 - Ello