将.mov文件转换为.h264文件



好的,这就是情况,我实际上想从mov文件中解析帧。获取编码的h264帧。我已经设法这样做,通过使用ffmpeg,但当我试图通过使用ffmpeg -i test* test.mov再次制作电影,我得到test00: Invalid data found when processing input,所以有一些不正确的帧的结构。根据我的理解,框架应该具有以下外观:

00 00 00 01 XX数据-------------

其中XX表示它是I-, p -还是b -帧。或者更具体地说,type(XX) = 0x0F && XX表示它是I(type(XX) = 5?),P(type(XX) = 7?)或B(type(XX) = 8?)框架。我不确定这些数字,我一直在寻找它,但没有找到好的来源。这是第一个问题,对于不同的坐标系NALU应该是多少?

无论如何,当我在mov文件上使用av_read_frame时,我得到的帧是这样的:

4B = size, 1B = XX,然后data。(至少这是我认为我得到的)

当我在hexeditor中查看它们时,我存储帧的

文件总是大小长(当然也有其他情况)。而XX总是65(即。类型(XX) = 5)在第一个,然后61(即。type(XX) = 1)几帧,然后返回到65帧,依此类推。

我猜这些帧是这样的:i p p p p p p p p p p p p p i p p p p p p p p ....然而,我对不同帧类型的类型数的假设是错误的,这是很有可能的。(关于阅读这个有什么建议吗?除了ISO/IEC 14496-10,我真的不明白)。

我已经尝试删除大小并在XX字节和数据之前附加00 00 00 01,但没有成功。关于如何修改帧是有效的H264编码帧的任何提示?

首先,我必须推荐一个很好的工具来理解H264流:http://sourceforge.net/projects/h264bitstream/

不,回答你的具体问题,是的,帧通常以65和61开头。NAL的特殊单位通常以67和68开头,分别是SPS(序列参数集)和PPS(图像参数集)。

我还建议您尝试使用ffmpeg -i input.mov -vcodec copy output.h264将附件B流(带有00 00 00 01)正确地作为单个文件。

我不能完全理解,你试图通过从mov中提取帧并将它们放入测试中来实现什么。mov。

最新更新