Mkvextract
(作者:Moritz Bunkus;譯者:XsLiDian;複製自 mkvextract)
名稱
mkvextract — 將 Matroska™ 文件中的軌道提取為另外的文件
概要
mkvextract {模式} {源文件名} [選項] [提取指令]
說明
本程序可以將 Matroska™ 文件的指定部分提取為其他有用的格式。第一個參數,模式
告訴 mkvextract 要提取什麼。目前支持提取 tracks(軌道)、tags(標籤)、attachments(附件)、chapters(章節)、CUE sheets(CUE 表單)以及timecodes(時間碼)。第二個參數是源文件名。它必須是 Matroska™ 文件。以下參數為選項及提取指令;兩者均依所選模式而定。
通用選項
以下選項在所有模式下可用,本段落只講一遍,不贅述。
-f
,--parse-fully
- 設置解析模式為 '
full(完整)
'。默認的解析模式不解析整個文件,而是使用元定位元素確定源文件中所需元素的位置。99% 的情況下這已經足夠。但如果碰到不含元定位元素或者元定位元素損壞的文件,用戶可能得考慮使用此模式。完整掃描文件可能要花費幾分鐘,而快速掃描只需要幾秒鐘。 --command-line-charset
字符集
- 設定在命令行給出的字符串的字符集,用於轉為其他字符集。默認為系統當前區域設置中所給定的字符集。
--output-charset
字符集
- 設置輸出的字符串應被轉換到何種字符集。默認為系統當前區域設置中所給定的字符集。
-r
,--redirect-output
文件名
- 將所有信息輸出至文件
文件名
而不是在命令行顯示。儘管該操作可以用輸出重定向輕鬆實現,但在某些情況下還需要靠它:如當終端在寫入文件之前重新解釋(覆蓋輸出)時。將優先使用通過--output-charset
設定的字符集。 --ui-language
语言代码
- 強制使用語言代碼為
语言代码
的翻譯(如 'de_DE
' 對應德文翻譯)。使用LANG
,LC_MESSAGES
及LC_ALL
這些環境變量更好。如果在语言代码
處輸入 'list
',mkvextract 將輸出可用翻譯列表。 -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 根據下一軌道的標籤數據與章節信息提取出 CUE 表單,輸出文件名為軌道的輸出名後接 '
.cue
' 擴展名。 --raw
- 將原始數據提取為文件,輸出文件的周圍沒有任何容器數據。 與
--fullraw
標記不同的是,此標記不會將CodecPrivate
元素的內容寫入輸出文件。 此模式對所有CodecIDs
有效,即使是 mkvextract 不支持處理的,然而生成的文件可能無法使用。 --fullraw
- 提取原始數據,輸出文件的周圍沒有任何容器數據。 如果軌道包含
CodecPrivate
編解碼器私有元素,它的內容將先被寫入文件。 此模式對所有CodecIDs
有效,即使是 mkvextract 不支持的那些,但是生成的文件可能無法使用。 TID:输出文件名
- 如果源文件中存在 ID 為
TID
的軌道,則將其提取為文件输出文件名
。本選項可多次給出。軌道 ID 與 mkvmerge 的--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
- 輸出文件名
- 如果源文件中存在 ID 為
AID
的附件,則將其提取為文件输出文件名
。如果输出文件名
處留空,將使用所用 Matroska™ 文件中的附件名稱。本選項可多次給出。附件 ID 與 mkvmerge 的--identify
選項所輸出的相同。
章節提取模式
語法: mkvextract chapters
源文件名
[选项
]
-s
,--simple
- 將章節信息以 OGM tools 所用的簡單格式 (
CHAPTER01=..., CHAPTER01NAME=...
) 導出。此模式下部分信息將被廢棄。默認以 XML 格式輸出章節。
提取出的章節將被輸出到命令行,除非輸出被重定向(詳情參見關於 輸出重定向 的章節)。
Cue 表單提取模式
語法: mkvextract cuesheet
源文件名
[选项
]
提取出的 cue 表單將被輸出到命令行,除非輸出被重定向(詳情參見關於 輸出重定向 的章節)。
時間碼提取模式
語法: mkvextract timecodes_v2
源文件名
[选项
]
提取出的時間碼將被輸出到命令行,除非輸出被重定向(詳情參見關於 輸出重定向 的章節)。
輸出重定向
有些提取模式會使 mkvextract 將提取出的數據輸出到命令行。通常有兩種方法將數據寫入文件:一種由 shell 提供,另一種由 mkvextract 自身提供。
shell 的報告重定向功能可以通過在命令行後追加 '> 輸出文件名.擴展名
' 命令實現。示例:
$ mkvextract tags 源.mkv > 标签.xml
mkvextract 自身的重定向功能可通過 --redirect-output
選項喚出。示例:
$ mkvextract tags 源.mkv --redirect-output 标签.xml
注意
在 Windows 平台上您應當使用 --redirect-output
選項,因為 cmd.exe 有時會在寫入文件之前對特殊字符進行轉義,導致輸出文件損壞。
輸出文件格式
輸出文件的格式取決於軌道的類型,而不是輸出文件名的擴展名。目前支持以下軌道類型:
- V_MPEG4/ISO/AVC
- H.264 / AVC 視頻軌將被輸出為 H.264 基本流,可以使用如 GPAC™ 工具包中的 MP4Box™ 作進一步處理。
- V_MS/VFW/FOURCC
- 使用此
CodecID
且 FPS 恆定的視頻軌將被輸出為 AVI 文件。 - V_REAL/*
- RealVideo™ 軌道將被輸出為 RealMedia™ 文件。
- 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™ 文件。
- A_REAL/*
- RealAudio™ 軌道將被輸出為 RealMedia™ 文件。
- A_TTA1
- TrueAudio™ 軌道將被輸出為 TTA 文件。請注意,由於 Matroska™ 時間碼的精度限制,解開來的文件的頭部有兩個字段不同:
data_length
(文件的總採樣數) 與 CRC。 - S_TEXT/UTF8
- 簡單的文本字幕將被輸出為 SRT 文件。
- S_TEXT/SSA, S_TEXT/ASS
- SSA 與 ASS 文本字幕將分別被輸出為 SSA/ASS 文件。
- S_KATE
- Kate™ 流將以 Ogg™ 為容器輸出。
- 標籤
- 標籤將被轉換為 XML 格式。此格式與 mkvmerge 所支持讀取的標籤格式相同。
- 附件
- 附件將被以原樣輸出。不會進行任何轉換。
- 章節
- 章節將被轉換為 XML 格式。此格式與 mkvmerge 所支持讀取的章節格式相同。您也可以選擇輸出精簡的簡單 OGM 格式。
- 時間碼
- 時間碼會先被排序,然後以 timecode v2 格式文件輸出,該文件適用於 mkvmerge。不支持提取為其他格式 (v1, v3 或 v4)。
退出代碼
mkvextract 退出時會返回以下三個退出代碼中的一個:
0
-- 此退出代碼說明已成功完成提取。1
-- 這種情況下 mkvextract 至少輸出了一條警告信息,但提取並未因之中止。 警告信息以文字 '警告:
' 為前綴。根據問題的不同,生成的文件可能是好的,也可能不是。 強烈建議用戶檢查警告信息以及生成的文件。2
-- 此退出代碼用於錯誤發生之後。 mkvextract 在輸出錯誤信息後即中斷處理。錯誤信息可能是錯誤的命令行參數,也可能是損壞文件的讀取/寫入錯誤。
參閱
網絡
最新版本總可以在 MKVToolNix 主頁 找到。