sti*_*per 11 linux ffmpeg imagemagick image-processing animated-gif
我必须将非常高数量(200,000+)的短mp4(小于10秒)批量处理成动画GIF.我想我已经尝试了所有可能的命令行方式,但是生产高质量的GIF仍然需要很长时间.目前我使用ffmpeg来解压缩图像(jpg)帧,并使用图像magick转换来组装它们.它产生高质量的GIF,但需要太长时间并且使用太多的内存和CPU,即使使用-limit内存和地图限制进行调整也是如此.
我也曾尝试使用ffmpeg直接创建动画GIF,但质量最差.此外,我尝试使用gifsicle,看起来似乎很快,但它只需要GIF作为输入,并使用ffmpeg生成它们产生质量差的GIF.
有没有人有一些命令行配方快速高品质的GIF创建?
Ale*_*lya 17
首先,您应该创建一组具有最高质量的jpg图像,mplayer并将jpeg选项设置为100(jpeg:quality = 100).
mplayer -ao null -ss 0:00:00 -endpos 10 mts.flv -vo jpeg:outdir=jpeg_dir:quality=100
Run Code Online (Sandbox Code Playgroud)
接下来,您需要使用生成的jpgs转换为gifs convert,只需键入:
for i in ./jpeg_dir/*.jpg; do convert "$i" "${i%.jpg}.gif"; done
Run Code Online (Sandbox Code Playgroud)
最后使用gifsicle创建动画gif:
gifsicle --delay=10 --loop ./jpeg_dir/*.gif > anim.gif
Run Code Online (Sandbox Code Playgroud)
此外,您可以使用优化级别标志--optimize=03.减小文件大小会有所帮助:
gifsicle --delay=10 --optimize=03 --loop *.gif > anim.gif
Run Code Online (Sandbox Code Playgroud)
此外,您可以使用--colors num当前调色板的多种颜色进行操作,并--color-method method确定最合适的调色板.
至于我最合适的方法是 median-cut
median-cut is the median cut algorithm described by Heckbert
Run Code Online (Sandbox Code Playgroud)
此外,我尝试使用描述的标志进行操作,并找到了最有用的选项,以实现更好的生成的gif-image质量:
gifsicle --delay=3 --optimize=03 --color-method median-cut --loop *.gif > anim.gif
Run Code Online (Sandbox Code Playgroud)
准确--delay=NUM对应动画速度.此参数取决于原始视频的FPS.
它可以改进未压缩图像的传递,例如 .ppm,例如使用 mplayer 时,命令行将是:
mplayer -benchmark -noframedrop -nosound -vf format=rgb24 -vo pnm *.avi -osdlevel 0
Run Code Online (Sandbox Code Playgroud)
这些将节省 jpg 压缩/解压缩周期。
它还有助于使用固态硬盘。
| 归档时间: |
|
| 查看次数: |
8952 次 |
| 最近记录: |