我正在编写一个用于检查 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(使用前将#替换为@)