我有8mp +的高质量图像,并且需要在不降低质量的前提下尽可能减小它们的尺寸。 Photoshop和类似的软件具有“保存为网络”功能,效果很好。
如何使用ffmpeg完成此操作?图片是JPG
实际上,我需要从中心裁剪图像。
如此
原始图像:1200x800,质量:出色 ->裁剪图像:距原始图像中心300x300,质量:出色 ---->保存为网络裁剪图像,质量:保存为网络
我需要运行什么ffmpeg命令?
答案 0 :(得分:0)
您需要使用-q:v
标志来指定质量设置,该标志采用从1(最好,最大)到31(最坏,最小)的数字参数。
ffmpeg -i <input> -q:v 8 <output.jpg>
由您决定哪种质量设置是“足够好”和“足够小”。
有关附录的问题,请参见http://ffmpeg.org/ffmpeg-filters.html#crop
答案 1 :(得分:0)
-q:v
请参见How can I extract a good quality JPEG image from an H264 video file with ffmpeg?中的-q:v
选项
确保您使用的是最新的ffmpeg
,默认情况下将启用霍夫曼优化。这样可以减小文件大小。请参见ffmpeg -h encoder=mjpeg
并查找-huffman
选项,以查看您的版本是否支持此功能。
或者,霍夫曼优化可以由jpegtran
执行:
jpegtran -optimize -copy none -perfect input.jpg > output.jpg
我猜想Photoshop的“另存为Web”仅输出yuvj420p像素格式,而ffmpeg
将选择与输入像素格式最接近的像素格式(yuvj420p,yuvj422p或yuvj444p)。您可以使用format filter强制yuvj420p。这样可以减小文件的大小,但在某些区域也可能使伪影更加突出,但您可能不会注意到其中的区别。
使用crop filter。默认设置为使作物居中,因此只需使用-vf crop=300:300
。
ffmpeg -i input -vf "crop=300:300,format=yuvj420p" -q:v 3 -frames:v 1 output.jpg