MP4-AT 文件格式支持在 ISOBMFF/MP4 结构中将有助于拍摄后编辑和合成的辅助轨道(例如深度图视频轨道)以及可播放的媒体数据一起存储。
此格式的目标是存储辅助轨道,以便将这些轨道隐藏起来,不向未实现此规范的客户端显示。这样可以防止客户端将辅助轨道解读为可播放的数据。
依赖项
以下是本规范所依据的规范性参考资料:
- RFC 中用于指定要求级别的关键字
- ISO/IEC 14496-12:2022 ISO Box 媒体文件格式 (ISOBMFF/MP4)
- ISO/IEC 14496-10:2022 视听对象编码第 10 部分:高级视频编码 (AVC)
- ISO/IEC 23008-2:2023 异构环境中的高效编码和媒体传送 第 2 部分:高效视频编码 (HEVC)
- VP9 视频编解码器 (VP9)
- AV1 比特流和解码流程规范 (AV1)
- 动态深度 1.0 规范
简介
本文档按照 RFC2119 中定义的 IETF 标准使用“必须”“不得”“必需”“应”“不应”“建议”“可以”和“可选”字样。
MP4-AT 文件格式
MP4-AT 文件格式由主要轨道和辅助轨道组成,可执行各种编辑操作。主轨道(例如,应用了虚化效果的视频轨道)会照常写入 MP4 文件中,而辅助轨道会写入辅助轨道 MP4 中。辅助轨道 MP4 是另一种符合 MP4 标准的容器,位于 axte
(辅助轨道扩展)框中。建议将 axte
盒子作为文件中的最后一个盒子,这样便于通过截断文件来移除辅助数据。
此格式向后兼容:不支持此格式其余部分的播放器在加载文件时会读取并播放主要视频轨道。
该文件包含一个带有 mdta
处理程序的 moov.meta
框,其中包含以下元数据。元数据可按任意顺序显示。
元数据键 |
类型指示器 |
值 |
|
78(大端 64 位无符号整数) |
|
|
78(大端 64 位无符号整数) |
|
辅助轨道扩展 (axte) 框
语法
axte
盒使用 ISO/IEC 14496-12:2022: 4.2 中定义的盒的语义进行描述
aligned(8) class AuxiliaryTracksExtensionBox extends Box('axte') {
bit(8) data[];
}
其中,data 字段包含辅助轨道 MP4。
负载
axte
框的载荷是辅助轨道 MP4。辅助轨道 MP4 采用常规的 MP4 结构。
辅助轨道 MP4 包含所有辅助轨道的选段元数据。所有辅助轨道选段载荷都必须存储在辅助轨道 MP4 的 mdat
盒中,或外部 MP4 的 mdat
盒中(但不能同时存储在两个位置)。
在前一种情况下,auxiliary.tracks.interleaved
必须设置为 0(请参阅下文中的“静态元数据”),并且 axte.moov
框中的采样偏移量相对于辅助轨道 MP4 的开头。这使得辅助轨道 MP4 是自包含的,这意味着辅助轨道 MP4 可以独立读取,而无需引用外部 MP4。
在后一种情况下,auxiliary.tracks.interleaved
必须设置为 1(请参阅下文中的“静态元数据”),axte.moov
框中的采样偏移量相对于文件的开头,并且主要轨道和辅助轨道的采样载荷可以交错。在这种情况下,axte.mdat
框可以不存在。
静态元数据
辅助轨道 MP4 包含一个包含 mdta
处理程序的 moov.meta
框,其中包含以下元数据。元数据可按任意顺序显示。
元数据键 |
类型指示器 |
值 |
(可选) |
75(8 位无符号整数) |
0:表示采样点未交错,且位于 1:表示采样点交错地位于主视频轨道的 所有其他值均已预订,不得使用。 如果没有此元数据,则默认值为 0。 |
|
0(预留) |
二进制格式:
|
auxiliary.tracks.map
中轨道类型的顺序表示这些轨道在辅助轨道 MP4 载荷中的顺序。
辅助轨道类型
辅助轨道 MP4 可能包含以下对编辑有用的视频和元数据轨道。
锐化视频轨道
未应用可编辑特效的完整分辨率视频。视频轨道的存储分辨率可能与主视频轨道不同。清晰视频轨道可以使用任何常见的视频编解码器,并且可以是标准动态范围或高动态范围。
深度视频轨道
深度视频轨道提供编码为标准灰度视频的深度信息。这样做是为了允许在没有任何深度专用解码或编码支持的设备上解码和编码深度轨道。深度视频轨道可以使用 H.264/AVC、H.265/HEVC、VP9、AV1 或任何其他常见的视频编解码器。深度视频轨道可以是 8 位或 10 位,并且采用线性或反向编码(请参阅动态深度 1.0 规范)。
时间戳深度元数据轨道
同步深度元数据轨道包含用于计算深度的归一化值,以及可用于计算散景效果的模糊半径的焦点表。
MIME 类型示例 |
|
语法示例 |
二进制格式(所有整数均采用小端字节序):
|
半透明视频轨道
用于存储相应帧中每个像素的 Alpha 值(透明度)的视频轨道。最小值表示完全透明,而最大值表示完全不透明。介于两者之间的值表示线性刻度上的不同半透明度级别,而合成使用非预乘色值的正常混合模式。与深度视频轨道类似,此轨道也应编码为标准灰度视频。
用例示例
在主要轨道中存储可播放的渲染的虚化视频,辅助视频轨道用于存储原始(模糊处理前)锐利的颜色数据和深度图,辅助同步元数据轨道包含反映每个帧焦点的深度元数据。然后,您可以在视频编辑器中使用辅助轨道来修改焦点正文并重新渲染高质量的虚化视频轨道。
在主视频轨道中存储预渲染的半透明“贴纸”视频(例如,白色背景上的动画表情符号视频),辅助视频轨道包含 Alpha 映射。然后,合成器可以使用辅助轨道的半透明度信息将贴纸与背景混合。