web-dev-qa-db-ja.com

ffmpegは字幕の書き込みとフレームの抽出を同時に行うことができますか?

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
1
Abitbol

フィルタを,と組み合わせるだけです:

ffmpeg -hide_banner -i nosub.mp4 -vf subtitles=sub.srt,fps=4 extracted/%05d.bmp

利点は、ビデオの再エンコードがないため、品質が低下しないことです。

-hide_bannerはグローバルオプションであるため、最初に来る必要があります。

両方を同時に出力する場合は、ハードサブビデオストリームを2つにfilter_complexsplitを使用する必要があり、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

出力ビデオの品質/サイズを調整したい場合に変更したいビデオオプションをいくつか設定しました。

1
slhck