MP4 / ISO 14496-12:如何找到视频和音频访问单元?

2023-11-22

我正在编写一个用于检查 MP4 文件(又名 ISO 基本媒体文件格式,ISO 14496 第 12 部分)的工具。

我可以解释 ISO 14496-12 中列出的由 OSS 生成的大部分框。 我还没有弄清楚如何提取单独的视频访问单元和音频访问单元。

我有理由相信“mdat”框中的 H.264 视频的 NAL 单元上没有 ISO 14496-10 附件 B“0x000001”前缀。

我尝试过解释 SampleToChunkBox('stsc')、SampleSizeBox('stsz') 和 ChunkOffsetBox('stco') 以在 'mdat' 内定位媒体样本,但我似乎找不到任何可以解释的内容作为 nal_unit() (ISO 14496-10 第 7.3.1 节)或 slice_header() (第 7.3.3 节)。

我也很好奇 SPS (7.3.2.1) 和 PPS (7.3.2.2) 住在哪里。我怀疑它们住在“trak”盒子内的某个地方,但我还没弄清楚在哪里。

指向应用程序或库的指针的用途有限。我正在编写一个应用程序,与数学解释相比,外部源代码更难理解(受到其自己的框架的阻碍)。


在花了几个小时在 stackoverflow 上查找其他问题后,我最终偶然发现了简短的回答,这使我得到了更全面的答案。

解析 mdat MP4 中的 H264

ISO 媒体文件中 H.264 的封装由 ISO 覆盖 14496 第 15 部分。SPS 和 PPS 藏在“avcC”盒子中 记录在第 5.3.4.1.2 和 5.2.4.1.1 节中。这个盒子还告诉 解释样本时长度字段的长度。

这些样本记录在第 5.2.3 节中,由一系列 NAL 单位以长度为前缀。 ffmpeg 的 MP4 示例有一个 每个样本切片,但第一个样本包含 SEI 包含记录 H.264 编解码器版本和 编码参数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MP4 / ISO 14496-12:如何找到视频和音频访问单元? 的相关文章

随机推荐