视频解码库CUVID流程

论坛 期权论坛 脚本     
匿名网站用户   2020-12-20 09:59   11   0

视频解码库CUVID

CUVID是基于CUDA的视频解码库,利用CUVID进行解码,主要包括以下四个步骤:

1.解析视频数据文件

2.在GPU端解码

3.转换解码后的数据(YUV420、NV12 ---> RGBA)

4.将RGBA数据显示出来

下图为利用CUVID解码的伪代码示意图,其中VideoSource用来解析视频数据文件,VideoParser用来解码数据。

VideoSource的回调函数HandleVideoData(),当VideoSource的状态设置为Started时,开始解析视频文件,并创建VideoParser,解码数据。

VideoParser的回调函数:

HandleVideoSequence() 创建解码器或重设解码器

HandlePictureDecode() 解码每帧视频数据

HandlePictureDisplay() 转换,处理,显示解码后的数据

OpenCV中VideoReader_GPU可以方便地利用GPU读取视频文件,加速解码过程,但OpenCV中VideoReader_GPU无法读取rtsp视频流数据。

这是因为CUVID中CuvideoSource不支持rtsp视频流数据,不能由rtsp地址创建VideoSource

三、CUVID解码rtsp视频流

基本思路:跳过VideoSource模块,利用其他方式解析视频数据文件。

基本步骤:

1.利用FFmpeg解析rtsp视频流

2.创建VideoParser

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

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

5.VideoParser解码数据包

其示例伪代码如下图所示

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1136255
帖子:227251
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP