[ffmpeg]使用ffmpeg快速生成视频截图
1
|
ffmpeg -i input.mkv -ss 00:10:00 -f image2 output.jpg |
但是这个命令会花费相当长的时间. 对一个清晰的或者较大的视频文件进行操作, 会花费半分钟以上. 截图的时间越往后, 花费的时间也越长. 更为悲剧的是, 我的Nginx服务器会在等待15s之后返回 "504 Bad Gateway" 的错误, 尽管后台的截图操作仍然在进行中! 这真的不能忍受, 而且会给用户带来不好的体验. 试着上网搜了一下解决方案, 看到了博客 [1] . 大意是说, 出现这种情况的原因是由于参数的位置放置不正确造成的 "-ss" 要放在第一个参数位置. 调整它们的位置之后我再次尝试 ( test1.flv是一个h264编码的高清视频, 总时长为"00:04:11.37", 命令中 "-ss 00:02:06" 相当于在总长度的一半处截图) :
1
|
$ time ffmpeg -ss 00:02:06 -i test1.flv -f image2 -y test1.jpg |
奇迹出现了, 这一次用时不超过一秒钟:
1
2
3
|
real 0m0.595s user 0m0.416s sys 0m0.092s |
真的是大大缩短了截图时间!!.
至于原因是什么, 我也搞不懂, 也许是像 [1] 中所说的: "可能是ffmpeg看到第一个参数为 -ss的时候,马上跳转到时间线为指定的地方然后再打开视频文件进行处理,而如果最后看到的参数是-ss,先打开视频,然后慢慢往后遍历,直到遍历到时间 为指定处. 通过观察ffmpeg的输出发现,实际处理的时候几乎就是这样。"
热门文章推荐
- [FFmpeg]ffmpeg各类参数说明与使用示例
- [FFmpeg]ffmpeg命令参数详解(帮助说明)强大所有参数
- [ffmpeg]FFmpeg参数命令及用法整理(很全面详细)
- [FFmpeg]图文介绍windows下实现编译ffmpeg工程的详细步骤
- [ffmpeg]ffmpeg使用参数的中文说明
- [ffmpeg]如何使用ffmpeg下载分段并加密的m3u8视频流
- [FFmpeg]php下用ffmpeg扩展实现视频转换截图
- [FFmpeg]ffmpeg支持的格式全解析