1

如果 WebMDocTypeVersion是 4,那么这意味着什么并与之相关?那是Matroska 规范草案的第 4 版吗?还是 WebM 有自己独立于 Matroska 的版本控制?我在webmproject.org上找不到任何信息

分析创建的 WebM 文件后ffmpeg,我看到“文档类型版本”为 4:

$ ffmpeg -i audio.opus -a:c copy audio.webm
$ mkvinfo audio.webm

+ EBML head
|+ EBML version: 1
|+ EBML read version: 1
|+ Maximum EBML ID length: 4
|+ Maximum EBML size length: 8
|+ Document type: webm
|+ Document type version: 4             <=  This is what I'm referencing
|+ Document type read version: 2
4

2 回答 2

1

WebMs 是一种 EBML 文档。

来自https://github.com/cellar-wg/ebml-specification/blob/master/specification.markdown

EBML 正文的版本可在 EBMLDocTypeVersion 中找到。如果特定 DocType 格式的解析器可以读取该格式的 EBMLDocTypeVersion 版本或等于或高于在 EBMLDocTypeReadVersion 中找到的版本,则它可以读取 EBML 文档。

如果存在带有编解码器 Opus 的音频流,或者视频流具有存储在附加块中的 alpha 通道或者是立体声视频,则 FFmpeg 将 WebM 的版本设置为 4。

于 2020-01-01T12:31:59.443 回答
1

WebM Container Guidelines强烈暗示这些版本与 Matroska 版本号在他们的注释中相同DocReadTypeVersion

  • DocReadTypeVersion应遵循 Matroska 规范。
    • 示例:具有 v2 元素的文件的 a 应DocReadTypeVersion为 2。

就其含义、区别DocTypeVersion和相关性而言DocTypeReadVersionMatroska Specifications 草案第 4 版的第 21 节有一个很好的解释。

DocTypeVersion必须等于或大于ElementMatroska 文件中任何存在的最高 Matroska 版本号。例如,使用s 的文件的SimpleBlock Elementa 必须DocTypeVersion等于或大于 2。包含CueRelativePosition Elements 的文件的 a 必须DocTypeVersion等于或大于 4。

DocTypeReadVersion必须包含阅读应用程序可以最低限度地支持以播放文件的最低版本号 - 可选地具有减少的功能集。例如,如果一个文件只包含Element版本 2 或更低版本的 s CueRelativePosition(这是一个版本 4 Matroska Element),那么DocTypeReadVersion仍然应该设置为 2 而不是 4,因为评估CueRelativePosition对于标准播放不是必需的——它使搜索更精确如果使用。

除此之外,SimpleBlock Elements 是Elements包含实际视频或音频数据的版本 2,这就是为什么DocTypeReadVersion如果使用它们应该是 2 - 它们具有实际的文件内容!因此,不支持版本 2 的播放器将无法播放那些Elements.

于 2021-10-28T23:16:28.840 回答