目前我正在使用这个命令来提取图片:
ffmpeg -i input.mp4 output_%03d.jpeg
但是我该如何提高JPEG图像的质量?
目前我正在使用这个命令来提取图片:
ffmpeg -i input.mp4 output_%03d.jpeg
但是我该如何提高JPEG图像的质量?
-qscale:v
控制视频质量可以使用-qscale:v
(或别名-q:v
)作为输出选项。
-qmin 1
输出选项(因为默认值为-qmin 2
)。ffmpeg -i input.mp4 -qscale:v 2 output_%03d.jpg
请查看图像混合器文档以获取有关图像输出的更多选项。
ffmpeg -ss 60 -i input.mp4 -qscale:v 4 -frames:v 1 output.jpg
使用-update 1
图像多路复用器 (image muxer)选项。例如,对于每秒从直播流输入更新一次的情况:
ffmpeg -i rtmp://input.foo -q:v 4 -r 1 -update 1 output.jpg
-qmin 1 -qmax 1
导致文件变大,但给了我完全相同的图像。我通过Photoshop进行了验证,使用了2个图层和差异滤镜。像素是一样的。 - cherouvim以无损格式(如PNG)输出图片:
mkdir stills
ffmpeg -i my-film.mp4 -vsync 0 -f image2 stills/my-film-%06d.png
然后使用另一个程序(例如GIMP),在其中更精确地指定质量、子采样和DCT方法,将您想要的PNG转换为JPEG。
通过使用这种方式,可以获得比使用-qmin 1 -q:v 1
并直接从ffmpeg
输出为JPEG格式略微更清晰的图像。
如果您只想提取关键帧(这些关键帧在编辑后可能具有更高的质量),则可以使用类似于以下内容的东西:
ffmpeg -skip_frame nokey -i my-film.mp4 -vsync 0 -f image2 stills/my-film-%06d.png
-vsync 0
参数避免了需要使用-r
来指定帧率的问题,并且意味着输入文件中的所有帧都被视为一个帧。ffmpeg
] 命令从mp4中提取png文件,则会得到与原始视频完全相同质量的高质量png文件。”请问您使用的 ffmpeg
版本输出了 PNG8
文件,并且输入格式是什么? - Jakeffmpeg
的了解。 - Jakeffmpeg
将 JPEG 压缩质量设置为 90(而不是 70),如果你设置了 -q2
,但这仍然比我通常使用的要低。还要注意,它正在重新压缩已经被压缩过的电影中的静止画面,并且“关键帧”的质量会更好。但是,虽然 MPEG 是基于 JPEG 的,但似乎不可能直接将关键帧作为 JPEG 图像提取出来。 - Jake-qscale:v
参数。从.jpg更改为.png的简单更改产生了最大的质量改进。 - Radespympv --osd-msg1='${estimated-frame-number} / ${estimated-frame-count}' vid1.mp4
sed -i 's/^/eq(n\\,/' frm.txt; sed -i 's/$/)\+/' frm.txt; sed -i '$ s/.$//' frm.txt; #adds eq(n\, #adds )+ at the end of each line #remove + in lastline (last digit)
frms=$(cat frm.txt); ffmpeg -i vid_1.mp4 -vf "select='$frms'" -fps_mode drop "frames_%03d.bmp"
for pic in *.bmp; do convert -units PixelsPerInch -density 300 -quality 100 "$pic" "${pic//}_j.jpg"; done