ffmpeg を使用して、字幕を書き込む中間ステップを書き込むことなく、字幕付きのフレームを保存したいと思います。出来ますか?
私が今していることは:
# first, burn the subtitles:
ffmpeg -i nosub.mp4 -vf subtitles=sub.srt withsub.mp4
# then extract frames
ffmpeg -i withsub.mp4 -vf fps=4 extracted/%05d.bmp -hide_banner
フィルタを,
と組み合わせるだけです:
ffmpeg -hide_banner -i nosub.mp4 -vf subtitles=sub.srt,fps=4 extracted/%05d.bmp
利点は、ビデオの再エンコードがないため、品質が低下しないことです。
-hide_banner
はグローバルオプションであるため、最初に来る必要があります。
両方を同時に出力する場合は、ハードサブビデオストリームを2つにfilter_complex
とsplit
を使用する必要があり、fps
フィルターを出力に適用します。ビットマップを作成し、他のビデオストリームは変更しないでください。 -map
を介して、ffmpegに何を出力するかを指示できます。
ffmpeg -i nosub.mp4 -filter_complex "
[0:v]subtitles=sub.srt[sub];
[sub]split=2[sub1][sub2];
[sub1]fps=4[out1]
" \
-map "[out1]" extracted/%05d.bmp \
-map "[sub2]" -c:v libx264 -crf 23 withsub.mp4
出力ビデオの品質/サイズを調整したい場合に変更したいビデオオプションをいくつか設定しました。