mplayer+ffmpeg 组合截图

mplayer截图的优点:对于一个时长很长的视频,可以任意指定一个时间点截图,mplayer会直接跳到这个时间点开始解码截图;

                    缺点:由于是直接跳到指定的时间点,也就是直接跳过了之前的帧,这样解码出来的截图有时候难免会出现马赛克、灰白等现象。

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也许真不是一个好的截图工具。

原文地址:https://www.cnblogs.com/itblog/p/7236649.html