文档章节

使用ffmpeg可以生成视频截图

j
 james_laughing
发布于 2015/09/11 08:53
字数 591
阅读 502
收藏 3

使用ffmpeg可以非常方便的生成视频截图,命令行下的mplayer也可以做视频截图,只不过mplayer在本质上还是调用ffmpeg来实现。ffmpeg 通过指定 -vcodec 参数为 mjpeg,或者指定 -f 参数为 mjpeg时,可以输出 jpg截图,指定 -vcodec参数为png,或者指定输出文件扩展名为png,可输出png截图。如果参数指定不当,会导致ffmpeg处理速度非常缓慢,以我本机影片《Revolution OS》中文名《操作系统的革命》为例。

截取视频的第5秒。通过 -ss 参数指定

 

# 输出 jpg  
ffmpeg -i RevolutionOS.rmvb sample.jpg -ss 00:00:05  -r 1 -vframes 1 -an -vcodec mjpeg 
  # 输出 png  
ffmpeg -i RevolutionOS.rmvb sample.png -ss 00:00:05  -r 1 -vframes 1 -an -vcodec mjpeg

 

大概等待1秒钟,生成的jpg图像为19K,而png格式的图像为222k,大了很多倍,而质量上,并没有太大的差别,所以我决定生成jpg格式。

好现在抓取时间为1分05秒处的图片:

 

ffmpeg -i RevolutionOS.rmvb sample.jpg -ss 00:01:05  -r 1 -vframes 1 -an -vcodec mjpeg

 

几乎等待了近10秒钟,实际上,如果你抓取50分钟处的图像,可能要等上十几分钟,而很多网上通用的写法都存在这个问题,所以有的人转而采用mplayer来截屏,这个问题可能是ffmpeg的一个bug,如果你够聪明,调整一下参数 -ss,把这个参数放到第一个位置,马上就可以解决这个问题。

 

# 50分钟处截屏 
ffmpeg -ss 00:50:00  -i RevolutionOS.rmvb sample.jpg  -r 1 -vframes 1 -an -vcodec mjpeg  # 或者使用 -f 参数指定输出的格式为 mjpeg ,效果一样 
ffmpeg -ss 00:50:00  -i RevolutionOS.rmvb sample.jpg  -r 1 -vframes 1 -an -f mjpeg

 

速度快的,几乎不到1秒钟。到底为什么会这样?可能是ffmpeg看到第一个参数为 -ss的时候,马上跳转到时间线为50分钟处然后再打开视频文件进行处理,而如果最后看到的参数是-ss,先打开视频,然后慢慢往后遍历,直到遍历到时间为50分钟处,通过观察ffmpeg的输出发现,实际处理的时候几乎就是这样。

 

原文地址:http://www.kindcent.com/blog/view/ffmpeg-mjpeg

本文转载自:http://blog.csdn.net/xiaochawan/article/details/8804789

j
粉丝 29
博文 455
码字总数 22188
作品 0
广州
私信 提问
ffmpeg + java + window/Liunx 视频截图归纳总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hanimashi/article/details/53026854 本人使用的ffmpeg版本是由翟帅blog提供ffmpeg版本 ,当然也可以最新官网...

wallacefw
2016/11/03
0
0
【Linux】关于ffmpeg的一些常见用法

一、FFmpeg简介 FFmpeg是一款非常快速的视频和音频转换器, 是开源项目 FFmpeg (Fast Forward moving pictures expert group) 的命令行程序。 它可以在任意采样率之间转换,并通过高质量的多相...

踏雪无痕SS
04/24
0
0
最简单的基于FFmpeg的移动端例子:IOS 视频转码器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/leixiaohua1020/article/details/47072673 ===================================================== 最简单的...

雷霄骅
2015/08/01
0
0
C#如何调用ffmpeg并使用他处理视频?

@汪宪博 你好,想跟你请教个问题: 看到您之前在OS上也问过同样的问题,那就是 “C#如何调用ffmpeg并使用他处理视频?” 目前我也是要利用C#调用FFMpeg来实现视频截图和视频分割功能,ffmpe...

xiaoqihaha
2013/04/02
10.6K
7
100行代码实现最简单的基于FFMPEG+SDL的视频播放器

FFMPEG工程浩大,可以参考的书籍又不是很多,因此很多刚学习FFMPEG的人常常感觉到无从下手。我刚接触FFMPEG的时候也感觉不知从何学起。 因此我把自己做项目过程中实现的一个非常简单的视频播...

雷霄骅
2013/09/17
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

Nginx 快速安装详解

一、Nginx Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамбле...

网络小虾米
10分钟前
3
0
技术分享 | slave_relay_log_info 表认知的一些展开

作者:胡呈清 slave_relay_log_info 表是这样的: mysql> select * from mysql.slave_relay_log_info\G *************************** 1. row *************************** Number_of_lin......

爱可生
13分钟前
2
0
nginx配置http访问自动跳转到https

server {listen 80;server_name www.域名.com;rewrite ^(.*) https://$server_name$1 permanent;}server {listen 443;server_name www.域名.com;root /home/www;ssl on;......

很好亦平凡ms
13分钟前
2
0
SpreadJS:一款中国研发的类Excel开发工具,功能涵盖Excel的 95% 以上

Excel 作为一款深受用户喜爱的电子表格工具,借助其直观的界面、出色的计算性能、数据分析和图表,已经成为数据统计领域不可或缺的软件之一。 基于Excel对数据处理与分析的卓越表现,把Excel...

葡萄城技术团队
13分钟前
2
0
用javafx框架tornadofx做了个天气预报的程序

class WeatherApp : App(WeatherView::class)class WeatherView : View("十五天天气预报") { val weatherVM: WeatherViewModel by inject() val controller: WeatherController by......

oschina4cyy
17分钟前
2
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部