通过收藏整理内容 根据您的偏好保存和分类内容。

此格式的目标是存储辅助轨道,使这些轨道对未实现此规范的客户端隐藏。这可以防止客户端将辅助轨道解释为可播放数据。

依赖项

以下是本规范的规范性引用

RFC 中用于指示要求级别的关键词

简介

MP4-AT 文件格式

MP4-AT 文件格式包含主轨道和辅助轨道,以支持各种编辑操作。主轨道(例如已应用散景效果的视频轨道)照常写入 MP4 文件,而辅助轨道则写入辅助轨道 MP4辅助轨道 MP4 是另一个符合 MP4 规范的容器,它放置在 axte(辅助轨道扩展) box 内。axte box 建议作为文件中的最后一个 box,这使得通过截断文件来移除辅助数据变得方便。

此格式向后兼容:不支持本格式其余部分的播放器在加载文件时将读取并播放主视频轨道。

该文件包含一个带有 mdta 处理程序的 moov.meta box,其中包含以下元数据。元数据可以按任何顺序出现。

Line diagram demonstrating the arrangement of elements in an MP4-AT file

元数据键

类型指示器

auxiliary.tracks.offset

78 (大端 64 位无符号整数)

axte box 的文件偏移量(以字节为单位)

auxiliary.tracks.length

axte box 的长度(以字节为单位)

axte box 的文件偏移量(以字节为单位)

注意: 由于元数据会被大多数良好行为的编辑器保留,即使 axte box 已被移除,MP4 文件仍可能包含这些残余元数据。因此,这些元数据并非最终数据,读取器必须始终确认 axte box 是否存在。

语法

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 包含所有辅助轨道的样本元数据。所有辅助轨道样本载荷必须存储在辅助轨道 MP4mdat box 中,或者存储在外部 MP4 的 mdat box 中(但不能同时存储)。

Line diagram demonstrating the arrangement of elements in the Auxiliary Tracks MP4

在前一种情况下,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:表示样本未交错,位于 axte.mdat box 中

1:表示样本在主视频轨道的 mdat box 中交错

所有其他值均保留,不得使用。

此元数据不存在表示默认值 0。

auxiliary.tracks.map

0 (保留)

二进制格式

1 字节版本 = 1

  • 1 字节轨道计数 = n
  • n 字节轨道类型,来自以下集合
  • 0 = 清晰视频
    • 1 = 深度视频(线性)
    • 2 = 深度视频(反向)
    • 3 = 定时深度元数据
    • 4 = 半透明视频
    • 5-127 = 保留供将来使用
    • 128-255 = 自定义轨道类型
    • auxiliary.tracks.map 中轨道类型的顺序表示它们在辅助轨道 MP4 载荷中的顺序。

辅助轨道类型

辅助轨道 MP4 可能包含以下对编辑有用的视频和元数据轨道。

注意: 所有定时轨道的访问单元时间戳应保持一致。客户端可能不支持插值,因此如果时间戳未对齐(例如,如果深度清晰视频轨道的帧速率不同),它们可能会丢帧。

全分辨率视频,未应用可编辑效果。此视频轨道可以与主视频轨道存储为不同的分辨率。清晰视频轨道可以使用任何常见的视频编解码器,并且可以是标准或高动态范围。

深度视频轨道

深度视频轨道提供编码为标准灰度视频的深度信息。这是为了允许在没有特殊深度解码或编码支持的设备上解码和编码深度轨道。深度视频轨道可以使用 H.264/AVCH.265/HEVCVP9AV1 或任何其他常见视频编解码器。深度视频轨道可以是 8 位或 10 位,并且采用线性或反向编码(请参阅动态深度 1.0 规范)。

定时深度元数据轨道

定时深度元数据轨道包含用于计算深度的归一化值,以及一个可用于计算散景效果模糊半径的焦距表。

样本 MIME 类型

application/x-depth-metadata

样本语法

二进制格式(所有整数均为小端)

近距离(16 位浮点)

  • 远距离(16 位浮点)
  • 焦距表条目计数(16 位整数)
  • 焦距表条目
  • 条目距离(16 位浮点)
    • 条目半径(16 位浮点)
    • 半透明视频轨道
一个视频轨道,用于存储相应帧中每个像素的 Alpha 值(透明度)。最小值表示完全透明,而最大值表示完全不透明。中间值表示线性刻度上的不同半透明级别,合成使用具有非预乘颜色值的正常混合模式。与深度视频轨道类似,此轨道也应编码为标准灰度视频。

示例用例

将可播放的渲染散景视频存储在主轨道中,并提供辅助视频轨道用于存储原始(模糊前)清晰颜色数据和深度图,以及一个辅助定时元数据轨道,其中包含反映每一帧焦点的深度元数据。辅助轨道随后可在视频编辑器中用于修改焦点主体并重新渲染高质量的散景视频轨道。

  • 存储预渲染的半透明“贴纸”视频(例如,主视频轨道中白色背景上的动态表情符号视频),并提供一个包含 Alpha 映射的辅助视频轨道。合成器随后可以使用辅助轨道中的半透明信息,将贴纸与背景融合。

  • 本页面的内容和代码示例受 内容许可 中描述的许可条款约束。Java 和 OpenJDK 是 Oracle 和/或其附属公司的商标或注册商标。