Mkvファイルがあり、avconv
を使用してDVD互換のmpgファイルに変換したいと思います。同じmkvファイルから1つの字幕ストリームをバーンインするにはどうすればよいですか?
avconv -i input.mkv -map 0:0 -map 0:1 -target pal-dvd -aspect 16:9 -q:v 1 -acodec mp2 -ac 2 -ab 128k output.mpg
ffmpegには subtitles
filter があり、SRTファイルをビデオストリームに書き込むことができます。ただし、--enable-libass
でコンパイルされたffmpegが必要です。少なくとも 利用可能なフィルター を見ていると、Libavに似たようなものはないと思います。
まず、字幕を抽出する必要があります。 -map 0:s:0
は出力用の最初の字幕ストリームを選択し、-c:s:0
はそのコーデックを選択します-それが本当にSRTであることを確認するためです。
ffmpeg -i input.mkv -an -vn -map 0:s:0 -c:s:0 srt subtitles.srt
次に、それらを燃やします。
ffmpeg -i input.mkv -map 0:0 -map 0:1 -target pal-dvd -aspect 16:9 -q:v 1 \
-c:a mp2 -ac 2 -b:a 128k -filter:v subtitles=subtitles.srt output.mpg
注意:
上記のコマンドは、入力のストリーム0:0
と0:1
がそれぞれビデオストリームとオーディオストリームであると想定しています。字幕が出力ファイルに含まれないようにするだけの場合は、-sn
を追加して字幕を完全に無効にすることもできます。
前者はffmpegの存在しないオプションであるため、-ab
を-b:a
に変更する必要があります。
入力にHDMVPGのような画像ベースの字幕が含まれている場合(MakeMKVがそれらを作成しているようで、他のツールがそれらを抽出できない場合)、オーバーレイフィルターを使用してそれらを書き込むことができます。
ffmpeg -i input.mkv -filter_complex "[0:v][0:s]overlay[v]" -map [v] -map 0:a \
-target pal-dvd -aspect 16:9 -q:v 1 -c:a mp2 -ac 2 -b:a 128k output.mpg
これも説明されています FFmpeg Wikiで 。
字幕が元の映画とは異なるサイズで表示される場合(たとえば、ビデオストリームが縮小されたが、字幕が縮小されなかった場合)、 -canvas_size
オプション を使用して設定してみてください。サイズ。