美文网首页
摄像头RTSP流硬解码

摄像头RTSP流硬解码

作者: 高永峰_GYF | 来源:发表于2019-02-19 09:47 被阅读0次

1. 问题分析

项目中,之前用的是OpenCV对摄像头的RTSP流进行解码。随着时间的推移以及业务摄像头的增加,发现十路流CPU就已经100%啦,很明显解码所占CPU资源较多,导致整个系统处理效率不高,解码成为系统的瓶颈,需要赶紧马上上硬解码才行。

查找资料并验证发现:OpenCV中VideoReader_GPU可以方便地利用GPU读取视频文件加速解码过程,但OpenCV中VideoReader_GPU无法读取rtsp视频流数据。CUVID中CuvideoSource不支持rtsp视频流数据,不能由rtsp地址创建VideoSource

硬解码跟计算机显卡有关,赶紧安装cuda_9.0.176_win10 .exe,然后找相关GUP加速相关厂商提供的加速解决方案Demo(C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.0\3_Imaging\cudaDecodeD3D9

cudaDecodeD3D9 Demo  CUVID中CuvideoSource不支持rtsp视频流数据,不能由rtsp地址创建VideoSource , 利用其他方式解析RTSP流 硬解码基本架构流程

2.硬解码rtsp视频流

基本思路:跳过VideoSource模块,利用其他方式(FFmpeg)解析,我结合。

基本步骤:

1.利用FFmpeg解析rtsp视频流。(结合以上Demo就能够把关键部分抽出来,自己封装成DLL工程,方便后面程序使用)

2.创建VideoParser。

3.利用FFmpeg读取数据包(AVpacket)。

4.将数据包传输到VideoParser(AVpacket ---> CUVIDSOURCEDATAPACKET)。

5.VideoParser解码数据包。

6.转换解码后的数据(NV12 ---> RGBA)。

7.将RGBA数据显示出来。

VideoSource 读取数据包(AVpacket)并转换成 CUVIDSOURCEDATAPACKET    VideoParse 用来解析得到一帧帧的数据。   VideoParser的回调函数:HandleVideoSequence() 创建解码器或重设解码器HandlePictureDecode() 解码每帧视频数据HandlePictureDisplay() 转换,处理,显示解码后的数据。 VideoDecoder 核心的硬件解码功能类,CUVIDDECODECREATEINFO oVideoDecodeCreateInfo_是创建解码信息结构体,CUvideodecoder oDecoder_是最内核的CUDA硬件解码器,VideoParser的解码功能实际上是在CUvideodecoder解码内核上封装实现的。 GPU 转换解码后的数据(NV12 ---> RGBA)--加载转换函数   GPU 转换解码后的数据(NV12 ---> RGBA)--调用转换函数  

3.测试

CPU降下来了,GPU用起来了。

测试发现对H265 H264 都可以成功解码

4.参考 

GPU硬解码---CUVID                            https://www.cnblogs.com/dwdxdy/archive/2013/08/07/3244723.html

CUDA和FFMPEG硬件解码视频流       https://blog.csdn.net/poweroranger/article/details/77845238

ffmpeg NvDecodeD3D9 Demo             http://www.pudn.com/Download/item/id/3275469.html

相关文章

  • 摄像头RTSP流硬解码

    1. 问题分析 项目中,之前用的是OpenCV对摄像头的RTSP流进行解码。随着时间的推移以及业务摄像头的增加,发...

  • RTSP协议视频流页面即时加载方法

    RTSP协议视频流页面即时加载方法 1. 准备RTSP流 在没有摄像头的条件下,可以使用的RTSP视频流经常很难找...

  • 海康、大华IpCamera RTSP地址和格式

    1、新款IP Camera rtsp规则RTSP为取流协议,取到码流后需要解码显示,可以通过VLC播放器或者Eas...

  • iOS 硬解H264

    公司摄像机产品客户端需要添加iOS硬解码,解码原始摄像头数据,适合解码h264的数据!需要的朋友可以参考下,贴上硬解代码

  • iOS FFMpge解码RTSP流

    先看一下需要申明的属性已经引入的头文件 构造方法中初始化FFMpge 如果是读取本地文件则不需要调用avforma...

  • ffmpeg推流下的带宽小试

    测试环境 已经抓流的摄像头 卡口摄像机 rtsp://admin:a1234567@192.168.2.223:5...

  • 有关opencv无法解码网络摄像头rtsp流的解决办法

    问题描述想通过opencv连接网络球机或者其他网络摄像头(海康或者一些山寨摄像头)播放网络摄像头码流RTSP运行过...

  • VLC 视频播放

    VLC 支持 rtsp、rtmp、mp4 、海康摄像头视频流等。 1. 使用cocopods 导入 pod'Mob...

  • SRS回调使用记录

    前言 公司最近在接入摄像头,但是摄像头返回的流地址是rtsp格式的,前端无法直接播放。经过调研后,决定采用ffmp...

  • 视频流读取

    写入 rtsp 视频流 rtsp 读取视频流

网友评论

      本文标题:摄像头RTSP流硬解码

      本文链接:https://www.haomeiwen.com/subject/othzeqtx.html