视频处理方法、装置及系统与流程

文档序号:24347636发布日期:2021-03-19 12:31阅读:110来源:国知局
视频处理方法、装置及系统与流程

本发明涉及视频处理技术领域,尤其涉及一种视频处理方法、装置及系统。



背景技术:

一般监控相机、全景相机、vr相机等均采用rtsp或者rtmp提供视频流服务。

使用浏览器播放rtsp视频流时,需要手动安装插件。由于插件技术会带来安装、加载、安全性、兼容性等一系列问题,主流浏览器已经不再支持。目前,只有微软的ie仍在支持插件,但从2015年开始,微软也已经转向html5,新的浏览器edge已经不再支持插件。如果ie退役,插件也将不再受到支持。

浏览器对rtmp协议支持较好,但rtmp使用tcp传输,延迟较大,一般为1-3秒,而且容易产生累积延迟。另外,rtmp为adobe私有协议,adobe已经停止更新,主流浏览器也已默认不再支持。

相机提供的分辨率越来越高,全景相机更是可以达到亿级像素,对于4k及以上的超高清视频,如何提高视频处理性能,提高帧率,降低延迟,将是系统设计者必须解决的问题。



技术实现要素:

本发明目的在于公开一种视频处理方法、装置及系统,以降低延迟、并支持浏览器无插件播放。

为达上述目的,本发明公开一种视频处理方法,包括:

通过pci-e接口从摄像头获取原始视频帧;

在gpu中基于opengl(opengraphicslibrary,开放图形库)和cuda(computeunifieddevicearchitecture)接口对所述原始视频帧进行预处理,形成待编码视频帧;

将待编码视频帧送入硬件编码输入缓冲区,进行h.264编码;

从硬件编码输出缓冲区获取h.264编码视频帧,通过rtp协议发送到webrtc服务器;

客户端浏览器打开web页面,连接到webrtc服务器播放视频。

为达上述目的,本发明还公开一种视频处理装置,包括:

通过pci-e接口从摄像头获取原始视频帧的视频采集模块;

预处理模块,基于opengl和cuda接口对所述原始视频帧进行预处理,形成待编码视频帧;

硬件编码模块,用于进行h.264编码并设有硬件编码输入缓冲区接收待编码视频帧,且设有硬件编码输出缓冲区以保存编码后的视频帧;

视频输出模块,通过rtp协议向webrtc服务器发送h.264编码视频帧;

用于协调和调度所述视频采集模块、预处理模块、硬件编码模块和视频输出模块的调度模块。

为达上述目的,本发明还公开一种视频处理系统,包括:

连接摄像头的如上所述的视频处理装置;

用于提供视频流服务并连接所述视频处理装置的webrtc服务器;以及

用于提供web页面的web服务器,所述web页面包含js脚本,所述js脚本中指定rtp挂载点的流id,以供客户端浏览器根据该流id连接到所述webrtc服务器以播放视频。

本发明具有以下有益效果:

本发明使用了pci-e技术、opengl技术、cuda技术、硬件编码技术、webrtc技术以视频帧为单位,使得延迟最小。优选地,视频采集、视频预处理与视频输出分别采用同步的并行线程,可以进一步降低延迟。所述预处理包括:颜色变换、旋转变换、图像缩放、gamma校正和3d格式处理中的至少一种,其中,旋转变换、图像缩放和gamma校正可采用opengl技术一次性完成。

下面将参照附图,对本发明作进一步详细的说明。

附图说明

构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为本发明实施例中低延迟的视频处理方法部分流程图;

图2为本发明实施例中低延迟的视频处理方法部分流程图;

图3为本发明实施例中低延迟的视频传输系统实施例的结构示意图。

具体实施方式

以下结合附图对本发明的实施例进行详细说明,但是本发明可以由权利要求限定和覆盖的多种不同方式实施。

实施例1

如图1所示,本实施例低延迟的视频处理方法,包括以下步骤:

步骤101:通过pci-e接口从摄像头获取原始视频帧。原始视频帧,可以是8位bayer视频数据,也可以是24位rgb视频数据。原始视频帧可以是单目视频数据,也可以是双目立体视频数据。单目视频数据包含一个视频缓冲区,双目立体视频数据包含2个视频缓冲区。

视频采集使用独立的采集线程完成,与后续视频预处理可以并行执行。

将双目立体视频数据的2路视频分别称为第1路视频、第2路视频。单目视频数据只有第1路视频。

首先对第1路视频进行预处理。如果原始视频帧为双目立体视频,则对第2路视频进行预处理。

步骤102:判断第1路视频是否为bayer格式,如果是,进入步骤103,如果否,进入步骤104。

步骤103:将第1路视频8位bayer数据传到gpu,在gpu中将该数据转换为32位rgba数据。

步骤104:使用opengl技术,对第1路视频数据进行旋转变换、图像缩放和gamma校正。这些变换通过顶点着色器(vertexshader)、片段着色器(fragmentshader)和纹理贴图等技术实现。

可选的,opengl变换的输入数据可以是步骤101中的rgb数据,也可以是步骤103中的rgba数据。输出数据为32位rbga数据。

步骤105:判断原始视频帧是否为双目立体视频,如果是,进入步骤106,如果否,进入步骤110。

步骤106:判断第2路视频是否为bayer格式,如果是,进入步骤107,如果否,进入步骤108。

步骤107:将第2路视频8位bayer数据传到gpu,在gpu中将该数据转换为32位rgba数据。

步骤108:使用opengl技术,对第2路视频数据进行旋转变换、图像缩放和gamma校正。

步骤109:将步骤104变换后第1路视频数据和步骤108变换后第2路视频数据按照上下3d格式合并到一个缓冲区中。

步骤110:将待编码视频帧送入硬件编码输入缓冲区。其中,步骤104变换后的单目视频或者步骤109变换后的3d视频均为32位rgba数据,为待编码视频帧,以供后续进行h.264编码。

本实施例中,首创的将opengl用于实现视频数据编码前的预处理,相比于传统的opencv,opengl性能更强,控制更灵活,实现也更复杂(也使得现有的opengl往往仅用于播放器的渲染)。例如,本发明如上所述的有些变换用opengl直接使用着色器语言可以实现,opencv就无能为力;旋转变换和gamma变换也可以在着色器语言中实现,一次性完成。而在opencv中,即使部分简单功能,往往也需要单独的步骤才能实现。

优选地,本实施例视频编码采用非阻塞方式,不用等待编码完成即可返回。

本实施例可以由低延迟的视频处理装置实现后续传输,参见图2,包括以下步骤:

步骤201:从硬件编码输出缓冲区获取h.264编码视频帧。可选的,h.264编码视频帧采用nal格式封装。

步骤202:将编码视频帧通过rtp协议发送到webrtc服务器。其中,在通过rtp协议发送到webrtc服务器之前,将nal格式的h.264编码视频帧封装为rtp包。

rtp协议基于udp传输协议。rtp包大小需要小于mtu(maximumtransmissionunit,最大传输单元)值。

本实施例中,webrtc服务器,用于提供h.264视频流服务。在webrtc服务器的配置文件中,可预先定义rtp挂载点,包括流id、视频端口、视频编码格式、视频载荷类型。h.264编码视频帧,其发送目的地址即为webrtc服务器的挂载点视频端口。其中:

挂载点中的视频端口,用于接收低延迟的视频传输装置发送的h.264视频帧。

挂载点中的流id,用于客户端浏览器通过该id读取webrtc对应的h.264视频流。

实施例2

本实施例提供一种视频处理装置,包括:

通过pci-e接口从摄像头获取原始视频帧的视频采集模块。

预处理模块,基于opengl和cuda接口对所述原始视频帧进行预处理,形成待编码视频帧。

硬件编码模块,用于进行h.264编码并设有硬件编码输入缓冲区接收待编码视频帧,且设有硬件编码输出缓冲区以保存编码后的视频帧。

视频输出模块,通过rtp协议向webrtc服务器发送h.264编码视频帧。

用于协调和调度所述视频采集模块、预处理模块、硬件编码模块和视频输出模块的调度模块。

优选地,与上述方法相对应,本实施例所述调度模块采用视频采集、视频预处理与视频输出同步的并行线程;所述预处理采用opengl和cuda技术在gpu中完成,包括:颜色变换、旋转变换、图像缩放、gamma校正和3d格式处理中的至少一种,其中旋转变换、图像缩放和gamma校正可以使用opengl技术一次性完成;所述颜色变换包括:判断所述原始视频帧是否为8位的bayer视频数据,如果是,将bayer视频数据转换为32位rgba数据;所述3d格式处理包括:根据配置文件判断所连接摄像头是否为双目摄像头,如果是,分配两路视频缓冲区分别对相对应的摄像头的原始视频帧进行预处理,最后将两路视频缓冲区中处理过的视频数据按照上下3d格式合并到一个缓冲区中输送给所述硬件编码输入缓冲区;所述配置文件还用于标识相匹配摄像头输出的视频数据格式、以及还用于配置发送h.264编码视频帧的目的地址,所述目的地址为所述webrtc服务器的挂载点视频端口。

实施例3

本实施例公开一种视频处理系统,参照图3,包括:

摄像头;

连接所述的摄像头的如上述实施例所述的视频处理装置401;

用于提供视频流服务并连接所述视频处理装置的webrtc服务器402;以及

用于提供web页面的web服务器403,所述web页面包含js脚本,所述js脚本中指定rtp挂载点的流id,以供客户端浏览器404根据该流id连接到所述webrtc服务器以播放视频。

优选地,本实施例提供web应用服务的web服务器需要创建web站点或者虚拟目录。web应用目录中,至少包含一个如上所述的web页面。优选地,在js脚本中还需要指定webrtc服务器地址,包括ip和端口。该web服务器,与webrtc服务器可以使用同一台物理服务器,也可以使用不同的物理服务器。

客户端浏览器404:用于观看h.264视频流。在浏览器中打开web服务器部署的web页面,浏览器执行js脚本,根据js中指定的webrtc服务器地址和流id,建立与webrtc服务器的连接,显示视频流。

本实施例浏览器必须支持webrtc技术。webrtc是html5标准中的一项新技术,无需安装插件即可播放实时视频,当前主流浏览器googlechrome和firefox均支持该技术。通常,浏览器自带默认stunserver地址。如果无法访问,需人工架设,并在webrtc配置文件和web应用的js中指定。

本实施例公网实测结果:双目立体相机,每路采集分辨率4096*5120,格式为8位bayer,缩放和裁剪大小为3840*1920,合成上下3d格式后为3840*3840,编码为h.264,比特率16mbps,从视频捕获到视频播放,总延迟仅为300毫秒。

综上,本发明上述各实施例所分别公开的视频处理方法、装置及系统,使用了pci-e技术、opengl技术、cuda技术、硬件编码技术、webrtc技术以视频帧为单位,使得延迟最小。优选地,视频采集、视频预处理与视频输出分别采用同步的并行线程,可以进一步降低延迟。所述预处理包括:颜色变换、旋转变换、图像缩放、gamma校正和3d格式处理中的至少一种,其中旋转变换、图像缩放和gamma校正可采用opengl技术一次性完成。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1