mkvextract — 将 Matroska™ 文件中的轨道提取为另外的文件
本程序可以将 Matroska™ 文件的指定部分提取为其他有用的格式。第一个参数,模式
告诉 mkvextract(1)
要提取什么。目前支持提取 tracks(轨道)、tags(标签)、attachments(附件)、chapters(章节)、CUE sheets(CUE 表单)以及timecodes(时间码)。第二个参数是源文件名。它必须是
Matroska™ 文件。以下参数为选项及提取指令;两者均依所选模式而定。
以下选项在所有模式下可用,本段落只讲一遍,不赘述。
--command-line-charset
字符集
设定在命令行给出的字符串的字符集,用于转为其他字符集。默认为系统当前区域设置中所给定的字符集。
--output-charset
字符集
设置输出的字符串应被转换到何种字符集。默认为系统当前区域设置中所给定的字符集。
-r
, --redirect-output
文件名
将所有信息输出至文件 文件名
而不是在命令行显示。尽管该操作可以用输出重定向轻松实现,但在某些情况下还需要靠它:如当终端在写入文件之前重新解释(覆盖输出)时。将优先使用通过
--output-charset
设定的字符集。
--ui-language
语言代码
强制使用语言代码为 语言代码
的翻译(如 'de_DE
'
对应德文翻译)。使用 LANG
, LC_MESSAGES
及
LC_ALL
这些环境变量更好。如果在 语言代码
处输入
'list
',mkvextract(1) 将输出可用翻译列表。
-v
, --verbose
使输出信息更详尽,且每当读取到重要的 Matroska™ 元素时就将其显示。
-h
, --help
显示用法信息并退出。
-V
, --version
显示版本信息并退出。
@
选项文件
从文件 选项文件
中读取额外的命令行参数。首个非空白字符为井号
('#
')
的行将被当作注释对待,在处理过程中将被忽略。各行开头与结尾的空白将被除去。各行必须恰好含有一个选项。没有元字符转义。
命令行 'mkvextract tracks 源.mkv --raw 1:目标.raw' 可以转换为下面所示选项文件:
# 从 源.mkv 提取轨道 tracks 源.mkv # 将轨道以原始数据形式输出。 --raw 1:目标.raw
语法: mkvextract tracks
源文件名
[选项
]
TID1:目标文件名1
[TID2:目标文件名2
...]
以下命令行在 'tracks
' 轨道提取模式下对各轨道可用。它们应当在所应用到的轨道指令(参阅下文)之前出现。
-c
字符集
设定下一个字幕轨应被转换为哪一字符集。仅当后面的轨道 ID 对应文本字幕轨时有效。默认为 UTF-8。
--blockadd
层级
只保留低于或等于此层级的 BlockAdditions 附加块。默认保留所有层级。 本选项仅影响特定类别的编解码器,如 WAVPACK4。
--cuesheet
让 mkvextract(1) 根据下一轨道的标签数据与章节信息提取出 CUE 表单,输出文件名为轨道的输出名后接
'.cue
' 扩展名。
--raw
将原始数据提取为文件,输出文件的周围没有任何容器数据。 与 --fullraw
标记不同的是,此标记不会将 CodecPrivate
元素的内容写入输出文件。 此模式对所有
CodecIDs
有效,即使是 mkvextract(1) 不支持处理的,然而生成的文件可能无法使用。
--fullraw
提取原始数据,输出文件的周围没有任何容器数据。 如果轨道包含 CodecPrivate
编解码器私有元素,它的内容将先被写入文件。 此模式对所有 CodecIDs
有效,即使是
mkvextract(1) 不支持的那些,但是生成的文件可能无法使用。
--no-ogg
仅对 FLAC 轨道有效。通常 FLAC 轨道是嵌套在 Ogg 传输流(TS)中的。通过本开关,它们可以被提取为原始 FLAC 文件。
TID:输出文件名
如果源文件中存在 ID 为 TID
的轨道,则将其提取为文件
输出文件名
。本选项可多次给出。轨道 ID 与 mkvmerge(1) 的
--identify
选项所输出的相同。
每个输出文件名只能用一次。但 RealAudio 与 RealVideo 轨道例外。如果您为不同轨道使用了同样的输出文件名,这些轨道将被存入同一个文件中。示例:
$ mkvextract tracks input.mkv 1:output-two-tracks.rm 2:output-two-tracks.rm
语法: mkvextract attachments
源文件名
[选项
]
AID1:输出文件名1
[AID2:输出文件名2
...]
如果源文件中存在 ID 为 AID
的附件,则将其提取为文件
输出文件名
。如果 输出文件名
处留空,将使用所用
Matroska™ 文件中的附件名称。本选项可多次给出。附件 ID 与 mkvmerge(1) 的
--identify
选项所输出的相同。
语法: mkvextract chapters
源文件名
[选项
]
-s
, --simple
将章节信息以 OGM tools 所用的简单格式 (CHAPTER01=..., CHAPTER01NAME=...) 导出。此模式下部分信息将被废弃。默认以 XML 格式输出章节。
提取出的章节将被输出到命令行,除非输出被重定向(详情参见关于 输出重定向 的章节)。
有些提取模式会使 mkvextract(1) 将提取出的数据输出到命令行。通常有两种方法将数据写入文件:一种由 shell 提供,另一种由 mkvextract(1) 自身提供。
shell 的报告重定向功能可以通过在命令行后追加 '> 输出文件名.扩展名
' 命令实现。示例:
$ mkvextract tags 源.mkv > 标签.xml
mkvextract(1) 自身的重定向功能可通过 --redirect-output
选项唤出。示例:
$ mkvextract tags 源.mkv --redirect-output 标签.xml
在 Windows 平台上您应当使用 --redirect-output
选项,因为 cmd.exe 有时会在写入文件之前对特殊字符进行转义,导致输出文件损坏。
输出文件的格式取决于轨道的类型,而不是输出文件名的扩展名。目前支持以下轨道类型:
H.264 / AVC 视频轨将被输出为 H.264 基本流,可以使用如 GPAC™ 工具包中的 MP4Box™ 作进一步处理。
使用此 CodecID
且 FPS 恒定的视频轨将被输出为
AVI 文件。
RealVideo™ 轨道将被输出为 RealMedia™ 文件。
这些将被输出为原始的 MP3 与 AC3 文件。
原始 PCM 数据将被输出为 WAV 文件。
所有 AAC 文件将被输出为 AAC 文件,其中数据包前有 ADTS 头。ADTS 头将不含反增强字段(deprecated emphasis field)。
Vorbis 音频将被输出为 OggVorbis™ 文件。
RealAudio™ 轨道将被输出为 RealMedia™ 文件。
TrueAudio™ 轨道将被输出为 TTA 文件。请注意,由于
Matroska™ 时间码的精度限制,解开来的文件的头部有两个字段不同:data_length
(文件的总采样数) 与 CRC。
简单的文本字幕将被输出为 SRT 文件。
SSA 与 ASS 文本字幕将分别被输出为 SSA/ASS 文件。
Kate™ 流将以 Ogg™ 为容器输出。
标签将被转换为 XML 格式。此格式与 mkvmerge(1) 所支持读取的标签格式相同。
附件将被以原样输出。不会进行任何转换。
章节将被转换为 XML 格式。此格式与 mkvmerge(1) 所支持读取的章节格式相同。您也可以选择输出精简的简单 OGM 格式。
时间码会先被排序,然后以 timecode v2 格式文件输出,该文件适用于 mkvmerge(1)。不支持提取为其他格式 (v1, v3 或 v4)。