此格式的目标是存储辅助轨道,使这些轨道对未实现此规范的客户端隐藏。这可以防止客户端将辅助轨道解释为可播放数据。
依赖项
以下是本规范的规范性引用
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 规范
- “必须 (MUST)”、“不得 (MUST NOT)”、“要求 (REQUIRED)”、“应 (SHOULD)”、“不应 (SHOULD NOT)”、“建议 (RECOMMENDED)”、“可以 (MAY)”和“可选 (OPTIONAL)”的用法遵从 RFC2119 中定义的 IETF 标准。
简介
MP4-AT 文件格式
MP4-AT 文件格式包含主轨道和辅助轨道,以支持各种编辑操作。主轨道(例如已应用散景效果的视频轨道)照常写入 MP4 文件,而辅助轨道则写入辅助轨道 MP4。辅助轨道 MP4 是另一个符合 MP4 规范的容器,它放置在 axte
(辅助轨道扩展) box 内。axte
box 建议作为文件中的最后一个 box,这使得通过截断文件来移除辅助数据变得方便。
此格式向后兼容:不支持本格式其余部分的播放器在加载文件时将读取并播放主视频轨道。
该文件包含一个带有 mdta
处理程序的 moov.meta
box,其中包含以下元数据。元数据可以按任何顺序出现。
元数据键
类型指示器 |
值 |
auxiliary.tracks.offset |
|
|
auxiliary.tracks.length |
|
|
注意: 由于元数据会被大多数良好行为的编辑器保留,即使 |
语法
axte
box 的描述采用 ISO/IEC 14496-12:2022: 4.2 中定义的 box 语义
其中数据字段包含辅助轨道 MP4。
aligned(8) class AuxiliaryTracksExtensionBox extends Box('axte') {
bit(8) data[];
}
载荷
axte
box 的载荷是辅助轨道 MP4。辅助轨道 MP4 具有通常的 MP4 结构。
辅助轨道 MP4 包含所有辅助轨道的样本元数据。所有辅助轨道样本载荷必须存储在辅助轨道 MP4 的 mdat
box 中,或者存储在外部 MP4 的 mdat
box 中(但不能同时存储)。
在前一种情况下,auxiliary.tracks.interleaved
必须设置为 0(请参阅下面的“静态元数据”),并且 axte.moov
box 中的样本偏移量是相对于辅助轨道 MP4 的开头。这使得辅助轨道 MP4 独立自包含,这意味着辅助轨道 MP4 可以独立读取,而无需引用外部 MP4。
在后一种情况下,auxiliary.tracks.interleaved
必须设置为 1(请参阅下面的“静态元数据”),并且 axte.moov
box 中的样本偏移量是相对于文件开头的,主轨道和辅助轨道的样本载荷可以交错存储。在这种情况下,axte.mdat
box 可以不存在。
静态元数据
辅助轨道 MP4 包含一个带有 mdta
处理程序的 moov.meta
box,其中包含以下元数据。元数据可以按任何顺序出现。
(可选) auxiliary.tracks.interleaved
类型指示器 |
值 |
auxiliary.tracks.offset |
75 (8 位无符号整数) |
0:表示样本未交错,位于 |
1:表示样本在主视频轨道的 所有其他值均保留,不得使用。 此元数据不存在表示默认值 0。 auxiliary.tracks.map |
|
二进制格式 |
1 字节版本 = 1
|
辅助轨道类型
辅助轨道 MP4 可能包含以下对编辑有用的视频和元数据轨道。
注意: 所有定时轨道的访问单元时间戳应保持一致。客户端可能不支持插值,因此如果时间戳未对齐(例如,如果深度和清晰视频轨道的帧速率不同),它们可能会丢帧。
全分辨率视频,未应用可编辑效果。此视频轨道可以与主视频轨道存储为不同的分辨率。清晰视频轨道可以使用任何常见的视频编解码器,并且可以是标准或高动态范围。
深度视频轨道
深度视频轨道提供编码为标准灰度视频的深度信息。这是为了允许在没有特殊深度解码或编码支持的设备上解码和编码深度轨道。深度视频轨道可以使用 H.264/AVC、H.265/HEVC、VP9、AV1 或任何其他常见视频编解码器。深度视频轨道可以是 8 位或 10 位,并且采用线性或反向编码(请参阅动态深度 1.0 规范)。
定时深度元数据轨道
定时深度元数据轨道包含用于计算深度的归一化值,以及一个可用于计算散景效果模糊半径的焦距表。
样本 MIME 类型
application/x-depth-metadata |
|
二进制格式(所有整数均为小端) |
近距离(16 位浮点)
|
一个视频轨道,用于存储相应帧中每个像素的 Alpha 值(透明度)。最小值表示完全透明,而最大值表示完全不透明。中间值表示线性刻度上的不同半透明级别,合成使用具有非预乘颜色值的正常混合模式。与深度视频轨道类似,此轨道也应编码为标准灰度视频。
示例用例
将可播放的渲染散景视频存储在主轨道中,并提供辅助视频轨道用于存储原始(模糊前)清晰颜色数据和深度图,以及一个辅助定时元数据轨道,其中包含反映每一帧焦点的深度元数据。辅助轨道随后可在视频编辑器中用于修改焦点主体并重新渲染高质量的散景视频轨道。
存储预渲染的半透明“贴纸”视频(例如,主视频轨道中白色背景上的动态表情符号视频),并提供一个包含 Alpha 映射的辅助视频轨道。合成器随后可以使用辅助轨道中的半透明信息,将贴纸与背景融合。
本页面的内容和代码示例受 内容许可 中描述的许可条款约束。Java 和 OpenJDK 是 Oracle 和/或其附属公司的商标或注册商标。