gpt4 book ai didi

video - 为什么 MP4 mdat atom 不以 H.264 NALU 起始码开头?

转载 作者:行者123 更新时间:2023-12-04 22:59:22 25 4
gpt4 key购买 nike

我正在尝试调查我正在生成返回错误的 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).

第一帧解码完美,以后的所有帧都解码失败。这会产生 0.042 秒持续时间的视频。

为了帮助调查,我有 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 atom 以 0x000004 开头.根据 traf前面的原子 moof ,第一个视频样本(持续时间为 800/16000 秒,大小为 19899 字节)应该正好从这里开始。因此 0x000004是第一个视频样本的前 3 个字节。

此视频示例不是以 NALU 起始代码开头,或者 NALU 周围有一些我不理解的 header /包装器。

谁能向我解释为什么这个视频示例不以 NALU 开始代码开头?

最佳答案

只有附件 B 文件将包含 000001开始代码。我有 AVCC 数据。

关于video - 为什么 MP4 mdat atom 不以 H.264 NALU 起始码开头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53786950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com