利用 FFmpeg 和 ImageMagick, AVI 转 GIF(不失真)

利用[TMPGEnc 4.0 XPress] 或 [TMPGEnc Video Mastering Works 5] 生成 AVI 
这个视频编辑软件,可对每个帧进行操作

1.生成每个帧的 PNG
ffmpeg -y -ss 5 -t 3 -i "01.avi" -s 320x132 -an -f image2 "./png/output_%%05d.png"
    -y        覆盖原有的文件
    -ss       开始位置秒 或 hh:mm:ss[.xxx]
    -t        总时间秒数 或 hh:mm:ss[.xxx] 格式
    -i        输入的视频 
    -s        要生成 png 图片大小
    -an       忽略声道信息
    -f image2 图像文件流合并写入视频帧的图像文件 在win系统中必须[%%]才可以

2.根据 png 生成 GIF(dos命令中有 convert 命令,所以convert.exe 改名为 iconvert.exe)
iconvert -quiet -delay 3 ./png/*.png -resize 190x94 -ordered-dither o8x8,23 +map out_od2.gif
    -quiet    抑制所有警告消息
    -delay    gif 帧之间延时时间,单位毫秒[这个选项必须在输入文件名前面时才有效]
    -resize   调整 gif 大小
    -ordered-dither 使用一个统一的颜色通道,减小 gif 文件大小
    例子中这样生成的 gif 大小为 (795,001 字节)

3.生成 gif 进行优化
iconvert out_od2.gif  -layers OptimizeTransparency +map out_opt.gif
    -layers   OptimizeTransparency 使用透明颜色,减少 gif 文件大小
    例子中优化后 gif 大小为 (633,112 字节)

注:	
也可以以下命令	
iconvert -delay 3 ./png/*.png -resize 190x94 -layers optimize out_od1.gif
    例子中这样生成的 gif 大小为 (733,827 字节)
iconvert out_od1.gif  -layers OptimizeTransparency +map out_opt1.gif
    例子中优化后 gif 大小为 (628,188 字节)
	
或者直接使用avi->gif
    convert -quiet -delay 3 01.avi -ordered-dither o8x8,23 +map out_od2.gif
利用png生成gif时,操作比较麻烦,但是对不需要的帧图进行删除;
直接avi->gif操作简单,但是还需要第三方软件进行编辑;
Download ImageMagick 
ImageMagick help 
ImageMagick Usage help 
ImageMagick convert help
Download ffmpeg 
ffmpeg help
posted @ 2013-11-20 11:52  1CM  阅读(3626)  评论(0编辑  收藏  举报