Rob*_*Rye 7 encoding parsing ffmpeg decoding h.264
好的,就是这种情况,我实际上想解析一个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(类型(XX)= 5?),P(类型(XX)= 7?)或B(类型(XX)= 8?)帧.我不确定这些数字,我一直在寻找它,但没有找到好的来源.这是第一个问题,NALU对于不同的帧应该是多少?
无论如何,当我在mov文件上使用av_read_frame时,我得到的帧看起来像这样:
4B =大小,1B = XX,然后是数据.(至少这是我认为我得到的)
其中i存储帧的文件总是尺寸长,当我在一个16进制软件(否则也当然)看着他们.并且XX在第一个中始终为65(即,类型(XX)= 5),然后在一帧中为61(即,类型(XX)= 1),然后在一帧中返回到65,依此类推.
我猜这些帧是这样的:IPPPPPPIPPPPPPPIPPPPP PP ....然而,我对不同帧类型的类型号的假设是错误的,这很有可能.(关于这个的任何建议?除了ISO/IEC 14496-10,我真的不明白).
我试图删除大小并在XX字节和数据之前附加00 00 00 01但没有成功.关于如何将帧修改为有效的H264编码帧的任何提示?
首先,我必须推荐一个很好的工具来理解H264流:http://sourceforge.net/projects/h264bitstream/
不,要回答您的具体问题,是的,帧通常以65和61开头.通常以67和68开头的特殊NAL单元分别是SPS(序列参数集)和PPS(图片参数集).
我还建议您尝试ffmpeg -i input.mov -vcodec copy output.h264将附件B流(00 00 00 01)正确地作为单个文件使用.
我无法准确理解,你想通过从mov中提取帧并将它们再次放入test.mov来实现.
| 归档时间: |
|
| 查看次数: |
1986 次 |
| 最近记录: |