NVIDIA CUVID硬件解码 - cuvidCreateVideoSource() 捕捉rtsp流

        写这篇文章是应为之前的网上很多文章分析:

        cuvidCreateVideoSource( )这个函数不支持一些视频流:rtsp类型过来的视频信号。

        在NVIDIA的Decode实例中使用的是本地的视频文件:1080.246,720.mp4等视频文件。创建视频源用的是本地文件。      

       调试开发环境:

        1,Jetson TX1 上安装live555作为视频服务器。                                

        2,台式机带有GT1050 ti的显卡。ubunut 16.04。点播视频流H264格式。        

        开始调试尝试了ffmpeg + cuvid的方案(ffmpeg代码没时间仔细研究),没有成功。后来找了几篇文章在网上可以使用opencv中的使用。opencv可以直接通过VideoCapture这个类来完成rtsp数据协议解析:          

        cv::Ptr<cv::cudacodec::VideoReader> d_reader = cv::cudacodec::createVideoReader(fname);      

         随后跟踪代码:

         Ptr<VideoReader> cv::cudacodec::createVideoReader(const String& filename)

         {    

             CV_Assert( !filename.empty() );  

             Ptr<VideoSource> videoSource;  

             try    {      

                videoSource.reset(new CuvidVideoSource(filename));  

             }    catch (...)  

            {        

                Ptr<RawVideoSource> source(new FFmpegVideoSource(filename));        

                videoSource.reset(new RawVideoSourceWrapper(source));   

            }    

           return makePtr<VideoReaderImpl>(videoSource);

       }        

        这个函数在cudacodec::命名空间下,调用了两个函数,一个是try语句,还有一个catch。CuvidVideoSource不成功,然后捕捉执行FFmpegVideoSource。      

        看下CuvidVideoSource函数,最后执行:CUresult cuRes = cuvidCreateVideoSource(&videoSource_, fname.c_str(), &params);        

        这个cuvidCreateVideoSource函数在NIVIDA的cuda安装包中的一个动态库,没有给源码,给了文档和demo。这里没有看明白可以仔细看一下传入的参数,字符串描述了不同的视频源。可以是本地文件比如:/media/test/1080.264文件,也可以是rtsp://xxx.xxx.xxx.xxx/test/1080.264。这样分析下来这个cuda安装包中的函数实现了简单的rtsp协议,并且可以解析网络视频流。      

      不用使用额外任何第三方库,只用opencv就可以做解码数据流的功能。最后不得不感叹一下opencv确实一款不折不扣的好软件,关键还是开源的。通过nivida-smi查看GPU在编解码时候使用资源的情况。

      贴上demo效果,可以通过nivida-smi查看GPU消耗的资源。

评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值