Provided by: mkvtoolnix_5.1.0-1ubuntu1_amd64 bug

名称

       mkvextract - 将 Matroska(TM) 文件中的轨道提取为另外的文件

概要

       mkvextract {模式} {源文件名} [选项] [提取指令]

说明

       本程序可以将 Matroska(TM) 文件的指定部分提取为其他有用的格式。第一个参数,模式告诉
       mkvextract(1) 要提取什么。目前支持提取
       tracks(轨道)、tags(标签)、attachments(附件)、chapters(章节)、CUE sheets(CUE
       表单)以及timecodes(时间码)。第二个参数是源文件名。它必须是 Matroska(TM)
       文件。以下参数为选项及提取指令;两者均依所选模式而定。

   通用选项
       以下选项在所有模式下可用,本段落只讲一遍,不赘述。

       -f, --parse-fully
           设置解析模式为
           'full(完整)'。默认的解析模式不解析整个文件,而是使用元定位元素确定源文件中所需元素的位置。99%
           的情况下这已经足够。但如果碰到不含元定位元素或者元定位元素损坏的文件,用户可能得考虑使用此模式。完整扫描文件可能要花费几分钟,而快速扫描只需要几秒钟。

       --command-line-charset 字符集
           设定在命令行给出的字符串的字符集,用于转为其他字符集。默认为系统当前区域设置中所给定的字符集。

       --output-charset 字符集
           设置输出的字符串应被转换到何种字符集。默认为系统当前区域设置中所给定的字符集。

       -r, --redirect-output 文件名
           将所有信息输出至文件 文件名
           而不是在命令行显示。尽管该操作可以用输出重定向轻松实现,但在某些情况下还需要靠它:如当终端在写入文件之前重新解释(覆盖输出)时。将优先使用通过
           --output-charset 设定的字符集。

       --ui-language 语言代码
           强制使用语言代码为 语言代码 的翻译(如 'de_DE' 对应德文翻译)。使用 LANG, LC_MESSAGESLC_ALL 这些环境变量更好。如果在 语言代码 处输入 'list',mkvextract(1)
           将输出可用翻译列表。

       -v, --verbose
           使输出信息更详尽,且每当读取到重要的 Matroska(TM) 元素时就将其显示。

       -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
           从文件 选项文件 中读取额外的命令行参数。首个非空白字符为井号 ('#')
           的行将被当作注释对待,在处理过程中将被忽略。各行开头与结尾的空白将被除去。各行必须恰好仅含一个选项。

           有些字符可以转义,如当您需要使用 '#'
           作为一个不是评论的行的开头。规则在关于转义文本的段落有描述。

           命令行 'mkvextract tracks 源.mkv --raw 1:目标.raw' 可以转换为下面所示选项文件:

               # Extract a track from source.mkv
               tracks
               source.mkv
               # Output the track as raw data.
               --raw
               1:destination.raw

   轨道提取模式
       语法: mkvextract tracks 源文件名 [选项] TID1:目标文件名1 [TID2:目标文件名2 ...]

       以下命令行在 'tracks'
       轨道提取模式下对各轨道可用。它们应当在所应用到的轨道指令(参阅下文)之前出现。

       -c 字符集
           设定下一个字幕轨应被转换为哪一字符集。仅当后面的轨道 ID 对应文本字幕轨时有效。默认为
           UTF-8。

       --blockadd 层级
           只保留低于或等于此层级的 BlockAdditions 附加块。默认保留所有层级。
           本选项仅影响特定类别的编解码器,如 WAVPACK4。

       --cuesheetmkvextract(1) 根据下一轨道的标签数据与章节信息提取出 CUE
           表单,输出文件名为轨道的输出名后接 '.cue' 扩展名。

       --raw
           将原始数据提取为文件,输出文件的周围没有任何容器数据。 与 --fullraw
           标记不同的是,此标记不会将 CodecPrivate 元素的内容写入输出文件。 此模式对所有 CodecIDs
           有效,即使是 mkvextract(1) 不支持处理的,然而生成的文件可能无法使用。

       --fullraw
           提取原始数据,输出文件的周围没有任何容器数据。 如果轨道包含 CodecPrivate
           编解码器私有元素,它的内容将先被写入文件。 此模式对所有 CodecIDs 有效,即使是
           mkvextract(1) 不支持的那些,但是生成的文件可能无法使用。

       TID:输出文件名
           如果源文件中存在 ID 为 TID 的轨道,则将其提取为文件 输出文件名。本选项可多次给出。轨道
           ID 与 mkvmerge(1) 的 --identify 选项所输出的相同。

           每个输出文件名只能用一次。但 RealAudio 与 RealVideo
           轨道例外。如果您为不同轨道使用了同样的输出文件名,这些轨道将被存入同一个文件中。示例:

               $ mkvextract tracks input.mkv 1:output-two-tracks.rm 2:output-two-tracks.rm

   标签提取模式
       语法: mkvextract tags 源文件名 [选项]

       提取出的标签将被输出到命令行,除非输出被重定向(详情参见关于 输出重定向 的章节)。

   附件提取模式
       语法: mkvextract attachments 源文件名 [选项] AID1:输出文件名1 [AID2:输出文件名2 ...]

       AID:outname
           如果源文件中存在 ID 为 AID 的附件,则将其提取为文件 输出文件名。如果 输出文件名
           处留空,将使用所用 Matroska(TM) 文件中的附件名称。本选项可多次给出。附件 ID 与
           mkvmerge(1) 的 --identify 选项所输出的相同。

   章节提取模式
       语法: mkvextract chapters 源文件名 [选项]

       -s, --simple
           将章节信息以 OGM tools 所用的简单格式 (CHAPTER01=..., CHAPTER01NAME=...)
           导出。此模式下部分信息将被废弃。默认以 XML 格式输出章节。

       提取出的章节将被输出到命令行,除非输出被重定向(详情参见关于 输出重定向 的章节)。

   Cue 表单提取模式
       语法: mkvextract cuesheet 源文件名 [选项]

       提取出的 cue 表单将被输出到命令行,除非输出被重定向(详情参见关于 输出重定向 的章节)。

   时间码提取模式
       语法: mkvextract timecodes_v2 源文件名 [选项] TID1:目标文件名1 [TID2:目标文件名2 ...]

       提取出的时间码将被输出到命令行,除非输出被重定向(详情参见关于 输出重定向 的章节)。

       TID:输出文件名
           如果源文件中存在 ID 为 TID 的轨道,则将其时间码提取为文件
           输出文件名。本选项可多次给出。轨道 ID 与 mkvmerge(1) 的 --identify 选项所输出的相同。

           示例:

               $ mkvextract timecodes_v2 input.mkv 1:tc-track1.txt 2:tc-track2.txt

输出重定向

       有些提取模式会使 mkvextract(1)
       将提取出的数据输出到命令行。通常有两种方法将数据写入文件:一种由 shell 提供,另一种由
       mkvextract(1) 自身提供。

       shell 的报告重定向功能可以通过在命令行后追加 '> 输出文件名.扩展名' 命令实现。示例:

           $ mkvextract tags source.mkv > tags.xml

       mkvextract(1) 自身的重定向功能可通过 --redirect-output 选项唤出。示例:

           $ mkvextract tags source.mkv --redirect-output tags.xml

           注意
           在 Windows 平台上您应当使用 --redirect-output 选项,因为 cmd.exe
           有时会在写入文件之前对特殊字符进行转义,导致输出文件损坏。

输出文件格式

       输出文件的格式取决于轨道的类型,而不是输出文件名的扩展名。目前支持以下轨道类型:

       V_MPEG4/ISO/AVC

           H.264 / AVC 视频轨将被输出为 H.264 基本流,可以使用如 GPAC(TM) 工具包中的 MP4Box(TM)
           作进一步处理。

       V_MS/VFW/FOURCC
           使用此 CodecID 且 FPS 恒定的视频轨将被输出为 AVI 文件。

       V_REAL/*

           RealVideo(TM) 轨道将被输出为 RealMedia(TM) 文件。

       A_MPEG/L3, A_AC3
           这些将被输出为原始的 MP3 与 AC3 文件。

       A_PCM/INT/LIT
           原始 PCM 数据将被输出为 WAV 文件。

       A_AAC/MPEG2/*, A_AAC/MPEG4/*, A_AAC
           所有 AAC 文件将被输出为 AAC 文件,其中数据包前有 ADTS 头。ADTS
           头将不含反增强字段(deprecated emphasis field)。

       A_VORBIS
           Vorbis 音频将被输出为 OggVorbis(TM) 文件。

       A_REAL/*

           RealAudio(TM) 轨道将被输出为 RealMedia(TM) 文件。

       A_TTA1

           TrueAudio(TM) 轨道将被输出为 TTA 文件。请注意,由于 Matroska(TM)
           时间码的精度限制,解开来的文件的头部有两个字段不同:data_length (文件的总采样数) 与
           CRC。

       S_TEXT/UTF8
           简单的文本字幕将被输出为 SRT 文件。

       S_TEXT/SSA, S_TEXT/ASS

           SSA 与 ASS 文本字幕将分别被输出为 SSA/ASS 文件。

       S_KATE

           Kate(TM) 流将以 Ogg(TM) 为容器输出。

       标签
           标签将被转换为 XML 格式。此格式与 mkvmerge(1) 所支持读取的标签格式相同。

       附件
           附件将被以原样输出。不会进行任何转换。

       章节
           章节将被转换为 XML 格式。此格式与 mkvmerge(1)
           所支持读取的章节格式相同。您也可以选择输出精简的简单 OGM 格式。

       时间码
           时间码会先被排序,然后以 timecode v2 格式文件输出,该文件适用于
           mkvmerge(1)。不支持提取为其他格式 (v1, v3 或 v4)。

退出代码

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

       ·    0 -- 此退出代码说明已成功完成提取。

       ·    1 -- 这种情况下 mkvextract(1) 至少输出了一条警告信息,但提取并未因之中止。
           警告信息以文字 '警告:' 为前缀。根据问题的不同,生成的文件可能是好的,也可能不是。
           强烈建议用户检查警告信息以及生成的文件。

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

文本中特殊字符的转义

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

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

参阅

       mkvmerge(1), mkvinfo(1), mkvpropedit(1), mmg(1)

网络

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

作者

       Moritz Bunkus <moritz@bunkus.org>
           开发者

备注

        1. MKVToolNix 主页
           http://www.bunkus.org/videotools/mkvtoolnix/