需要把100+张大小不一的图片,转换为视频,上网查了些资料,关键词一般用still images
或者image sequence
,结果用mencoder就能作:
mencoder mf://*.jpg -vf scale=800:600,harddup -ofps 25 -ovc xvid -xvidencopts bitrate=800 -o dbb.avi
结果出来的影片每秒25帧,也就是切换每秒切换25张图片,120多张一共耗时4秒,没法看。把fps调整为1或者0.1之类的数,mencoder运行就出错。没办法,我想了一笨办法。
按照每秒25帧算,那么如果一张图片想显示2秒,那么就把它复制(用ln更快,别傻傻的cp)2×25=50份,比如001.jpg.001, 001.jpg.002…按照这种方法把图片都整到一个目录中,然后再使用上面那个命令就能够正常转换了。
不过,当图片大小不一的时候,还是会出现错误,比如这个:
VDec: vo config request - 800 x 463 (preferred colorspace: Planar 444P)]
VDec: using Planar 444P as output csp (no 0)
Movie-Aspect is 1.33:1 - prescaling to correct movie aspect.
[CROP] Bad position/width/height - cropped area outside of the original!
FATAL: Cannot initialize video driver.
mencoder转变源尺寸的东西我不熟悉,试了一些参数都不行,刚想放弃,从[这里](http://ubuntuforums.org/showthread.php?t=573006&page=2)发现有images2mpg这个好东西。
images2mpg是在kipi-plugins这个包里(属于kde桌面下的插件),需要安装imagemagic等包,如果提示:
Can't find ppmtoy4m, please install it or check -M parameter
这是缺少包mjpegtools,如果提示找不到ogg123,那是缺少包vorbis-tools。images2mpg就是利用这些包完成图片转换、压缩视频等工作的一个脚本。可以这样用:
images2mpg -o mzj.avi -t 4 -d 1 -S 420mpeg2 -M /usr/bin/ -i ???.jpg
-t 4
是淡入淡出的效果,4对应的时间消耗在帮助里面,约1秒-d 1
是每张图片停留1秒,很遗憾这个参数不能用小数-S 420mpeg2
指定mpeg2压缩方式-M /usr/bin/
指定mjpegtools的可执行文件位置,不知怎地images2mpg自己不会到/usr/bin
下找-i ???.jpg
是源文件,必须放在最后
转换结果很贴心,图片自动都按长、短边缩放到了视频大小,空白的地方是黑色,淡入淡出效果也还能接受,就是转换速度有些慢。
有了这个素材,再进行添加声音、分段设置间隔时间等操作就都能够很简单的用mencoder完成了。附上一个视频片段合并,并且引入外部声音的例子:
mencoder -audiofile mzj.mp3 -ovc xvid -xvidencopts bitrate=800 -vf harddup -idx -oac copy -o mzj.avi mzj_1.avi mzj_2.avi
不过这样声音在播放的时候会重复,如果合并完再加声音就没事了。
在Windows下可以用AviSynth来做,不过估计你不用Windows吧 😀