小Q的博客

  • 首页
  • net编程
    • 产品和框架
    • 开发实例
    • 经验技巧
    • 开源组件
  • wp独立站
  • 自媒体
  • 日记本
  • 工具箱
每个程序员,都应该有一个自己的博客站
  1. 首页
  2. net编程
  3. 经验技巧
  4. 正文

ffmpeg教程 论参数顺序的重要性,性能相差千里

2023年4月19日 2127点热度 0人点赞 0条评论

最近在用ffmpeg工具生成视频文件截图的时候,遇到一个问题。生成第3秒的截图很快,生成第30分钟的截图非常慢。同样的代码只是时间不同,为啥相差这多么呢?后来网上找了资料才解决这个问题,原来和参数顺序有关。

 

我们在拼接参数的时候,都习惯把-i放在最前面第一个参数,-ss这个参数是截取第几秒的视频图片。这2个参数互换下,把-ss放在首位,再生成会发现截取第30分钟和第3秒的耗时相差无几。

List<string> listP = new List<string>();
listP.Add("-ss");
listP.Add(timePoint.ToString());
listP.Add("-i");
listP.Add(@"""" + mediaFi.FullName + @"""");
listP.Add("-f image2 -vframes 1");
listP.Add(@"""" + imageFile + @"""");

 

奇怪不?只是调整了参数顺序,性能就相差千里。合理的解释就是如果-i在前、-ss在后,相当于ffmpeg循环查找截屏时间点,找到了就截取,如果文件很大,有几个G就会很慢;如果-ss放在前面,直接告诉ffmpeg截屏时间点。

 

相关阅读

ffmpeg教程 3.音视频处理,常用操作都在这里

ffmpeg教程 如何从视频中提取音频文件?

标签: ffmpeg教程 参数顺序 视频截图
最后更新:2023年4月19日

小Q

80后中年不油腻大叔,喜欢编写代码、打羽毛球、做木制玩具。目前定居浙江杭州

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

COPYRIGHT © 2022 小Q的博客. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

浙ICP备2022019157号-2