[video] ffmpeg를 사용하여 H264 비디오 파일에서 양질의 JPEG 이미지를 추출하려면 어떻게해야합니까?

현재이 명령을 사용하여 이미지를 추출하고 있습니다.

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

그러나 JPEG 이미지 품질을 어떻게 향상시킬 수 있습니까?



답변

사용하다 -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

또한보십시오


답변

PNG와 같은 무손실 형식으로 이미지를 출력합니다.

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

그런 다음 다른 프로그램 (품질, 서브 샘플링 및 DCT 방법 (예 : 김프)을보다 정확하게 지정할 수 있음)을 사용하여 원하는 PNG를 JPEG로 변환합니다.

이렇게하면 -qmin 1 -q:v 1에서 직접 JPEG로 출력하는 것보다 약간 더 선명한 이미지를 JPEG 형식으로 얻을 수 있습니다 ffmpeg.


답변