Manpages

名 称

mkvextract - 将 Matroska 文 件 中 的 轨 道 提 取 为 单 独 的 文 件

概 要

mkvextract {输 入 文 件 名 } {模 式 1} [选 项 ] [提 取 规 格 1] [模 式 2] [选 项 ] [提 取 规 格 2] [...]

说 明

该 程 序 可 将 Matroska 文 件 的 指 定 部 分 提 取 为 其 他 有 用 的 格 式 。 第 一 个 参 数 是 输 入 文 件 名 , 该 文 件 必 须 为 Matroska 文 件 。 其 余 参 数 可 切 换 到 特 定 提 取 模 式 、 更 改 当 前 活 动 模 式 的 选 项 、 指 定 要 将 什 么 内 容 提 取 到 哪 些 文 件 。 单 次 调 用 mkvextract 可 同 时 使 用 多 种 模 式 , 以 便 只 读 取 一 遍 就 提 取 多 项 内 容 。 大 多 数 选 项 只 能 在 特 定 模 式 下 使 用 , 少 数 选 项 可 用 于 所 有 模 式 。 目 前 支 持 提 取 tracks 轨 道 、 tags 标 签 、 attachments 附 件 、 chapters 章 节 、 cue 表 单 、 timestamps 时 间 戳 以 及 cues。 通 用 选 项 以 下 选 项 在 所 有 模 式 下 可 用 , 只 在 本 段 落 讲 一 遍 , 不 赘 述 。

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

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

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

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

--flush-on-close 让 程 序 在 关 闭 以 写 入 模 式 打 开 的 文 件 时 , 强 制 将 内 存 中 已 缓 存 的 所 有 数 据 写 入 到 存 储 设 备 。 可 用 于 在 电 源 中 断 时 避 免 数 据 损 失 , 或 规 避 操 作 系 统 或 驱 动 程 序 的 特 定 问 题 。 缺 点 是 混 流 耗 时 更 长 , 因 为 mkvmerge 在 退 出 前 需 要 等 待 所 有 数 据 写 入 存 储 设 备 。 关 于 优 劣 的 深 入 讨 论 , 请 参 见 MKVToolNix bug 跟 踪 平 台 中 的 问 题 #2469 与 问 题 #2480。

--ui-language 语 言 代 码 强 制 使 用 语 言 代 码 所 对 应 的 翻 译 (例 如 'de_DE' 表 示 德 文 翻 译 )。 在 语 言 代 码 处 输 入 'list' 可 让 程 序 输 出 可 用 翻 译 的 列 表 。

--abort-on-warnings 让 程 序 在 出 现 警 告 时 即 中 止 。 程 序 的 退 出 代 码 将 返 回 1。

--debug 主 题 为 特 定 功 能 开 启 调 试 。 该 选 项 仅 对 开 发 者 有 用 。

--engage 功 能 开 启 实 验 性 功 能 。 可 用 功 能 列 表 可 通 过 mkvextract --engage list 得 到 。 这 些 功 能 在 正 常 情 况 下 不 应 该 使 用 。

--gui-mode 打 开 GUI 模 式 。 该 模 式 下 , 将 输 出 特 殊 格 式 的 行 , 告 知 目 前 受 控 的 GUI 的 行 为 。 这 些 消 息 遵 从 格 式 「 #GUI#消 息 」 。 消 息 可 能 包 括 键 值 对 , 如 「 #GUI#消 息 #键 1=值 1#键 2=值 2...」 。 消 息 内 容 及 键 的 内 容 不 作 翻 译 , 总 是 以 英 语 输 出 。

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

-h, --help 显 示 用 法 信 息 并 退 出 。

-V, --version 显 示 版 本 信 息 并 退 出 。

@选 项 文 件 .json 从 文 件 选 项 文 件 读 取 其 他 命 令 行 参 数 。 关 于 支 持 的 选 项 文 件 格 式 的 详 细 说 明 , 请 参 见 mkvmerge(1) 手 册 的 “选 项 文 件 ”段 落 。 轨 道 提 取 模 式 语 法 : 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 输 入 .mkv tracks 0:视 频 .h264 2:输 出 两 个 vobsub轨 道 .idx 3:输 出 两 个 vobsub轨 道 .idx 附 件 提 取 模 式 语 法 :mkvextract 输 入 文 件 名 attachments [选 项 ] AID1:输 出 文 件 名 1 [AID2:输 出 文 件 名 2 ...]

AID:输 出 文 件 名 如 果 输 入 文 件 中 存 在 ID 为 AID 的 附 件 , 则 将 其 提 取 为 文 件 输 出 文 件 名 。 如 果 输 出 文 件 名 处 留 空 , 将 使 用 所 用 Matroska 文 件 中 的 附 件 名 称 。 本 选 项 可 多 次 给 出 。 附 件 ID 与 mkvmerge(1)--identify 选 项 所 输 出 的 相 同 。 章 节 提 取 模 式 语 法 : mkvextract 输 入 文 件 名 chapters[选 项 ] 输 出 文 件 名 .xml

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

--simple-language 语 言 若 启 用 简 化 格 式 , mkvextract(1) 对 于 发 现 的 每 个 章 节 单 位 , 均 只 输 出 单 个 条 目 , 即 使 该 章 节 单 位 包 含 多 个 章 节 名 称 。 mkvextract(1) 默 认 对 每 个 章 节 单 位 使 用 发 现 的 第 一 个 章 节 名 称 , 而 不 考 察 其 语 言 。 本 选 项 允 许 用 户 决 定 , 在 章 节 单 位 包 含 多 个 章 节 名 称 时 , 应 该 输 出 哪 些 章 节 名 称 。 语 言 参 数 必 须 为 ISO 639-1 或 ISO 639-2 代 码 。 章 节 将 写 入 指 定 的 输 出 文 件 。 默 认 使 用 mkvmerge(1) 能 理 解 的 XML 格 式 。 如 果 文 件 中 没 有 发 现 章 节 条 目 , 则 不 会 创 建 输 出 文 件 。 标 签 提 取 模 式 语 法 : mkvextract 输 入 文 件 名 tags [选 项 ] 输 出 文 件 名 .xml 标 签 将 写 入 指 定 的 输 出 文 件 , 使 用 mkvmerge(1) 能 理 解 的 XML 格 式 。 如 果 文 件 中 没 有 发 现 标 签 条 目 , 则 不 会 创 建 输 出 文 件 。

Cue 表 单 提 取 模 式 语 法 : mkvextract 输 入 文 件 名 cuesheet [选 项 ] 输 出 文 件 名 .cue

cue 表 单 将 写 入 指 定 的 输 出 文 件 。 如 果 文 件 中 没 有 发 现 章 节 或 标 签 条 目 , 则 不 会 创 建 输 出 文 件 。 时 间 戳 提 取 模 式 语 法 : mkvextract 输 入 文 件 名 timestamps_v2 [选 项 ] TID1:目 标 文 件 名 1 [TID2:目 标 文 件 名 2 ...]

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

$ mkvextract 输 入 .mkv timestamps_v2 1:时 间 戳 -轨 1.txt 2:时 间 戳 -轨 2.txt

cue 提 取 模 式 语 法 : mkvextract 输 入 文 件 名 cues [选 项 ] TID1:目 标 文 件 名 1 [TID2:目 标 文 件 名 2 ...]

TID:目 标 文 件 名 若 输 入 文 件 中 存 在 , 则 提 取 ID 为 TID 的 轨 道 的 cue 并 保 存 到 输 出 文 件 名 中 。 本 选 项 可 多 次 给 出 。 轨 道 ID 与 mkvmerge(1)--identify 选 项 所 输 出 的 一 致 , 而 非 CueTrack 元 素 中 所 包 含 的 数 字 。 输 出 的 格 式 为 简 单 文 本 格 式 : 每 个 CuePoint 及 键 =值 对 占 一 行 。 如 果 CuePoint 中 未 出 现 某 个 可 选 元 素 (如 CueDuration) 则 将 输 出 短 横 作 为 其 数 值 。 示 例 :

timestamp=00:00:13.305000000 duration=- cluster_position=757741 relative_position=11 可 用 的 关 键 词 包 括 :

timestamp (时 间 戳 )

cue point 的 时 间 戳 , 精 确 到 纳 秒 。 格 式 为 HH:MM:SS.nnnnnnnnn。 该 元 素 必 有 值 。

duration (时 长 )

cue point 的 时 长 , 精 确 到 纳 秒 。

cluster_position (簇 位 置 )

Matroska 文 件 中 指 向 相 关 元 素 的 簇 的 起 始 点 的 绝 对 位 置 , 单 位 为 字 节 。 注 意

Matroska 文 件 中 , CueClusterPosition 相 对 于 剪 辑 数 据 的 起 始 偏 移 。 而 mkvextract(1) 的 cue 提 取 模 式 所 输 出 的 值 , 已 经 计 入 该 偏 移 , 因 此 是 从 文 件 开 头 起 的 绝 对 偏 移 。

relative_position (相 对 位 置 )

cue point 所 指 向 的 BlockGroup 或 SimpleBlock 元 素 的 起 始 点 在 簇 内 的 绝 对 位 置 , 单 位 为 字 节 。 注 意

Matroska 文 件 中 , CueRelativePosition 相 对 于 簇 数 据 的 起 始 偏 移 。 而 mkvextract(1) 的 cue 提 取 模 式 所 输 出 的 值 , 相 对 于 簇 的 ID。 在 文 件 内 的 绝 对 位 置 可 以 通 过 将 cluster_position 与 relative_position 相 加 得 出 。 示 例 :

$ mkvextract 输 入 .mkv cues 1:cues-轨 1.txt 2:cues-轨 2.txt

示 例

同 时 提 取 章 节 与 标 签 , 并 按 其 相 应 的 XML 格 式 保 存 :

$ mkvextract 影 片 .mkv chapters 影 片 章 节 .xml tags 影 片 标 签 .xml 同 时 提 取 一 些 轨 道 及 其 对 应 的 时 间 戳 :

$ mkvextract "另 一 部 影 片 .mkv" tracks 0:video.h265 "1:主 音 轨 .aac" "2:导 演 评 论 .aac" timestamps_v2 "0:视 频 时 间 戳 .txt" "1:主 音 轨 时 间 戳 .txt" "2:导 演 评 论 音 轨 时 间 戳 .txt" 以Ogg/OGM 格 式 提 取 章 节 , 并 将 一 条 文 本 字 幕 轨 道 用 另 一 种 字 符 集 重 新 编 码 :

$ mkvextract "我 的 影 片 .mkv" chapters --simple "我 的 章 节 .txt" tracks -c MS-ANSI "2:我 的 字 幕 .srt"

文 本 文 件 与 字 符 集 转 换

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

输 出 文 件 格 式

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

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

A_AC3, A_EAC3 这 些 会 提 取 为 原 始 AC-3 文 件 。

A_ALAC

ALAC 轨 道 将 输 出 为 CAF 文 件 。

A_DTS 这 些 会 提 取 为 原 始 DTS 文 件 。

A_FLAC

FLAC 轨 道 将 输 出 为 原 始 的 FLAC 文 件 。

A_MPEG/L2

MPEG-1 Audio Layer II 流 将 提 取 为 原 始 的 MP2 文 件 。

A_MPEG/L3 这 些 会 提 取 为 原 始 MP3 文 件 。

A_OPUS

Opus 轨 道 将 输 出 为 OggOpus 文 件 。

A_PCM/INT/LIT, A_PCM/INT/BIG 原 始 PCM 数 据 将 写 入 WAV 文 件 。 大 端 序 整 数 数 据 在 此 期 间 将 被 转 为 小 端 序 数 据 。

A_REAL/*

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

A_TRUEHD, A_MLP 这 些 会 提 取 为 原 始 TrueHD/MLP 文 件 。

A_TTA1

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

A_VORBIS

Vorbis 音 频 将 被 输 出 为 OggVorbis 文 件 。

A_WAVPACK4

WavPack 轨 道 将 输 出 为 WV 文 件 。

S_HDMV/PGS

PGS 字 幕 将 输 出 为 SUP 文 件 。

S_HDMV/TEXTST

TextST 字 幕 将 以 转 为 mkvmerge(1)mkvextract(1) 发 明 的 特 殊 格 式 写 入 。

S_KATE

Kate 流 将 以 Ogg 为 容 器 输 出 。

S_TEXT/SSA, S_TEXT/ASS, S_SSA, S_ASS

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

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

S_VOBSUB

VobSub 字 幕 将 输 出 为 SUB 文 件 及 相 应 的 索 引 文 件 ( 后 缀 为 IDX) 。

S_TEXT/USF

USF 文 本 字 幕 将 输 出 为 USF 文 件 。

S_TEXT/WEBVTT

WebVTT 字 幕 文 件 将 写 入 WebVTT 文 件 。

V_MPEG1, V_MPEG2

MPEG-1 与 MPEG-2 视 频 轨 道 将 输 出 为 MPEG 基 本 流 ( ES) 。

V_MPEG4/ISO/AVC

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

V_MPEG4/ISO/HEVC

H.265 / HEVC 视 频 轨 道 将 输 出 为 H.265 基 本 流 ( ES) , 该 格 式 可 使 用 GPAC 软 件 包 中 的 MP4Box 作 进 一 步 处 理 。

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

V_REAL/*

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

V_THEORA

Theora 流 将 以 Ogg 为 容 器 输 出

V_VP8, V_VP9

VP8 / VP9 轨 道 将 输 出 为 IVF 文 件 。 标 签 标 签 将 被 转 换 为 XML 格 式 。 此 格 式 与 mkvmerge(1) 所 支 持 读 取 的 标 签 格 式 相 同 。 附 件 附 件 将 被 以 原 样 输 出 。 不 会 进 行 任 何 转 换 。 章 节 章 节 将 被 转 换 为 XML 格 式 。 此 格 式 与 mkvmerge(1) 所 支 持 读 取 的 章 节 格 式 相 同 。 您 也 可 以 选 择 输 出 精 简 的 简 单 OGM 格 式 。 时 间 戳 时 间 戳 会 先 被 排 序 , 然 后 以 timestamp v2 格 式 文 件 输 出 , 该 文 件 适 用 于 mkvmerge(1)。 不 支 持 提 取 为 其 他 格 式 (v1, v3 或 v4)。

退 出 代 码

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

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

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

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

环 境 变 量

mkvextract(1) 使 用 决 定 系 统 区 域 设 置 的 默 认 变 量 (如 LANGLC_* 族 )。 其 他 变 量 包 括 :

MKVEXTRACT_DEBUG, MKVTOOLNIX_DEBUG 及 其 缩 略 形 式 MTX_DEBUG 内 容 将 被 当 作 通 过 --debug 选 项 传 递 的 参 数 对 待 。

MKVEXTRACT_ENGAGE, MKVTOOLNIX_ENGAGE 及 其 缩 略 形 式 MTX_ENGAGE 内 容 将 被 当 作 通 过 --engage 选 项 传 递 的 参 数 对 待 。

参 阅

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

网 络

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

作 者

Moritz Bunkus <moritz [AT] bunkus.org> 开 发 人 员

备 注

1.

MKVToolNix 主 页

https://mkvtoolnix.download/