最近在做一个 项目 ,使用opencv的VideoCapture拉流并把帧送进 模型 推理,结果发现VideoCapture本身使用的是cpu的软解码,占用了大量的资源,后来就去研究使用设备本身的硬解码资源去分摊cpu的压力。
Xavier NX 使用OpenCV+GStreamer实现硬解码
NX的硬解码叫NVDEC,硬编码交NVENC,这两个都是专门的硬件去做的,效率比cpu高很多。这里要多说一句,NX是共享内存,就是gpu,vpu和cpu都是一个内存,不像台式机有专用显存,显存与内存数据格式不一样,需要转换(实测0-2ms),不能拿来直接用。NX就没有这个问题,但是这里我们不讨论这么深的问题,感兴趣的可以私下里去研究下。先上个图,这里需要使用jtop看

注意看红框里面的,如果解码器没有用这个就是OFF,旁边的就是编码器,不在这次讨论范围内。
首先你要安装了opencv+gstreamer,具体安装方法我会在另一篇文章里面介绍,这里不多说,直接上代码。这里我们使用官方提供的代码
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删