2013-12-19 287 views
10

私はFFMPEGのドキュメントと多くのフォーラムをチェックして.MP4ビデオから字幕を抽出するために、正しいコマンドラインを考え出したが、それほどのようになります。ffmpegでMP4ビデオからSubRip(SRT)字幕を抽出することは可能ですか?

ffmpeg -i video.mp4 -vn -an -codec:s:0 srt out.srt 

をしかし、私は私を貸す次のエラーを取得します

エラー出力ストリーム#0用のエンコーダを開いている間: - などbit_rateの、レート、幅や高さなど多分間違ったパラメータ

これがすべてで実現可能であるかどうかを疑問視します

ffmpeg -codecsを使って、私はffmpegがサブリップサブタイトルをエンコードできなければならないことを確認できます。私は、コメントが、私に示す単純化されたコマンドラインを使用してテストしている

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.mp4': 
... 
Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1/0x31637661), yuv420p, 720x572 [SAR 64:45 DAR 256:143], 1341 kb/s, 25 fps, 25 tbr, 90k tbn, 180k tbc 
Stream #0:1(eng): Audio: aac (mp4a/0x6134706D), 48000 Hz, stereo, fltp, 191 kb/s 
Stream #0:2(fra): Audio: aac (mp4a/0x6134706D), 48000 Hz, stereo, fltp, 191 kb/s 
Stream #0:3(eng): Subtitle: dvd_subtitle (mp4s/0x7334706D) 
Stream #0:4(und): Subtitle: mov_text (text/0x74786574) 

編集:私はビデオに内蔵された2つの字幕トラックがあることがわかりますffmpeg -i video.mp4を使用

それでも同じエラーが発生します。コマンドを実行すると、a link to the detailed verbose outputが表示されます。私はまた、結果の出力でメタデータとチャプターを完全に無効にしようとしましたが、それでも同じエラーが発生します。

+3

シンプルな「ffmpeg -i in.mp4 out.srt」が正しく動作します。 (ffmpeg 2.0.1) – pogorskiy

+0

'ffmpeg ... -loglevel debug ...'を試してエラーの詳細を表示します – pogorskiy

+0

私は両方の提案を試みていますが、間違いはありません。おそらく、これはffmpegが結果のsrtファイルに章マーカーを出力しようとしているために起こりますか?私は詳細なデバッグ出力を含んでいます。 –

答えて

22

私はenventually、私は成功しなかった理由を考え出し:ソースビデオから字幕は、テキストベースの表現でエンコードされた場合

指定されたコマンドラインが完全に罰金されていると思います。しかし、ffmpeg -iコマンドラインの出力に見られるように、字幕は "dvd_subtitle"形式でエンコードされています。

dvd_subtitle形式は、ビデオ内の各字幕のビットマップを格納します。したがって、ffmpegがビットマップをテキストに変換する方法はありません。

このタスクでは、OCRベースのソフトウェアを利用する必要があります。このソフトウェアは、ビットマップ表現のテキストとして各字幕を識別するタスクをユーザーにアシストします。

(ソースビデオには2番目のテキストベースのサブタイトルがありますが、ほとんどのポピュラープレイヤーがどこから来たのか分からないのですが、この「mov_text」サブタイトルは

+0

私はテキストトラックがチャプターマーカーであるとは確信していないと思います。 – mcdado

4

(まだ担当者からはコメントできません)しかし、MP4からSRTを抽出するとMOV_Textとしてフォーマットされたファイルが作成されます。これは、スタブのプレースホルダです。通常のSRT。それはまだ追加され、動作しますが、MP4をm4vに変更するようなものです。通常は動作しますが、コード内では同じことは機能しません。 Mov_textは手作業でフォントやサイズなどを調整するのには恐ろしいことです。SRTをダウンロードしてテストするのがベストです!

これは動作しますが、mov_textコード化されたSRTファイルになります:

構文....

ffmpeg -i in.mp4 out.srt 
0

入力ファイルであまりにも多くのストリームがある場合 ... mapオプションを使用してみてください

ffmpeg -i videoとなります。MP4 -map 0:4ストリーム:我々は0の2番目の字幕を変換しますので、SRTに変換することはできませんのでdvdsubtitleである3:4最初に0にあなたのビデオに2つの字幕ストリームがありますので

out.srt mov_textで字幕のソフトコピーですので、簡単に変換できます。

関連する問題