缺点:由于是直接跳到指定的时间点,也就是直接跳过了之前的帧,这样解码出来的截图有时候难免会出现马赛克、灰白等现象。
ffmpeg截图的优点: 对于指定的截图时间点,截出的图都相当的清晰,从未有过马赛克与灰白;
缺点: ffmpeg会从视频开始一直解码到指定的时间点,这样如果截图的时间点在视频的末尾,且该视频又相当大,那么ffmepg则会浪费相当多的时间在视频前面解码;
个人则在思考,可否结合两者各自的优点,消除各自的缺点。目前想到的一种方法就是利用mplayer快速的定位功能,将指定时间点左右500毫秒的视频截取下来,供ffmpeg解码。
网上搜索一番后,得出如下两个命令:
1. mplayer截取视频:./mencoder -nosound -ovc lavc -ss 00:50:20 -endpos 1 -o /opt/mplayer/bin/back.rmvb /home/sxp/soft/foot.rmvb
从00:50:20开始,截取1秒钟的视频,放在/opt的目录下;
2. ffmpeg截图:./ffmpeg -i /opt/mplayer/bin/back.rmvb -y -f image2 -ss 00:00:01 -t 0.001 -s 352x240 sxp.jpg
试验了一下,mencoder截取视频的时候,大概1秒完成。当然,如果截取的视频长度越长的话,就不止1秒了;
今天在公司搞mplayer,发现对于123.456s这种数字格式的,mplayer会在这个时间后大概7秒处截图;如果换成123整数格式的,就没问题;
但如果换成时分秒.毫秒,有时候可以,有时候又嗝屁,也是滞后7秒。
mplayer也许真不是一个好的截图工具。