web-dev-qa-db-ja.com

MP4およびMKVムービーから字幕を抽出する方法

MP4とMKVの映画から字幕を抽出しようとしています。私はmp4box(OS X)を使用していますが、それがどのように機能するか理解できません。

ヒントはありますか?

30
Open the way

MP4および3GPファイル

無料のクロスプラットフォーム MP4Box は、MP4または3GPコンテナーでのみ機能します。ホームページからインストールできます。まず、さまざまなトラックを見て、字幕トラックに属するIDを確認します。

MP4Box -info input.mp4

字幕トラックの横にあるIDを確認します。次に、抽出するトラックID <trackId>に基づいて、次のコマンドを呼び出します。

MP4Box -raw <trackID> input.mp4

または、一般的に使用されるSRT形式にエクスポートするには:

MP4Box -srt <trackID> input.mp4

MKVファイル

Matroska(MKV)ファイルから字幕を抽出するには、無料のオープンソース mkvtoolnix が必要ですパッケージ。これらはWindowsとLinux用で、Macでは Homebrew with brew install mkvtoolnixを使用してインストールできます。

次に、ファイルを検査します。

mkvmerge -i input.mkv

これにより、たとえば次のようにトラックがリストされます。

File 'input.mkv': container: Matroska
Track ID 1: video (V_MPEG4/ISO/AVC)
Track ID 2: audio (A_AAC)
Track ID 3: subtitles (S_TEXT/UTF8)

トラックのIDに基づいて、次のコマンドを呼び出します。ここで、<trackID>は上記で特定したものです。 <output>は単なるダミー名であり、任意の名前を使用できます。

mkvextract tracks input.mkv <trackID>:<output>.srt

したがって、私たちの場合、それは次のようになります:

mkvextract tracks input.mkv 3:subs.srt
50
slhck

ffmpegでサポートされているほぼすべてのファイル形式のソリューションを次に示します(リモートファイルもサポートされています)。

ffmpeg -i video.mp4 subtitle.srt

ffmpegはデフォルトで新しいUbuntuバージョンに存在します。MacOS XおよびWindowsの場合は、インストールする必要があります( 公式Webサイトからダウンロード またはhomebrewを使用)。

ここに video.mp4はソースのローカルまたはリモートのビデオファイル名であり、subtitle.srtは出力字幕ファイル名です。 ffmpegは、抽出したいものを正確に検出するため、出力のファイル拡張子を指定することが重要です。つまり、.mp3ファイル拡張子からmp3オーディオをビデオファイルから抽出するか、別のビデオコンテナーを設定してフォーマット間で変換します。

15
TiGR