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

# 1. 概要

mkvinfo [选项] {源文件名}

# 2. 说明

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

Option | Description
--- | ---
-g, --gui | 启动 GUI。本选项仅当 mkvinfo 编译时附加 GUI 支持时可用。
-c, --checksums | 计算并显示各帧的 Adler32 校验码。仅当调试时有用处。
-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' 对应德文翻译）。使用 LANG、LC_MESSAGES 及 LC_ALL 这些环境变量更好。如果在 code 处输入 'list'，mkvinfo(1) 将输出可用翻译的列表。
--debug topic | Turn on debugging for a specific feature. This option is only useful for developers.
--engage feature | Turn on experimental features. A list of available features can be requested with mkvinfo --engage list. These features are not meant to be used in normal situations.
-v, --verbose | 使输出更详尽。请参阅关于 “详细”程度 的段落获取在哪些层级将输出哪些信息的描述。
-h, --help | 显示用法信息并退出。
-V, --version | 显示版本信息并退出。
--check-for-updates | 联机下载 URL http://mkvtoolnix-releases.bunkus.org/latest-release.xml 检查新版本。将以 键=值 的样式输出四行: 检索信息的 URL（键 version_check_url），当前运行的版本（键 running_version），最新版本（键 available_version）及其下载 URL（键 download_url）。 若无更新版本可用，程序将以退出码 0 退出，若有更新版本可用，退出码为 1，若出现错误（如无法检索更新信息），退出码则为 2。

此选项仅当程序附带 libcurl 支持编译时可用。

@options-file | 从文件 选项文件 中读取额外的命令行参数。首个非空白字符为井号 ('#') 的行将被当作注释对待，在处理过程中将被忽略。各行开头与结尾的空白将被除去。各行必须恰好仅含一个选项。 有些字符可以转义，如当您需要使用 '#' 作为一个不是评论的行的开头。规则在关于转义文本的段落有描述。 命令行 'mkvinfo -v -v 输入.mkv --redirect-output 信息.txt' 可以转换为下面所示的选项文件:
    # Be more verbose
    -v
    -v
    # Parse input.mkv
    input.mkv
    # and write the output to info.txt
    --redirect-output
    info.txt

# 3. “详细”程度

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

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

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

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

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

# 4. 退出代码

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

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

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

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

# 5. 文本中特殊字符的转义

有时文本中的特殊字符必须或应该转义。转义规则很简单: 用反斜杠后接一字符替换需要转义的各字符。

The rules are: ' ' (a space) becomes '\s', '"' (double quotes) becomes '\2', ':' becomes '\c', '#' becomes '\h' and '\' (a single backslash) itself becomes '\\'.

# 6. Environment variables

mkvinfo(1) uses the default variables that determine the system's locale (e.g. LANG and the LC_* family). Additional variables:

Option | Description
--- | ---
MKVTOOLNIX_DEBUG and its short form MTX_DEBUG | The content is treated as if it had been passed via the --debug option.
MKVTOOLNIX_ENGAGE and its short form MTX_ENGAGE | The content is treated as if it had been passed via the --engage option.
MKVTOOLNIX_OPTIONS and its short form MTX_OPTIONS | The content is split on white space. The resulting partial strings are treated as if it had been passed as command line options. If you need to pass special characters (e.g. spaces) then you have to escape them (see the section about escaping special characters in text).

# 7. 参阅

mkvmerge(1), mkvextract(1), mkvpropedit(1), mmg(1)

# 8. 网络

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