要点:MKVファイル内の字幕には根本的に異なる2つの形式があり、どちらかによって抽出方法が変わります。 MKVがテキスト字幕トラック(SRTまたはASS)を含んでいれば、無料のコマンド1つ——ffmpegまたはMKVToolNixのmkvextract——で数秒のうちに字幕ファイルを保存できます。しかし、テキストをまったく含まない一般的なケースが2つあります。画像ベースのトラック(PGSとVobSub。Blu-rayやDVDのリッピングで標準的に使われる)と、映像そのものに直接焼き込まれた字幕です。どちらもOCRが必要です。本ガイドでは、正確なコマンドとともにこの4つのケースすべてを解説します。まずは、あなたのケースがどれに当たるかを教えてくれる10秒のチェックから始めましょう。
MKVファイルにどんな字幕トラックがあるか確認するには?
何かを抽出する前に、まず字幕ストリームを一覧表示します。ffmpegをインストールした状態で(Macならbrew install ffmpeg)、次を実行します:
ffprobe -v error -select_streams s \
-show_entries stream=index,codec_name:stream_tags=language,title \
-of default=noprint_wrappers=1 input.mkv
あるいは、すでにMKVToolNixを使っているなら、mkvmerge -i input.mkvが同じ情報をより分かりやすい形で表示します。出力中のcodec_nameがすべてを教えてくれます:
| codec_name | その正体 | SRTを得る方法 |
|---|---|---|
subrip | プレーンテキスト字幕(SRT) | ffmpegコマンド1つ——数秒で完了 |
ass | スタイル付きテキスト字幕(アニメでよく使われる) | ffmpegコマンド1つ。SRT化するとスタイルは失われる |
hdmv_pgs_subtitle | Blu-rayの画像字幕(文字の画像) | OCRが必要 |
dvd_subtitle | DVDの画像字幕(VobSub) | OCRが必要 |
| 出力がまったくない | 字幕トラックがない——見えている字幕は映像に焼き込まれている | 映像そのものにOCR |
ffprobeがsubripやassを表示すれば、抽出は無料で数秒で済みます。hdmv_pgs_subtitleやdvd_subtitleが表示された場合、そのトラックは文字の画像を含んでおり、OCRなしにSRTへ変換できるツールは存在しません。 この違いこそがMKV字幕に関する最も一般的な混乱の元であり、これ以降のすべてを決定づけます。
ffmpegでMKVからSRT字幕を抽出するには?
テキストトラックの場合、ffmpegが最速の手段で、Mac・Windows・Linuxのいずれでも同じように動きます:
# Extract the first subtitle track as SRT
ffmpeg -i input.mkv -map 0:s:0 subtitles.srt
# Extract the second subtitle track (0:s:1 = second, and so on)
ffmpeg -i input.mkv -map 0:s:1 subtitles.srt
# Pick a track by language instead of position
ffmpeg -i input.mkv -map 0:s:m:language:eng english.srt
# Keep an ASS track in its original format (preserves styling)
ffmpeg -i input.mkv -map 0:s:0 -c copy subtitles.ass
知っておくべきことが2つあります。1つ目は、ASSトラックをSRTに変換すると、フォント・色・位置・カラオケ効果といったすべてのスタイルが何の警告もなく失われる点です。SRT形式ではそれらを表現できないためです。スタイルが必要なら、代わりに.assとして抽出してください。2つ目は、-map 0:s:0は字幕ストリームだけを数えるため、ffprobeが表示するストリームインデックスの番号とは一致しない点です。
ffmpegは抽出時に字幕形式を相互変換します。だからこそffmpeg -i input.mkv -map 0:s:0 subtitles.srtはSRTトラックにもASSトラックにも通用します。しかし、画像ベースのトラック(PGS/VobSub)をテキストに変換することはできず、試みるとエンコーダーエラーで失敗します。
MKVToolNix(mkvextract)で字幕を抽出するには?
MKVToolNix(無料。mkvtoolnix.download、またはbrew install mkvtoolnix)は、トラックを元の形式のままビット単位で正確に抽出します。まずトラックIDを一覧表示し、次にIDを指定して抽出します:
# List tracks with their IDs
mkvmerge -i input.mkv
# Track ID 0: video (HEVC) / Track ID 1: audio (AAC) / Track ID 2: subtitles (SubRip/SRT)
# Extract track 2 as SRT
mkvextract input.mkv tracks 2:subtitles.srt
# Extract several tracks in one run
mkvextract input.mkv tracks 2:english.srt 3:spanish.srt
これを検索するほぼ全員がつまずく落とし穴:MKVToolNixのGUIには抽出機能がありません——抽出はコマンドラインツールmkvextractとしてのみ提供されます。GUIが担うのは多重化(トラックの取り込み)、ヘッダー編集、ファイル分割であり、GUI内で「抽出」ボタンを探しても、仕様上見つからないのです。
書き出すファイル拡張子は、トラックのコーデックに一致させる必要があります。SubRipなら.srt、ASS/SSAなら.ass、PGSなら.sup。VobSubの場合、mkvextractは.idxと.subのペアを書き出します。ここで、抽出したファイルがそもそもテキストではないケースに話が移ります。
字幕トラックがPGSやVobSub(画像ベース)だったら?
Blu-rayのリッピングはほぼ必ずhdmv_pgs_subtitleトラックを、DVDのリッピングはdvd_subtitle(VobSub)を持っています。これらのトラックは各字幕をレンダリング済みの画像として保存し、プレーヤーが映像の上に重ねて表示します——中にテキストはありません。抽出すると、字幕エディターや動画プラットフォームがテキストとして読み取れない.supまたは.idx/.subファイルが得られます。
PGSやVobSubの字幕をSRTに変換するには常にOCRが必要です。なぜなら「字幕」がテキストではなく、文字のビットマップ画像だからです。 Macでの現実的な手順は、ffmpegでトラックを一度映像に焼き込み、その結果に字幕OCRをかけることです:
# Burn the image-subtitle track onto the video (one-time re-encode)
ffmpeg -i input.mkv -filter_complex "[0:v][0:s:0]overlay[v]" \
-map "[v]" -map 0:a? -c:a copy burned.mp4
次にburned.mp4をGeekLinkに取り込み、OCR抽出を実行します。字幕領域を検出し、各フレームのテキストを読み取り、重複したフレームを1つのキューに統合して、正しくタイミングの合ったきれいなSRTを書き出します——すべてMac上でローカルに処理され、何もアップロードされません。再エンコードはOCRが読み取れる程度の品質があればよいので、デフォルト設定で十分です。
MKVに字幕トラックがまったくない場合(焼き込み字幕)は?
これはダウンロードしたアニメ、ドラマのエピソード、再エンコードされた動画で最もよくあるケースです。ffprobeは字幕ストリームを何も表示しないのに、再生すると字幕がはっきり見える——。ffprobeが字幕ストリームを表示しないのに再生中に字幕が見える場合、それらは映像そのものに焼き込まれています——どんな抽出ツール・デマルチプレクサー・コンバーターでも取り出せず、映像へのOCRだけが唯一の方法です。
- MKVをMac上のGeekLinkに取り込みます——変換は不要で、MKVをそのまま扱えます。
- OCR抽出を実行します。フレームから字幕テキストを読み取り、タイミング付きの字幕行に統合します。
- SRTとして書き出す——または先に翻訳して2言語ファイルとして書き出します。
OCRはローカルで実行され、1回の実行でバッチ全体を処理するため、1シーズン分のエピソードをまとめてキューに入れられます。詳しい手順はこちら:OCRで焼き込み(ハードサブ)字幕を抽出する方法。ツール選びに迷っているなら2026年おすすめの焼き込み字幕抽出ツールをご覧ください。字幕が埋め込みなのか焼き込みなのか分からない場合は、埋め込み字幕と焼き込み字幕の違いで解説しています。
抽出した字幕を翻訳するには?
抽出はローカライゼーション作業の第一歩であることがよくあります。MKVから抽出したSRTファイルは、そのままGeekLinkに取り込んで、元のタイミングを保ったままAIで40以上の言語に翻訳できます——再文字起こしは不要です。 結果は翻訳済みSRT、2言語SRTとして書き出すか、翻訳を映像に焼き込むこともできます。詳しいワークフロー:焼き込み字幕を翻訳する方法。
FAQ
MKVファイルから字幕を抽出するには?
MKVにテキスト字幕トラックがあれば、ffmpeg -i input.mkv -map 0:s:0 subtitles.srtを実行します——数秒で完了し、無料です。トラックが画像ベース(PGS/VobSub)だったり、字幕が映像に焼き込まれている場合は、抽出できるテキストがありません。フレームから読み取るにはOCRソフトが必要です。
MKVToolNixのGUIで字幕を抽出できますか?
いいえ。MKVToolNixのGUIはトラックをMKVファイルに多重化しますが、抽出機能はありません。抽出は、一緒にインストールされるコマンドラインツールmkvextractで行います:mkvmerge -i input.mkvでトラックIDを調べ、次にmkvextract input.mkv tracks 2:subtitles.srtを実行します。
VLCでMKVから字幕を抽出できますか?
いいえ。VLCは埋め込み字幕トラックの表示や切り替えはできますが、トラックを字幕ファイルとして書き出す機能はありません。テキストトラックにはffmpegまたはmkvextractを、画像ベースや焼き込み字幕にはOCRを使ってください。
字幕がSRTではなく.supや.idx/.subファイルとして出てきたのはなぜ?
そのトラックが画像ベースだからです。.supはBlu-rayのPGS、.idx/.subはDVDのVobSubです。どちらも字幕を画像として保存しているため、抽出しても画像のまま保存されます。SRTに変換するにはOCRが必要です——ファイル内に変換すべきテキストがないので、どんな形式コンバーターでもできません。
MacでPGS字幕をSRTに変換するには?
ffmpegコマンド1つでPGSトラックを映像に焼き込み(上記のガイド参照)、その結果にGeekLinkの字幕OCRをかけます。フレームから字幕テキストを読み取り、タイミング付きSRTを書き出します——すべてMac上でローカルに完結します。