我正在尝试调查生成的MP4的问题,返回错误:
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x55f0ae819080] Failed to add index entry
Last message repeated 277 times
[h264 @ 0x55f0ae81c300] Invalid NAL unit size (-800932280 > 6).
为了协助调查,我
ffmpeg
以同样的方式对同一视频进行编码,以便我可以比较这两个文件。但我注意到
ffmpeg
-视频样本不以编码文件开头
0x000001
0x00000001
.
我试着查看MP4规范和H.264规范,以理解为什么有时需要这个开始代码,但在这种情况下不是必需的,但实际上有数百页,我在一天的阅读中找不到任何东西。
ffmpeg
-生成的文件在此处可用:
http://files.stevendesu.com/test.mp4
如果用MP4 atom解析器打开它,您将注意到第一个
mdat
0000 6DF4 6D64 6174 0000 04BF 6588 8101
1788 8C12 0001 1498 3800 188E 003F FFFC
...
前8个字节有意义:
00006DF4
(28148)=
mdat公司
原子,
6D646174
=ASCII中的“mdat”
在这之后
mdat公司
原子以
0x000004
. 根据
traf
moof
,第一个视频样本(持续时间为800/16000秒,大小为19899字节)应该正好从这里开始。因此
0x000004个
是第一个视频样本的前3个字节。
有谁能解释一下为什么这个视频样本不是以NALU开始代码开始的?