[经验] opencv 不同的视频输出以及文件过大的解决方法

举报
~大鱼~ 发表于 2021/05/27 16:31:55 2021/05/27
【摘要】 目录 发现 分析 解决 总结 发现 目前的一个项目需要使用opencv 录制视频,并且将录制的视频上传到我方服务器上,所以,视频的大小直接影响视频分析的时时性,针对这个情况,需要在不同的压缩格式下进行测试,在测试的时候发现,录制1080p的视频,大多分布在300M左右,还有更夸张的1.5G,如下图所示 如果录制12个小时以上,文件会过大,这种方式是不可以接受的 分析 ...

目录

  • 发现
  • 分析
  • 解决
  • 总结

发现

目前的一个项目需要使用opencv 录制视频,并且将录制的视频上传到我方服务器上,所以,视频的大小直接影响视频分析的时时性,针对这个情况,需要在不同的压缩格式下进行测试,在测试的时候发现,录制1080p的视频,大多分布在300M左右,还有更夸张的1.5G,如下图所示

《[经验] opencv 不同的视频输出以及文件过大的解决方法》

如果录制12个小时以上,文件会过大,这种方式是不可以接受的

分析

现在,得知以下因素是直接影响输出文件大小的

  • 录制时长
  • 使用格式
  • FPS
  • 分辨率

在做了大量的实验之后,决定使用MP42的格式,至少目前这个格式是可以接受的

解决

那输出后的文件是否可以在进一步的压缩呢?当然是可以的,这里就要推出神器 ffmpeg ,参考文档 http://wiki.webmproject.org/ffmpeg ,总之ffmpeg 是格式转化和压缩的工具,使用命令行进行转化,这次的目标格式打算转成webm的格式

ffmpeg -i MP42_1535613331.avi -threads 4 -vcodec libvpx-vp9 -cpu-used -8 -crf 10 -qmax 60 -deadline realtime out_3_high.webm
源文件500多M,转出的文件大概10M不到,整体上看来效果也不会太差

大家可以看到参数里面的,cpu-used 相关的,在转化时长大约5分钟的视频,也需要花费大概2.5分钟的时间,而此时cpu基本要占用一半,损耗的资源状态是不可以接受的,最后和团队协商,采用720p的格式

总结

本次主要研究了不同格式下视频输出的大小,并引入了一个新的工具ffmpeg的使用,相关的代码可以参考我的gist
https://gist.github.com/BruceDone/78635b62a550c56a954d2c7c9ac51f32

文章来源: brucedone.com,作者:大鱼的鱼塘,版权归原作者所有,如需转载,请联系作者。

原文链接:brucedone.com/archives/1194

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。