web-dev-qa-db-ja.com

ffmpegを使用してH264ビデオファイルから高品質のJPEG画像を抽出するにはどうすればよいですか?

現在、私はこのコマンドを使用して画像を抽出しています:

ffmpeg.exe -i 10fps.h264 -r 10 -f image2 10fps.h264_%03d.jpeg

しかし、どうすればJPEG画像の品質を改善できますか?

86
Daniel Gartmann

-qscale:vを使用

出力オプションとして-qscale:v(またはエイリアス-q:v)を使用します。 JPEGの有効範囲は2〜31で、31が最低品質です。 2〜5の値を試すことをお勧めします。

一連の画像を出力するには:

ffmpeg -i input.mp4 -qscale:v 2 output_%03d.jpg

最大60秒の持続時間で単一の画像を出力するには:

ffmpeg -ss 60 -i input.mp4 -qscale:v 4 -frames:v 1 output.jpg

これは、どのビデオ入力でも機能します。入力がMJPEGの場合は以下を参照してください。


MJPEG

入力がMJPEG(Motion JPEG)の場合、画像は品質を損なうことなく抽出できます。

ffmpegまたはffprobeコンソール出力は、入力がMJPEGかどうかを示します。

$ ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=nw=1 input.avi
codec_name=mjpeg

次に、 mjpeg2jpegビットストリームフィルター を使用してフレームを抽出できます。

$ ffmpeg -i input.avi -codec:v copy -bsf:v mjpeg2jpeg output_%03d.jpg

こちらもご覧ください

174
llogan