要点:まずMP4が実際に字幕トラックを含んでいるかどうかを確認しましょう——ほとんどは含んでいません。 無料のffprobeコマンド1つで数秒のうちに分かります。トラックがあれば、ffmpegコマンド1つでSRTファイルに変換できます。しかし、大多数のMP4——SNS動画、CapCutやPremiereの書き出し、ダウンロードしたクリップ——では字幕が映像に焼き込まれており、抽出する唯一の方法は、フレームからテキストを読み取るOCRです。本ガイドではこの両方の手順に加え、動画に字幕がまったくない場合も解説します。
MP4に字幕トラックがあるか確認するには?
ffmpegをインストールした状態で(Macならbrew install ffmpeg)、次を実行します:
ffprobe -v error -select_streams s \
-show_entries stream=index,codec_name:stream_tags=language \
-of default=noprint_wrappers=1 input.mp4
結果は次の2通りです:
| 出力 | その意味 | 抽出方法 |
|---|---|---|
codec_name=mov_text | MP4に埋め込みテキスト字幕トラックがある(プレーヤーで切り替え可能) | ffmpegコマンド1つ |
| 出力がまったくない | 字幕トラックがない——見えている字幕は映像に焼き込まれている | OCR |
ffprobeが何も表示しないのに、再生すると字幕が見える場合、その字幕は映像画像の一部です——どんな抽出ツールやコンバーターでも取り出せず、OCRだけが有効な方法です。
MP4の字幕トラックをSRTに抽出するには?
MP4はテキスト字幕をmov_text形式で保存します。ffmpegはコマンド1つでこれを標準的なSRTファイルに変換します:
# Extract the first subtitle track as SRT
ffmpeg -i input.mp4 -map 0:s:0 subtitles.srt
# If there are several tracks, 0:s:1 is the second, and so on
ffmpeg -i input.mp4 -map 0:s:1 subtitles.srt
出力は、どんな字幕エディターでも開け、どのプラットフォームにもアップロードできるプレーンなSRTファイルです。うまくいけばこれで完了——理想的なケースです。ffmpegがStream map '0:s:0' matches no streamsと報告した場合、そのMP4には字幕トラックがなく、こちらの方が圧倒的に多いケースです。
ほとんどのMP4動画に字幕トラックがないのはなぜ?
MP4の字幕サポートは常に後回しにされてきました。SNSプラットフォームはアップロード時に字幕トラックを削除するか、再生時に無視し、多くのプレーヤーはMP4ファイルの字幕メニューをそもそも表示しません——そのため制作者は字幕トラックに頼るのをやめました。
プラットフォームやプレーヤーがMP4の字幕トラックをこれほど不安定にしか扱わないため、ほとんどの制作者は代わりに字幕を映像に直接焼き込みます——だからこそ、一般的なMP4の字幕はffmpegやどんなコンバーターでも抽出できないのです。 CapCutの書き出し、ダウンロードしたリール、再アップロードされたクリップで見える字幕は、ほぼ必ずトラックではなくピクセルです。2種類の字幕の詳しい違いはこちら:埋め込み字幕と焼き込み字幕の違い。
MP4から焼き込み字幕を抽出するには?
OCR——動画フレームから字幕テキストを読み取り、タイミング付きの字幕ファイルとして再構築するソフト——を使います:
- MP4をMac上のGeekLinkに取り込みます。
- OCR抽出を実行します。字幕領域を検出し、各フレームのテキストを読み取り、重複したフレームを統合して、正しくタイミングの合ったきれいな字幕行にします。
- SRTとして書き出す——または先に翻訳して2言語ファイルとして書き出します。
OCRはMac上でローカルに実行され——動画は一切アップロードされません——フォルダー内の動画をまとめて1つのバッチで処理できます。ステップごとの手順はこちら:OCRで焼き込み(ハードサブ)字幕を抽出する方法。動画に除外したい透かしやチャンネルロゴがある場合は、透かしを除いて字幕を抽出するをご覧ください。
MP4に字幕がまったくない場合は?
トラックもなく、焼き込みもされていない場合、抽出すべきものはありません——代わりに字幕を生成します。動画をGeekLinkに取り込み、Mac上でローカルにWhisper音声認識を実行すれば、編集・翻訳・SRT書き出しが可能なタイミング付き字幕が得られます。動画文字起こしのためのWhisper完全ガイドをご覧ください。
抽出した字幕を翻訳するには?
MP4から抽出したSRTファイルは、そのままGeekLinkに取り込んで、元のタイミングを保ったままAIで40以上の言語に翻訳できます。 翻訳済みSRT、2言語SRTとして書き出すか、字幕トラックを無視するプラットフォーム向けに翻訳を映像へ焼き込み直すこともできます。詳しいワークフロー:焼き込み字幕を翻訳する方法。
FAQ
MP4ファイルから字幕を抽出するには?
まず字幕トラックを確認します:ffprobe -v error -select_streams s -show_entries stream=codec_name input.mp4。mov_textと表示されたら、ffmpeg -i input.mp4 -map 0:s:0 subtitles.srt を実行すればSRTが得られます。何も表示されない場合、字幕は映像に焼き込まれており、OCRが必要です。
字幕を抽出しようとするとffmpegが「matches no streams」と言うのはなぜ?
MP4に字幕トラックがないからです。再生中に見える字幕は映像画像に焼き込まれており——データではなくピクセルなので——ffmpegがマッピングできるストリームがありません。代わりにGeekLinkのようなOCRソフトがフレームから読み取ります。
オンラインツールでMP4から字幕を抽出できますか?
MP4に埋め込みトラックがある場合に限りますが、ほとんどはありません——しかも大きな動画をウェブサイトにアップロードするのは遅いです。焼き込み字幕の場合、Mac上でローカルに動くOCRの方が速く、動画のプライバシーも守れます。
CapCutやPremiereの書き出しから字幕を抽出できますか?
エディターからの書き出しはほぼ必ず焼き込みです。書き出し時に字幕が映像へレンダリングされるため、ファイル内にトラックはありません。OCRが唯一の方法です——GeekLinkが字幕領域を検出し、フレームごとにテキストを読み取り、タイミング付きSRTを書き出します。
MP4とMKVから字幕を抽出する場合の違いは?
MKVは埋め込み字幕トラック(SRT、ASS、またはBlu-rayのPGS)を持っていることが多く、抽出は通常ffmpegやmkvextractで成功します。MP4はそもそもトラックを持っていることが少なく、抽出は通常、焼き込み字幕へのOCRを意味します。関連ガイドをご覧ください:MKVファイルから字幕を抽出する方法。