使用ffmpeg可以生成视频截图
来源:互联网 发布:凡闻科技 知乎 编辑:程序博客网 时间:2024/05/15 17:42
使用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
- 使用ffmpeg可以生成视频截图
- 使用ffmpeg可以生成视频截图
- 使用ffmpeg可以生成视频截图
- 使用ffmpeg快速生成视频截图
- 使用ffmpeg快速生成视频截图
- 使用ffmpeg快速生成视频截图
- php 使用 ffmpeg 转换视频,截图,并生成缩略图
- php 使用 ffmpeg 转换视频,截图,并生成缩略图
- php 使用 ffmpeg 转换视频,截图,并生成缩略图
- ffmpeg 抓取视频截图,生成小图片
- ffmpeg视频生成jpg图片截图(一)
- 使用ffmpeg截取视频(包括截图)
- java使用ffmpeg对视频截图
- Linux下使用ffmpeg对视频截图
- ffmpeg视频截图
- Ffmpeg视频截图代码
- ffmpeg 截图 视频信息
- 使用ffmpeg视频格式转换、视频截图、视频采集、屏幕录制
- JQuery语法总结和注意事项
- oracle数据库性能优化
- java.util.concurrent.CopyOnWriteArraySet
- 浅谈HTTP中Get与Post的区别
- 修改scrollbars的样式
- 使用ffmpeg可以生成视频截图
- P9.Application of Image(1)
- UTF-8
- Android中利用App实现消息推送机制的代码
- 【线段树】【LIS】Another Lis HDU3564 UESTC2010
- bash参考手册之四(shell内建命令)续五
- 话说MVVM
- struts2中传一个数组到action中
- rdlc报表动态生成公共类