提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
最近在搞一个项目,我需要向AI提供视频帧数,本来一开始摄像头是H.264的编码,我直接复制流推到AI层去推理,然后需要将事件回溯成30秒的视频截取。结果摄像头换成了HEVC编码,截取的视频不能在网页直接播放(需要JS实现调用硬解码)。一开始的方案是ffmpeg直接将HEVC转成H.264结果因为事务巨多CPU占用量过大,导致影响到了推理,因为本身选用的模型+杂七杂八的业务逻辑也要占用大量的CPU资源,所以经过研究把ffmpeg和nvcodec结合起来来平衡设备性能,算是解决了这个问题吧。
一、先安装CUDA+NVCODEC
这两个是前提条件,我在之前的文章里已经说明了具体步骤,有需要的请移步文章。
opencv+nvcodec实现视频硬解码
二、编译带NVCODEC的FFMPEG
这里使用的ffmpeg版本是4.4.2,之前也有尝试过编译5.0.1,本身没有什么错误,但是和我的opencv-4.5.1合并编译遇到了很多错误,可能是这个版本太新的缘故,所以就选择了4.4.2这个版本,实测没有任何问题,至少可以满足我的需求了。