由ffmpeg从mp4提取的JPG的质量比从视频播放器(vlc)暂停的帧要差得多。我正在寻找ffmpeg cmd选项来提高输出质量。
使用以下cmd:
/home/tools/bin/ffmpeg -i Merkurtransit_20191111_crf20_8fps_crop.mp4 Merkurtransit_20191111_crf20_8fps_crop_%04d.jpg -hide_banner
ffmpeg cmd来自于此处的说明: https://www.bugcodemaster.com/article/extract-images-frame-frame-video-file-using-ffmpeg
比较屏幕副本在这里: http://skywatcher.space/download/vlc_player_vs_ffmpeg_bug.png
一些注意事项。我是使用ffmpeg从高分辨率png(实际上最初是从16bit的tiff)创建的mp4的:
/home/tools/bin/ffmpeg -framerate 8.0 -i ./AS_P10_RS6_png_reg/Merkurtransit_20191111_%03d.png -vf "crop=760:560:20:40" -pix_fmt yuv420p -crf 20 -r 24 -y ./Video/Merkurtransit_20191111_crf20_8fps_crop.mp4
crf 20的质量很高,接近100%,恢复的镜框应该接近原始画框。视频播放器的暂停帧显示足够的质量。 (尽管我不能说它是否在关键帧上)
ffmpeg版本信息:
home/tools/bin/ffmpeg -v
ffmpeg version N-80251-g0c7fa15 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
configuration: --prefix=/home/tools/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/tools/ffmpeg_build/include --extra-ldflags=-L/home/tools/ffmpeg_build/lib --bindir=/home/tools/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree
libavutil 55. 24.100 / 55. 24.100
libavcodec 57. 45.100 / 57. 45.100
libavformat 57. 37.101 / 57. 37.101
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 46.101 / 6. 46.101
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100
答案 0 :(得分:0)
FFmpeg主要是一个 video 转换器,而JPEG输出是MJPEG编码器生成单个图像的结果。如果未设置任何速率控制参数,则会选择默认的200 kbps比特率。
要获得更好的输出质量,请使用
ffmpeg -i in.mp4 -q:v 1 -qmin 1 -qmax 1 out%d.jpg
量化器精确地固定为1。