(12)发明专利申请
(10)申请公布号 CN 111064985 A(43)申请公布日 2020.04.24
(21)申请号 201811203090.9(22)申请日 2018.10.16
(71)申请人 北京凌宇智控科技有限公司
地址 100092 北京市海淀区永泰庄北路1号
中关村东升国际创业园1号楼2层优投空间(72)发明人 冉瑞元 张佳宁 张道宁 (74)专利代理机构 北京汲智翼成知识产权代理
事务所(普通合伙) 11381
代理人 陈曦 陈丽(51)Int.Cl.
H04N 21/431(2011.01)H04N 21/81(2011.01)H04N 21/41(2011.01)H04N 21/443(2011.01)
权利要求书2页 说明书8页 附图2页
H04N 21/4363(2011.01)
(54)发明名称
一种实现视频串流的系统、方法及装置(57)摘要
本发明公开了一种实现视频串流的方法及系统,其中,该方法包括如下步骤:获取姿态数据和定位数据;将获取的姿态数据和定位数据发送给VR应用进行画面渲染;获取渲染好的画面,发送给VR设备进行显示。该方法使得负责运行VR应用的是PC机,VR设备要负责的仅仅是画面显示,可利用PC的画面处理能力使VR设备上得到优质的画面。
CN 111064985 ACN 111064985 A
权 利 要 求 书
1/2页
1.一种实现视频串流的系统,其特征在于包括终端和VR设备;其中,所述终端上安装有应用平台软件和串流软件的服务端;所述VR设备上安装有串流软件的客户端,所述串流软件的客户端将姿态数据发送给所述终端上串流软件的服务端;所述串流软件的服务端将所述姿态数据发送给所述应用平台软件,由所述应用平台软件渲染出画面。
2.一种实现视频串流的系统,其特征在于包括终端、VR设备和定位追踪装置;其中,所述终端上安装有应用平台软件和串流软件的服务端;所述定位追踪装置用于采集定位数据并发送给VR设备;所述VR设备上安装有串流软件的客户端,所述串流软件的客户端将姿态数据和所述定位数据发送给所述终端上串流软件的服务端;所述串流软件的服务端将所述姿态数据和所述定位数据发送给所述应用平台软件,由所述应用平台软件渲染出画面。
3.如权利要求1或2所述的实现视频串流的系统,其特征在于:所述串流软件的服务端包括控制界面和server驱动,当所述应用平台软件在终端上启动时,加载所述server驱动。
4.如权利要求1或2所述的实现视频串流的系统,其特征在于:所述串流软件的服务端获取渲染好的画面,发送给串流软件的客户端;所述串流软件的客户端将画面发送给所述VR设备进行显示。
5.如权利要求1或2所述的实现视频串流的系统,其特征在于:所述串流软件的客户端通过无线方式将姿态数据和/或定位数据发送给串流软件的服务端,所述无线方式为5G。
6.一种实现视频串流的方法,其特征在于包括如下步骤:获取VR设备的姿态数据;
将获取的姿态数据发送给VR应用进行画面渲染;获取渲染好的画面,发送给VR设备进行显示。7.如权利要求6所述的实现视频串流的方法,其特征在于所述获取VR设备的姿态数据,包括如下步骤:
安装在VR设备上的串流软件的客户端获取VR设备的姿态数据;
安装在终端上的串流软件服务端获取所述串流软件的客户端发送的所述VR设备的姿态数据。
8.如权利要求6所述的实现视频串流的方法,其特征在于所述将获取的姿态数据发送给VR应用进行画面渲染,包括如下步骤:
将获取的姿态数据发送给数据接口,经数据接口传送给VR应用;根据VR应用得到的姿态数据以及应用逻辑,通过应用引擎进行画面的渲染;将应用引擎渲染好的数据存储在显卡的显存中。9.一种实现视频串流的方法,其特征在于包括如下步骤:获取姿态数据和定位数据;
将获取的姿态数据和定位数据发送给VR应用进行画面渲染;获取渲染好的画面,发送给VR设备进行显示。10.如权利要求9所述的实现视频串流的方法,其特征在于所述获取姿态数据和定位数据,包括如下步骤:
2
CN 111064985 A
权 利 要 求 书
2/2页
通过定位追踪装置采集用户的定位数据和/或姿态数据;
将定位追踪装置采集的定位数据和/或姿态数据发送到VR设备上;串流软件服务端获取VR设备通过UDP发送的所述定位数据和姿态数据。11.如权利要求9所述的实现视频串流的方法,其特征在于所述将获取的姿态数据和定位数据发送给VR应用进行画面渲染,包括如下步骤:
将串流软件的服务端获取的姿态数据和定位数据发送给数据接口,经数据接口传送给VR应用;
根据VR应用得到的定位数据、姿态数据以及应用逻辑,通过应用引擎进行画面的渲染;将应用引擎渲染好的数据存储在显卡的显存中。12.如权利要求6或9所述的实现视频串流的方法,其特征在于所述获取渲染好的画面,发送给VR设备进行显示,包括如下步骤:
获取渲染好的画面对应的纹理数据,将一帧画面编码成多个数据包;将编码的多个数据包发送给VR设备进行解码并显示。13.如权利要求6或9所述的实现视频串流的方法,其特征在于还包括获取控制信息,将获取的控制信息发送给VR应用进行画面渲染;
其中,所述控制信息来自于VR设备或者来自于定位追踪装置。14.一种实现视频串流的装置,包括处理器及存储器,所述处理器用于执行存储器中存储的实现视频串流的程序,以实现如权利要求6或8所述的实现视频串流的方法。
3
CN 111064985 A
说 明 书
一种实现视频串流的系统、方法及装置
1/8页
技术领域
[0001]本发明涉及一种实现视频串流的系统;同时涉及该系统实现的视频串流方法,属于虚拟现实技术领域。
背景技术
[0002]视频串流(video streaming)是指将一连串的视频数据压缩之后分段传送,在网络上即时传输影音以供观赏的视频播放技术。曾经流行的QuickTime Player、Real Player等播放器就采用了视频串流技术。目前,随着网络游戏、游戏直播等产业的深入发展,视频串流得到了越来越广的应用。[0003]虚拟现实(Virtual Reality,简称VR)是指采用计算机技术为核心,利用现代高科技手段生成一种虚拟环境,用户借助特殊的输入/输出设备,通过视觉、听觉和触觉等获得与真实世界相同的感受。虚拟现实技术是一种综合应用计算机图形学、人机接口技术、传感器技术以及人工智能等技术,制造逼真的人工模拟环境,并能有效地模拟人在自然环境中的各种感知的高级的人机交互技术。
[0004]头戴式显示器(简称头显)是用于虚拟现实显示的核心设备之一,主要分为三类:第一类是PC头显,需要用数据线连接头显和PC,此种头显可以在PC上进行数据处理并显示头显上的画面;第二类是一体式头显,它本质上是一个具有运行存储能力、显示能力和定位能力的VR设备,无需外接设备,因此也称为VR一体机;第三类是移动式头显,通过一个VR盒子配合移动终端使用。
[0005]对于一体式头显和移动式头显通常用户只能使用头显配套的应用,这些应用通过预装的方式安装在头显和手机中,但是无法使用只能在PC头显上使用的应用,即不能使用在PC端进行数据处理的应用,限制了其应用范围。发明内容
[0006]针对现有技术的不足,本发明所要解决的首要技术问题在于提供一种实现视频串流的系统。
[0007]本发明所要解决的另一技术问题在于提供一种实现视频串流的方法。[0008]为实现上述发明目的,本发明采用下述的技术方案:[0009]根据本发明实施例的第一方面,提供一种实现视频串流的系统,包括终端和VR设备;
[0010]其中,所述终端上安装有应用平台软件和串流软件的服务端;[0011]所述VR设备上安装有串流软件的客户端,所述串流软件的客户端将姿态数据发送给所述终端上串流软件的服务端;所述串流软件的服务端将姿态数据发送给所述应用平台软件,由所述应用平台软件渲染出画面。[0012]根据本发明实施例的第二方面,提供一种实现视频串流的系统,包括终端、VR设备和定位追踪装置;
4
CN 111064985 A[0013]
说 明 书
2/8页
其中,所述终端上安装有应用平台软件和串流软件的服务端;
[0014]所述定位追踪装置用于采集定位数据并发送给VR设备;[0015]所述VR设备上安装有串流软件的客户端,所述串流软件的客户端将姿态数据和所述定位数据发送给所述终端上串流软件的服务端;所述串流软件的服务端将姿态数据和所述定位数据发送给所述应用平台软件,由所述应用平台软件渲染出画面。[0016]其中较优地,所述串流软件的服务端包括控制界面和server驱动,当所述应用平台软件在终端上启动时,加载所述server驱动。[0017]其中较优地,所述串流软件的服务端获取渲染好的画面,发送给串流软件的客户端;所述串流软件的客户端将画面发送给所述VR设备进行显示。[0018]其中较优地,所述串流软件的客户端通过无线方式将姿态数据和/或定位数据发送给串流软件的服务端,所述无线方式为5G。[0019]根据本发明实施例的第三方面,提供一种实现视频串流的方法,包括如下步骤:[0020]获取VR设备的姿态数据;
[0021]将获取的姿态数据发送给VR应用进行画面渲染;[0022]获取渲染好的画面,发送给VR设备进行显示。[0023]其中较优地,所述获取VR设备的姿态数据,包括如下步骤:[0024]VR设备上的串流软件的客户端获取VR设备的姿态数据;
[0025]安装在终端上的串流软件服务端获取串流软件的客户端通过UDP采用5G无线传输的方式发送的所述姿态数据。[0026]其中较优地,所述将获取的姿态数据发送给VR应用进行画面渲染,包括如下步骤:[0027]将获取的姿态数据发送给OpenVR,经OpenVR传送给VR应用;[0028]根据VR应用得到的姿态数据以及应用逻辑,通过应用引擎进行画面的渲染;[0029]将应用引擎渲染好的数据存储在显卡的显存中。[0030]根据本发明实施例的第四方面,提供一种实现视频串流的方法,包括如下步骤:[0031]获取姿态数据和定位数据;
[0032]将获取的姿态数据和定位数据发送给VR应用进行画面渲染;[0033]获取渲染好的画面,发送给VR设备进行显示。[0034]其中较优地,所述获取姿态数据和定位数据,包括如下步骤:[0035]通过定位追踪装置采集用户的定位数据和/或姿态数据;
[0036]将定位追踪装置采集的定位数据和/或姿态数据发送到VR设备上;[0037]串流软件服务端获取VR设备通过UDP发送的定位数据和姿态数据。[0038]其中较优地,所述将获取的姿态数据和定位数据发送给VR应用进行画面渲染,包括如下步骤:
[0039]将串流软件的服务端获取的姿态数据和定位数据发送给OpenVR,经OpenVR传送给VR应用;
[0040]根据VR应用得到的定位数据、姿态数据以及应用逻辑,通过应用引擎进行画面的渲染;
[0041]将应用引擎渲染好的数据存储在显卡的显存中。[0042]其中较优地,所述获取渲染好的画面,发送给VR设备进行显示,包括如下步骤:
5
CN 111064985 A[0043][0044][0045]
说 明 书
3/8页
获取渲染好的画面对应的纹理数据,将一帧画面编码成多个数据包;将编码的多个数据包发送给VR设备进行解码并显示。其中较优地,还包括获取控制信息,将获取的控制信息发送给VR应用,进行画面渲
染;
[0046]
其中,所述控制信息来自于VR设备或者来自于定位追踪装置。
[0047]根据本发明实施例的第五方面,提供一种实现视频串流的装置,包括处理器及存储器,所述处理器用于执行存储器中存储的实现视频串流的程序,以实现如上所述的实现视频串流的方法。
[0048]本发明所提供的实现视频串流的方法,串流软件的服务获取定位数据和姿态数据;将获取的姿态数据和定位数据发送给VR应用,进行画面渲染;获取渲染好的画面,发送给VR设备进行显示。串流软件的服务端安装在PC终端,该方法使得负责运行VR应用的是PC机,VR设备要负责的仅仅是画面显示而已;因此即可通过PC的硬件进行画面处理,VR设备屏幕上就可以得到让人满意的画面。
附图说明
[0049]图1为本发明所提供的实施例一中,实现视频串流的系统的结构示意图;[0050]图2为本发明所提供的实施例一中,实现视频串流的方法的流程图;[0051]图3为本发明所提供的实施例二中,实现视频串流的系统的结构示意图;[0052]图4为本发明所提供的实施例二中,实现视频串流的方法的流程图。
具体实施方式
[0053]下面结合附图和具体实施例对本发明的技术内容进行详细具体的说明。[0054]实施例一[0055]如图1所示,本发明所提供的实现视频串流的系统,包括终端、VR设备。[0056]其中,终端上安装有应用平台软件和串流软件的服务端;在本发明所提供的实施例中,终端以PC(personal computer)为例进行说明,也可以为平板电脑、智能电视、智能手机等类似具有数据处理能力的终端。其中,示例性地,PC机上安装的应用平台软件为Steam VR平台软件(在智能手机上为相应的APP)。当然也可以是其他应用平台例如VIVEPORT平台、HYPEREAL平台、蚁视VR应用平台、大朋助手、腾讯WEGAME、OGP应用平台等。应用平台软件中的VR应用使用了应用引擎(Unreal Engine 4,Universal 3D等),已经集成数据接口提供的SDK,例如Steam VR平台软件的数据接口OpenVR提供的SDK这样就可以在PC的显示器上看到应用的画面。串流软件的服务器端例如可以设置为NOLOHOME软件的A端。[0057]串流软件的服务端包括两部分,一部分是控制界面,一部分是server驱动。其中,该server驱动优选为一个dll文件,但也可以是其它实现形式,例如SDK、API文件等等。应用平台软件,例如SteamVR平台软件在PC机上启动时,会相应加载上述的server驱动。[0058]VR设备上安装有串流软件的客户端,例如可以设置为NOLOHOME软件的B端。VR设备安装有各类传感器,例如九轴传感器、惯性传感器等,可以感知姿态动作,即俯仰、横滚和偏航等。VR设备将其姿态数据通过串流软件的客户端发送给PC机上的串流软件的服务端;通过PC机上的串流软件的服务端发送给应用平台软件,从而让应用平台软件渲染出实时画
6
CN 111064985 A
说 明 书
4/8页
面。VR设备可以为一体式VR设备,则串流软件的客户端安装在一体式VR设备的系统中,画面也是在一体式VR设备的显示屏上显示,传感器固装在一体式VR设备。VR设备可以为移动式VR设备,则串流软件的客户端安装在移动式VR设备的智能手机中,画面可以在移动式VR设备的智能手机上显示,也可以在移动式VR设备的显示屏上显示,传感器可以固装在移动式VR设备的外壳中也可以借用安装在移动式VR设备中智能手机的传感器。[0059]上述PC机和VR设备之间采用有线/无线方式进行连接,其中在采取无线方式时,优选在WLAN(无线局域网)或者5G通信环境下运行。由于5G通信具有高速率、低延迟等特点,在5G通信环境下PC与VR设备所产生的实际延迟基本可以忽略不计。[0060]为了能够让VR应用的画面串流到VR设备中,按照图1所示串流架构中,需要实现的几个核心模块分别是:串流软件服务端的server驱动,VR设备、安装在VR设备里的串流软件的客户端。其中,VR设备用于获取自身的姿态数据;串流软件的客户端和server驱动用于进行数据传输和处理。
[0061]图2所示是本发明提供的实现视频串流的方法的流程图,本发明提供的实现视频串流的方法,包括如下步骤:启动VR设备上的串流软件的客户端,例如B端NOLOHOME软件,并启动位于PC上的串流软件的服务端,例如A端NOLOHOME软件。串流软件服务端的控制界面UI包括各种控制按键,通过控制按键启动串流软件,将A端和B端连接。VR设备可将姿态、控制信息等数据通过串流软件的客户端,发送给PC上串流软件服务端的server驱动,server驱动对接收到这些数据进行处理,发送给应用平台软件进行画面渲染,server驱动再将渲染后的画面发送给VR设备进行画面显示。具体包括如下步骤:[0062]S1,获取VR设备的姿态数据。[0063]其中,VR设备的姿态数据通过安装在VR设备上传感器获取,例如九轴传感器、惯性传感器、六轴传感器、陀螺仪、地磁计等。
[0064]VR设备的姿态数据传输给安装在VR设备上的串流软件的客户端,再通过串流软件的客户端,经UDP通过5G无线方式发送到串流软件服务端的server驱动。UDP(User Datagram Protocol)是开放式系统互联参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。经此步骤,串流软件的服务端获取到VR设备的姿态数据。[0065]优选地,还可以获取VR设备的控制信息,VR设备的控制信息也可以通过串流软件的客户端,经UDP发送到串流软件服务端的server驱动。[0066]S2,将获取的姿态数据发送给VR应用进行画面渲染。[0067]具体包括如下步骤:[0068]S21,将获取的VR设备的姿态数据发送给数据接口,经数据接口传送给VR应用。[0069]将串流软件服务端的server驱动获取的姿态数据传给数据接口,对于应用平台软件SteamVR中的VR应用使用了应用引擎,已经集成数据接口OpenVR提供的SDK,OpenVR可将姿态数据传给VR应用。[0070]优选地,串流软件服务端的server驱动获取的VR设备的控制信息也发送给VR应用,进行画面渲染。将串流软件的服务端获取的控制信息发送给数据接口,经数据接口传送给VR应用。[0071]S22,根据VR应用得到的姿态数据以及应用逻辑,通过应用引擎进行画面的渲染。[0072]VR应用根据得到的姿态数据以及应用逻辑,传输给应用引擎用以得到确切的渲染
7
CN 111064985 A
说 明 书
5/8页
画面内容,并进行画面的渲染。应用引擎为Unreal Engine 4,Universal 3D等。[0073]优选地,VR应用还根据得到的控制信息,传输给应用引擎用以得到确切的渲染画面内容,并进行画面的渲染。[0074]S23,将应用引擎渲染好的数据存储在显卡的显存中。[0075]在本发明所提供的实施例中,应用引擎渲染好的数据存放于显卡的显存中,例如Nvidia显卡的显存中,并且通知VR应用,画面已经渲染好了,VR应用通知数据接口OpenVR,数据接口OpenVR通知串流软件服务端的server驱动渲染完成的事件。[0076]S3,获取渲染好的画面,发送给VR设备进行显示。[0077]具体包括如下步骤:[0078]S31,获取渲染好的画面对应的纹理数据,将一帧画面编码成多个数据包。[0079]当串流软件服务端的server驱动得知画面渲染好的事件后,通过OpenVR传来的纹理地址,在显存中找到对应的纹理数据,即为一帧画面的数据,将一帧画面编码成多个数据包。
[0080]在本发明所提供的实施例中,采用英伟达提供的视频编解码的专用库,NvCodec库。
[0081]在进行初始化的时候,预先告知NvCodec库编码格式、画面格式。在本发明所提供的实施例中,使用H264对数据进行编码。关于画面格式,使用NV_ENC_BUFFER_FORMAT_ABGR格式的图像,在当前帧中,NvCodec库会按要求,将一帧画面编码成多个小的数据包。[0082]S32,将编码的多个数据包发送给VR设备进行解码并显示。[0083]完成编码后,串流软件服务端的server驱动将编码的多个数据包发送给VR设备上安装的串流软件客户端,串流软件客户端再传输给VR设备,VR设备在接收到一个完整的帧画面数据后,对接收的数据包进行解码,在VR设备上形成一幅完整的图像并显示。
[0084]VR设备进行画面显示的方法和相关硬件可使用现有的可实现的任何一种方法和硬件,在此不做具体要求。[0085]综上所述,本发明所提供的实现视频串流的方法,串流软件的服务端获取VR设备的姿态数据和控制信息;将获取的姿态数据和控制信息发送给VR应用进行画面渲染;获取渲染好的画面,发送给VR一设备进行显示。串流软件的服务端安装在PC终端,该方法使得负责运行VR应用的是PC端,VR设备要负责的仅仅是画面显示而已;因此即可通过PC的硬件进行画面处理,VR设备屏幕上就可以得到让人满意的画面;而且,通过5G路由器无线连接PC机与VR设备,解决了困扰众多厂商的“VR无线化”的技术难题,通过5G路由器无线连接PC机与VR设备所产生的实际延迟基本可以忽略不计。[0086]实施例二[0087]如图3所示,本发明所提供的实现视频串流的系统,包括终端、VR设备、定位追踪装置。
[0088]其中,终端上安装有应用平台软件和串流软件的服务端;在本发明所提供的实施例中,终端以PC(personal computer)为例进行说明,也可以为平板电脑、智能电视、智能手机等类似具有数据处理能力的终端。其中,示例性地,PC机上安装的应用平台软件为Steam VR平台软件(在智能手机上为相应的APP)。当然也可以是其他应用平台例如VIVEPORT平台、HYPEREAL平台、蚁视VR应用平台、大朋助手、腾讯WEGAME、OGP应用平台等。应用平台软件中
8
CN 111064985 A
说 明 书
6/8页
的VR应用使用了应用引擎(UE4,U3D等),已经集成数据接口提供的SDK,例如Steam VR平台软件的数据接口OpenVR提供的SDK,这样就可以在PC的显示器上看到应用的画面。串流软件的服务器端例如可以设置为NOLOHOME软件的A端。[0089]串流软件的服务端包括两部分,一部分是控制界面,一部分是server驱动。其中,该server驱动优选为一个dll文件,但也可以是其它实现形式,例如SDK、API文件等等。应用平台软件,例如Steam VR平台软件在PC机上启动时,会相应加载上述的server驱动。[0090]VR设备上安装有串流软件的客户端,例如可以设置为NOLOHOME软件的B端。VR设备可以为一体式VR设备,则串流软件的客户端安装在一体式VR设备的系统中,画面也是在一体式VR设备的显示屏上显示,传感器固装在一体式VR设备。VR设备可以为移动式VR设备,则串流软件的客户端安装在移动式VR设备的智能手机中,画面可以在移动式VR设备的智能手机上显示,也可以在移动式VR设备的显示屏上显示,传感器可以固装在移动式VR设备的外壳中也可以借用安装在移动式VR设备中智能手机的传感器。[0091]上述PC机和VR设备之间采用有线/无线方式进行连接,其中在采取无线方式时,优选在WLAN(无线局域网)或者5G通信环境下运行。由于5G通信具有高速率、低延迟等特点,在5G通信环境下PC与VR设备所产生的实际延迟基本可以忽略不计。[0092]优选地,现有的VR设备多数只能观看视频,即只有三自由度的姿态追踪(俯仰、横滚和偏航),如果需要进行六自由度的头手位置定位(包括俯仰、横滚、偏航和空间X、Y、Z坐标),则需要配备定位追踪装置。定位追踪装置用于追踪用户的位置,例如可以包括把持在用户手上的手柄,用以追踪用户手部的位置;内置或外设方式安装在VR设备上的定位器,用以追踪用户头部的位置。手柄可将定位数据传给定位器,定位器再将定位器的定位数据和手柄的定位数据传给VR设备,或者,手柄和定位器都将定位数据直接传给VR设备。[0093]VR设备获取了定位追踪装置采集的定位数据,并获取定位追踪装置的姿态数据和自身的姿态数据,再利用串流软件的客户端将定位数据和姿态数据通过UDP发送给终端上的串流软件的服务端。终端上的串流软件的服务端将定位数据和姿态数据发送给应用平台软件,从而让应用平台软件渲染出实时画面。
[0094]为了能够让VR应用的画面串流到VR设备中,按照图3所示的架构来实现该需求,在图3所示的串流架构中,需要实现的几个核心模块分别是:串流软件服务端的server驱动,VR设备,安装在VR设备上的串流软件的客户端,定位追踪装置。其中,定位追踪装置用于采集用户身体的定位数据和姿态数据;VR设备用于获取定位数据和姿态数据,并将数据传输给server驱动;串流软件的客户端和server驱动用于进行数据传输和处理。[0095]图4所示是本发明提供的实现视频串流的方法的流程图,本发明提供的实现视频串流的方法,包括如下步骤:启动VR设备上的串流软件的客户端,例如B端NOLOHOME软件,并启动位于PC机上的串流软件的服务端,例如A端NOLOHOME软件。串流软件服务端的控制界面UI包括各种控制按键,通过控制按键启动串流软件,将A端和B端连接。VR设备上串流软件的客户端可将姿态数据、控制信息、定位数据等发送给PC机的串流软件服务端的server驱动,server驱动对接收到这些数据进行处理,发送给应用平台软件进行画面渲染,server驱动再将渲染后的画面发送给VR设备进行画面显示。具体包括如下步骤:[0096]S1,获取姿态数据和定位数据。[0097]获取姿态数据和定位数据,具体包括如下步骤:
9
CN 111064985 A[0098]
说 明 书
7/8页
S11,通过定位追踪装置采集用户的定位数据和/或姿态数据。
[0099]定位追踪装置可以包括安装在VR设备上的定位器、把持在用户手上的手柄等,通过获得定位器和/或手柄的定位数据,即可获得用户头部和/或手部的定位数据。用户的定位数据可以通过专利申请号为201610917518.0的一种三维空间定位方法及系统获得,也可以使用其他现有已知的三维空间定位方法及系统获得。[0100]用户头部的姿态数据可以通过安装在VR设备上传感器得到,也可以通过安装在VR设备上的定位器上的传感器得到,上述传感器例如为九轴传感器、惯性传感器、六轴传感器、陀螺仪、地磁计等。用户其他部位,例如手部的姿态数据通过安装在定位追踪装置手柄上的传感器得到。[0101]S12,将采集的姿态数据和定位数据发送到VR设备上。
[0102]VR设备可以通过OTG数据线等有线的方式读取姿态数据和定位数据,也可以通过蓝牙、wifi等无线方式读取姿态数据和定位数据。对于一体式VR设备,则数据直接发送到一体式VR设备的系统中;对于移动式VR设备,则数据可以发送到安装在移动式VR设备外壳中的智能手机上。[0103]S13,将获取的姿态数据和定位数据发送到串流软件服务端。
[0104]VR设备将获取的姿态数据和定位数据传输给安装在VR设备上的串流软件的客户端,再经UDP通过5G无线方式发送到安装在终端上的串流软件服务端的server驱动。经此步骤,串流软件的服务端获取到定位数据和姿态数据。[0105]优选地,串流软件的服务端还可以获取控制信息,控制信息也可以通过串流软件的客户端,经UDP发送到串流软件服务端的server驱动。控制信息可以是来自于VR设备,也可以是来自于定位追踪装置。[0106]S2,将获取的姿态数据和定位数据发送给VR应用进行画面渲染,具体包括如下步骤:
[0107]S21,将获取的姿态数据和定位数据发送给数据接口,经数据接口传送给VR应用。[0108]将串流软件服务端的server驱动获取的姿态数据和定位数据传给数据接口,对于应用平台软件SteamVR中的VR应用使用了应用引擎,已经集成数据接口OpenVR提供的SDK,数据接口OpenVR将姿态数据和定位数据传给VR应用。[0109]优选地,串流软件服务端的server驱动获取的控制信息也发送给VR应用。将串流软件服务端的server驱动获取的控制信息发送给数据接口OpenVR,经数据接口OpenVR传送给VR应用。[0110]S22,根据VR应用得到的定位数据、姿态数据以及应用逻辑,通过应用引擎进行画面的渲染。
[0111]这时候VR应用根据得到的定位数据、姿态数据以及应用逻辑,传输给应用引擎确切的渲染画面内容,进行画面的渲染。应用引擎为Unreal Engine 4,Universal 3D等。[0112]优选地,VR应用将得到的控制信息也传输给应用引擎确切的渲染画面内容,进行画面的渲染。[0113]S23,将应用引擎渲染好的数据存储在显卡的显存中。[0114]在本发明所提供的实施例中,应用引擎渲染好的数据存放于显卡的显存中,并且通知VR应用画面已经渲染好了,VR应用通知数据接口,数据接口通知串流软件server驱动
10
CN 111064985 A
说 明 书
8/8页
渲染完成的事件。[0115]S3,获取渲染好的画面,发送给VR设备进行显示。[0116]具体包括如下步骤:[0117]S31,获取渲染好的画面对应的纹理数据,将一帧画面编码成多个数据包。[0118]当串流软件server驱动得知画面渲染好的事件后,通过数据接口传来的纹理地址,在显存中找到对应的纹理数据,即为一帧画面的数据,将一帧画面编码成多个数据包。[0119]在本发明所提供的实施例中,采用英伟达提供的视频编解码的专用库,NvCodec库。
[0120]在进行初始化的时候,预先告知NvCodec库编码格式、画面格式。在本发明所提供的实施例中,使用H264对数据进行编码。关于画面格式,使用NV_ENC_BUFFER_FORMAT_ABGR格式的图像,在当前帧中,NvCodec库会按要求,将一帧画面编码成多个小的数据包。[0121]S32,将编码的多个数据包发送给VR设备进行解码并显示。[0122]完成编码后,串流软件服务端的server驱动将编码的多个数据包发送给VR设备上安装的串流软件的客户端,串流软件的客户端再传输给VR设备,VR设备在接收到一个完整的帧画面数据后,对接收的数据包进行解码,在VR设备上形成一幅完整的图像并显示。VR设备进行画面显示的方法和相关硬件可使用现有的可实现的任何一种方法和硬件,在此不做具体要求。
[0123]综上所述,本发明所提供的实现视频串流的方法,串流软件的服务获取定位数据和姿态数据;将获取的姿态数据和定位数据发送给VR应用,进行画面渲染;获取渲染好的画面,发送给VR设备进行显示。串流软件的服务端安装在PC终端,该方法使得负责运行VR应用的是PC机,VR设备要负责的仅仅是画面显示而已;因此即可通过PC的硬件进行画面处理,VR设备屏幕上就可以得到让人满意的画面;而且,通过5G路由器无线连接PC机与VR设备,解决了困扰众多厂商的“VR无线化”的技术难题,通过5G路由器无线连接PC机与VR设备所产生的实际延迟基本可以忽略不计。
[0124]本发明实施例还提供了一种实现视频串流的装置,该装置包括处理器和存储器,所述处理器用于执行存储器中存储的实现视频串流的程序,以实现如上所述的实现视频串流的方法。这里的存储器存储有一个或者多个程序。其中,存储器可以包括易失性存储器,例如随机存取存储器;存储器也可以包括非易失性存储器,例如只读存储器、快闪存储器、硬盘或固态硬盘;存储器还可以包括上述种类的存储器的组合。当存储器中所述一个或者多个程序可被一个或者多个处理器执行,以实现上述的用于实现上述方法实施例中实现视频串流的方法的部分步骤或者全部步骤。
[0125]上面对本发明所提供的实现视频串流的系统及方法进行了详细的说明。对本领域的一般技术人员而言,在不背离本发明实质精神的前提下对它所做的任何显而易见的改动,都将构成对本发明专利权的侵犯,将承担相应的法律责任。
11
CN 111064985 A
说 明 书 附 图
1/2页
图1
图2
12
CN 111064985 A
说 明 书 附 图
2/2页
图3
图4
13
因篇幅问题不能全部显示,请点此查看更多更全内容