답변:
-qscale:v
사용 -qscale:v
(또는 별칭 -q:v
) 출력 옵션으로. JPEG의 유효 범위는 2-31이며 31이 가장 나쁜 품질입니다. 2-5의 값을 시도하는 것이 좋습니다.
ffmpeg -i input.mp4 -qscale:v 2 output_%03d.jpg
ffmpeg -ss 60 -i input.mp4 -qscale:v 4 -frames:v 1 output.jpg
이것은 모든 비디오 입력에서 작동합니다. 입력이 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
-qmin 1 -qmax 1
를 -q:v 1
두 배로 늘리는 것 외에도 추가 했습니다 . 그리고 나는 또한 아주 약간의 개선을 볼 수 있습니다.
-qmin 1 -qmax 1
결과적으로 더 큰 파일이 생성되었지만 정확히 동일한 이미지를 제공합니다. 포토샵, 2 개의 레이어 및 차이 필터를 통해이를 검증했습니다. 픽셀은 동일합니다.
-qmin 1 -q:v 1
.
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
.
ffmpeg
PNG8
256 색만 사용하는 파일을 출력 합니다 (GIF와 동일). 그래서 실제로는 매우 손실 이 많습니다 .
identify image.png
실제로는 단일 채널 8 비트가 아니라 R, G 및 B에 대해 8 비트 일 때 "8 비트"결과 를 제공 한다는 것입니다 . IDK 일반 identify
사용자가 이해해야하는 방식 그 tho.