mkvinfo -- 输出关于 Matroska 文件中各轨的信息

mkvinfo -- 输出关于 Matroska(tm) 文件中各轨的信息

# 1. 概要

mkvinfo 选项 {输入文件名}

# 2. 说明

本程序可列出 Matroska(tm)文件中包含的所有轨道，输出信息可以限定为文件的轨道列表以及所用编解码器的信息。

Option | Description
--- | ---
-a, --all | By default mkvinfo(1) stops when it encounters the first cluster. Additionally it doesn't show certain often occurring elements. With this option mkvinfo(1) will continue processing regardless of the verbosity level and show all elements.
-c, --checksums | 计算并显示各帧的 Adler-32 校验码。仅当调试时有用处。
-o, --continue | By default mkvinfo(1) stops when it encounters the first cluster. With this option mkvinfo(1) will continue processing regardless of the verbosity level.
-p, --hex-positions | Show the positions of all elements in hexadecimal regardless of the verbosity level.
-P, --positions | Show the positions of all elements in decimal regardless of the verbosity level.
-s, --summary | 仅显示 mkvinfo(1) 所获取信息的简要概述，而非各元素。
-t, --track-info | 在“详细”模式下为各轨道显示统计信息。如果“详细”程度为 0 级，则将同时将级别设为 1。
-x, --hexdump | 以十六进制转储形式显示各帧的前 16 字节。
-X, --full-hexdump | 以十六进制转储形式显示各帧的所有字节。
-z, --size | 显示各元素的尺寸，含头部所占用的尺寸。
--command-line-charset 字符集 | 设定在命令行给出的字符串的字符集，用于转为其他字符集。默认为系统当前区域设置中所给定的字符集。
--output-charset 字符集 | 设置输出的字符串应被转换到何种字符集。默认为系统当前区域设置中所给定的字符集。
-r, --redirect-output 文件名 | 将所有信息输出至文件 文件名，而不是在命令行显示。尽管该操作可以用输出重定向轻松实现，但在特定情况下还是缺不得它：当终端写入文件之前重新解释（覆盖输出）时。 --output-charset 中所选定的字符集将被优先选用。
--ui-language 语言代码 | 强制使用 语言代码 所对应的翻译 (例如 'de_DE' 表示德文翻译)。在 语言代码 处输入 'list' 可让程序输出可用翻译的列表。
--abort-on-warnings | 让程序在出现警告时即中止。程序的退出代码将返回 1。
--debug 主题 | 为特定功能开启调试。该选项仅对开发者有用。
--engage 功能 | 开启实验性功能。可用功能列表可通过 mkvinfo --engage list 获取。通常情况下不应该使用这些功能。
--gui-mode | 打开 GUI 模式。该模式下，将输出特殊格式的行，告知目前受控的 GUI 的行为。这些消息遵从格式「#GUI#消息」。消息可能包括键值对，如「#GUI#消息#键1=值1#键2=值2…」。消息内容及键的内容不作翻译，总是以英语输出。
-v, --verbose | 使输出更详尽。请参阅关于 “详细”程度 的段落获取在哪些层级将输出哪些信息的描述。
-h, --help | 显示用法信息并退出。
-V, --version | 显示版本信息并退出。
@选项文件.json | 从文件 选项文件 读取其他命令行参数。关于支持的选项文件格式的详细说明，请参见 mkvmerge(1) 手册的“选项文件”段落。

# 3. “详细”程度

-v 选项可以使 mkvinfo(1) 增强其“详细”程度并输出关于当前文件的更多信息。

在 level 0 mkvinfo(1) 仅输出它发现的轨道头及其类型。头部解析完毕后（更专业地：遇到首个簇时），mkvinfo(1) 将退出执行。在此层级，定位头项与 cue 索引不会显示出来——即使它们位于轨道信息之前。

在 level 1 mkvinfo(1) 同样将输出在整个文件中遇到的所有 Matroska(tm) 元素，此外还将输出定位头项与 cue 索引项。如果启用了简要模式，mkvinfo(1) 还将输出各帧位置。

The same effect can be achieved with the option --continue.

在 level 2 mkvinfo(1) 同样将输出定位头项与 cue 索引项，以及文件中各 Matroska(tm) 元素被发现的位置。

The same effect can be achieved with the options --all --positions.

在 level 3 及更高层级 mkvinfo(1) 将输出一些与 Matroska(tm) 元素不直接相连的信息。对于其他元素，将只输出发现的基本信息。Level 3 增加了元信息以便调试（换句话说：它是为开发人员设计的）。Level 3 输出的所有行都以方括号嵌套以便过滤。

# 4. 文本文件与字符集转换

关于 MKVToolNix 套件中所有工具如何处理字符集转换、输入/输出编码、命令行编码及控制台编码的深入讨论，请参见 mkvmerge(1) 手册中相对应名称的段落。

# 5. 退出代码

mkvinfo(1) 退出时会返回以下三个退出代码中的一个：

- 0 -- 此退出代码说明已成功完成运行。

- 1 -- 这种情况下 mkvinfo(1) 至少输出了一条警告信息，但运行并未因之中止。 警告信息以文字 '警告:' 为前缀。

- 2 -- 此退出代码用于错误发生之后。 mkvinfo(1) 在输出错误信息后即中断运行。错误信息可能是错误的命令行参数，也可能是损坏文件的读取/写入错误。

# 6. 环境变量

mkvinfo(1) 会使用决定系统区域设置的默认变量 (如 LANG 与 LC_* 族)。其他变量包括:

Option | Description
--- | ---
MKVINFO_DEBUG, MKVTOOLNIX_DEBUG 及其缩略形式 MTX_DEBUG | 内容将被当作通过 --debug 选项传递的参数对待。
MKVINFO_ENGAGE, MKVTOOLNIX_ENGAGE 及其缩略形式 MTX_ENGAGE | 内容将被当作通过 --engage 选项传递的参数对待。

# 7. 参阅

mkvmerge(1), mkvextract(1), mkvpropedit(1), mkvtoolnix-gui(1)

# 8. 网络

最新版本总可以在 MKVToolNix 主页 找到。