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也许真不是一个好的截图工具。
mplayer+ffmpeg 组合截图的更多相关文章
- C# 使用ffmpeg视频截图
<appSettings> <add key="ffmpeg" value="E:\ffmpeg\ffmpeg-20141012-git-20df026 ...
- bash shell,调用ffmpeg定期截图
#!/bin/bash #获取当前目录中所有m3u8文件,并 var=$(ls |grep '.m3u8'|cut -d '.' -f1) #死循环 = ] do #循环每个文件 for stream ...
- IIS网站调用FFMPEG执行截图命令失败的原因(暂时记录)
之前有个功能是用户上传视频后,网站对其进行截图处理.功能采用FFMPEG操作,在本机新建一个小程序进行调试时是没有问题的. 可功能原封不动挪到项目里,截图竟然失败了,于是开始排查. 期初以为是参数设置 ...
- ffmpeg视频截图命令
ffmpeg.exe -i xxx.mp4 -y -f image2 -t 2 -s 64*320 xxx.jpg
- 今天写一些 有关iOS 多图片组合 成一张图片的问题。保持原像素不变
1.要求:服务器给一张图片模板,要在模版上镂空,然后添加一些别的图片,然后组合成一张图,这个模版的像素 不是固定的,有可能比 当前手机屏幕大.所以,在组合截图的时候,有一定的要求. 贴代码: /** ...
- [转载]FFmpeg完美入门[3] - FFmpeg功能及使用说明
1 ffplay对多媒体的支持能力验证 一.视频3gp 177X144 支持播放,在windows下播放正常,但是在linux下面偶有BUG 如果发现画面无法显示而声音可以播放的情况下可以试着切换全屏 ...
- vs2012 MinGW编译ffmpeg 出现libavdevice/avdevice.c(38) : error C2059: 语法错误:“.”
利用vs2012编译ffmpeg出现以下错误: libavdevice/avdevice.c(38) : error C2059: 语法错误:“.” libavdevice/avdevice.c(40 ...
- .net视频截图功能,没测试
/// <summary> /// @从视频文件截图,生成在视频文件所在文件夹 /// 在Web.Config 中需要两个前置配置项: /// 1.ffmpeg.exe文件的路径 /// ...
- fedora安装ep,forge,fusion等第三方软件库
fedora安装ep,forge,fusion等第三方软件库 官方的发行版 抛弃了有 版权争议的 软件, 特别是 包括很多第三方的 多媒体软件, 如播放 mp3, flv等的软件 解码器 这就要靠 使 ...
随机推荐
- delphi文件操作(比较全)
Delphi中默认有input和output两个文件变量,使用可以不用定义,直接使用. 但: input:只读.output:只写.用时注意以免引起异常. 文件是由文件名标识的一组数据的集合,文件通常 ...
- C# 获得设备usb信息
原文:C# 获得设备usb信息 本文告诉大家如何获得设备的usb来进行判断是否有哪些usb和找不到usb可能是什么. 需要在项目右击引用,点击程序集,搜索 System.Management 然后安装 ...
- Win8Metro(C#)数字图像处理--2.27图像加法运算
原文:Win8Metro(C#)数字图像处理--2.27图像加法运算 [函数名称] 图像加法函数AddProcess(WriteableBitmap src, WriteableBitmap a ...
- C#最简单的文本加密
#region AES加密 public static byte[] TextEncrypt(string content, string secretKey) { byte[] data = Enc ...
- WPF应用程序如何重启当前的Application
// Restart current process Method 1 System.Windows.Forms.Application.Restart(); Application.Current. ...
- 安卓环境下,通过QT调用jar包
在安卓上,许多第三方工具都提供jar包.qt可以通过jni来调用jar包.本文通过一个例子,说明安卓上QT调用jar的方式. 工具/原料 qt android jar包 jar包准备 1 ja ...
- QString之simplified()用于读取数据、规范数据,非常方便
在工程项目开发中,遇到这么个问题:手工计入文件中的数据,每行有三个,前两个是数字,最后一个是标识,现在把这3个数据提取出来. 一提取就出现问题了:由于手工导入,数据间使用空白间隔,有可能是一个空格,有 ...
- 从Java和JavaScript来学习Haskell和Groovy
直击现场 记得刚接触计算机的时候,我就受到了两个非常巨大的错误观念的影响,这个观念最初是来自于老师的传授还是学长的教诲已经记不清了,但是直到我工作几年以后,才慢慢有了实际的体会: 学习和使用什么编程语 ...
- QTableWidget和 QTableView翻页效果(准确计算Scroll,然后使用setSliderPosition函数)
以QTableView举例,QTableWidget使用相同 int CQTTableViewPageSwitch::pageCount(QTableView *p)//QTableView 总页 ...
- 用代码关闭冰刃(IceSword)
(*冰刃这个系统分析工具以前还没用过.这样高级的工具,用结束进程的方式就不试了.按手工关闭的流程实现.首先是通过遍历当前进程,确定冰刃进程的主窗体:然后发送WM_CLOSE关闭主窗体.当关闭对话框出现 ...