视频播放方法、设备及系统与流程

文档序号:15925652发布日期:2018-11-14 01:06阅读:200来源:国知局

本申请实施例涉及虚拟现实(virtualreality,vr)技术领域,特别涉及一种视频播放方法、设备及系统。

背景技术

vr技术是一种可以创建和体验虚拟世界的计算机仿真技术,vr技术能够为用户提供视觉、听觉、触觉等多感官的沉浸式体验。网络vr技术是指通过网络向用户提供vr业务的技术。部署在网络中的业务服务器通过网络向vr设备传输vr视频流,由vr设备对接收到的vr视频流进行播放。

目前,通常采用如下两种方案传输和播放vr视频流。第一种方案,服务器向vr设备发送360度全景的vr视频流,vr设备采用360度全景的vr视频流播放与用户的观看视角相对应的画面。由于360度全景的vr视频流的分辨率和数据量较高,因此传输360度全景的vr视频流需要占用较大的带宽,普通家庭用户的带宽无法满足360度全景的vr视频流的传输需求。第二种方案,服务器从360度全景的vr视频流中提取与用户的观看视角对应的vr视频流,服务器仅向vr设备传输与用户的观看视角对应的vr视频流,vr设备在接收到上述vr视频流之后直接进行播放。上述第一种方案可称为360度传输方案,第二种方案可称为视场(fieldofview,fov)传输方案。相较于第一种方案,第二种方案能够节省带宽,但也存在另一个问题,当用户视角发生切换时,vr设备需要从服务器请求获取切换后的视角对应的vr视频流,由于传输和缓存耗时的存在,会导致光子运动(motiontophoton,mtp)时延较高,无法达到vr技术所要求的低于20毫秒的mtp时延的需求。其中,mtp时延是指从用户视角发生切换到vr设备显示切换后的视角对应的画面的时延。

因此,上述现有技术无法同时克服网络vr业务占用带宽大和时延高的问题。



技术实现要素:

本申请实施例提供了一种视频播放方法、设备及系统,用以解决现有技术所存在的无法同时克服网络vr业务占用带宽大和时延高的问题。

一方面,本申请实施例提供一种视频播放方法,该方法包括:vr设备接收服务器发送的第一分辨率的第一视角的vr视频流以及服务器持续发送的第二分辨率的全视角vr视频流,第一分辨率大于第二分辨率;vr设备采用第一分辨率的第一视角的vr视频流,播放第一视角的画面;在vr设备确定视角发生变化时,vr设备采用第二分辨率的全视角vr视频流和第一分辨率的第一视角的vr视频流中的第一种或全部两种,播放当前视角的画面;vr设备向服务器发送视角信息,该视角信息中携带有用于指示变化至的第二视角的参数;服务器根据上述参数向vr设备发送第一分辨率的第二视角的vr视频流;vr设备采用第一分辨率的第二视角的vr视频流,播放第二视角的画面。

本申请实施例提供的方案中,服务器向vr设备发送两条业务数据流,其中一条是高分辨率的观看视角的vr视频流,用于满足视角固定状态下的显示需求,另一条是低分辨率的全视角vr视频流,用于满足视角切换时的显示需求。相较于360度传输方案,带宽占用减小,且由于低分辨率的全视角vr视频流覆盖了360度视角,视角切换时所需的画面数据不必从服务器请求获取,因此降低了视角切换时的显示时延。

在一个可能的设计中,vr设备采用第二分辨率的全视角vr视频流,播放当前视角的画面,包括:vr设备对第二分辨率的全视角vr视频流进行解码,得到全视角画面;vr设备从全视角画面中提取当前视角的画面;vr设备播放当前视角的画面。

本申请实施例提供的方案中,在视角变化的过程中,vr设备从视频缓冲区中读取第二分辨率的全视角vr视频流,采用第二分辨率的全视角vr视频流播放当前视角的画面。由于第二分辨率的全视角vr视频流存储于本地的视频缓冲区中,vr设备不必从服务器请求获取,因此能够降低视角切换时的mtp时延,满足低于20毫秒的mtp时延的需求。另外,在视角变化的过程中(例如用户转头的过程中),虽然显示的是低分辨率的画面,但是由于人眼运动过程中感受到的画面本身就是模糊的,因此向用户呈现低分辨率的画面并不会影响到视觉体验。

在一个可能的设计中,vr设备采用第二分辨率的全视角vr视频流和第一分辨率的第一视角的vr视频流,播放当前视角的画面,包括:vr设备对第一分辨率的第一视角的vr视频流进行解码,得到第一视角的画面;vr设备对第二分辨率的全视角vr视频流进行解码,得到全视角画面;vr设备从第一视角的画面中提取重合画面,并从全视角画面中提取非重合画面,其中,重合画面是指第一视角的画面与当前视角的画面的重合区域的画面,非重合画面是指当前视角的画面中除重合区域以外的画面;vr设备将重合画面和非重合画面拼合得到当前视角的画面;vr设备播放当前视角的画面。

本申请实施例提供的方案中,在视角变化的过程中,当前视角与第一视角之间仍然可能存在一定的重合,对于重合区域,仍然可以采用高分辨率的画面进行播放,以尽可能地减少清晰度损失。

在一个可能的设计中,vr设备接收服务器发送的第一分辨率的第二视角的vr视频流之后,还包括:vr设备检测已接收到的第一分辨率的第二视角的vr视频流与当前播放画面的时间戳是否同步,上述同步是指已接收到的第一分辨率的第二视角的vr视频流的时间戳包括当前播放画面的时间戳;若同步,则vr设备执行采用第一分辨率的第二视角的vr视频流,播放第二视角的画面的步骤;若未同步,则vr设备采用第二分辨率的全视角vr视频流和第一分辨率的第一视角的vr视频流中的第一种或全部两种,播放第二视角的画面。

本申请实施例提供的方案中,还通过vr设备检测已接收到的第一分辨率的第二视角的vr视频流与当前播放画面的时间戳是否同步,确保向用户流畅而又准确地播放vr视频。

在一个可能的设计中,vr设备接收服务器发送的第一分辨率的第一视角的vr视频流以及服务器持续发送的第二分辨率的全视角vr视频流之后,还包括:vr设备将第一分辨率的第一视角的vr视频流存储至第一视频缓冲区,并将第二分辨率的全视角vr视频流存储至第二视频缓冲区。

本申请实施例提供的方案中,vr设备将不同分辨率的vr视频流通过两个视频缓冲区独立存储,有利于快速地选择不同的vr视频流进行播放,提高选择切换时的流畅性。

在一个可能的设计中,该方法还包括:当vr设备确定视角发生变化时,或者,当vr设备采用第一分辨率的第二视角的vr视频流,播放第二视角的画面时,vr设备对第一视频缓冲区中缓存的第一分辨率的第一视角的vr视频流进行数据老化处理。

本申请实施例提供的方案中,当vr设备无需用到第一视频缓冲区中缓存的第一分辨率的第一视角的vr视频流时,对上述数据进行数据老化处理,能够尽快释放第一视频缓冲区的缓存资源。

在一个可能的设计中,vr设备采用第一分辨率的第一视角的vr视频流,播放第一视角的画面,包括:vr设备对第一分辨率的第一视角的vr视频流进行解码,得到第一视角的画面,vr设备播放第一视角的画面。vr设备采用第一分辨率的第二视角的vr视频流,播放第二视角的画面,包括:vr设备对第一分辨率的第二视角的vr视频流进行解码,得到第二视角的画面,vr设备播放第二视角的画面。

本申请实施例提供的技术方案中,由于vr设备对不同的vr视频流分别单独进行解码,因此能够对不同的vr视频流进行区分。

另一方面,本申请实施例提供一种vr设备,该vr设备具有实现上述方法示例中vr设备侧行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块或者单元。

在一个可能的设计中,vr设备的结构中包括处理器和通信接口,所述处理器被配置为支持vr设备执行上述方法中相应的功能。所述通信接口用于支持vr设备与其它设备之间的通信。进一步的,vr设备还可以包括存储器,所述存储器用于与处理器耦合,其保存vr设备必要的程序指令和数据。

又一方面,本申请实施例提供一种服务器,该服务器具有实现上述方法示例中服务器侧行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块或者单元。

在一个可能的设计中,服务器的结构中包括处理器和通信接口,所述处理器被配置为支持服务器执行上述方法中相应的功能。所述通信接口用于支持服务器与其它设备之间的通信。进一步的,服务器还可以包括存储器,所述存储器用于与处理器耦合,其保存服务器必要的程序指令和数据。

又一方面,本申请实施例提供一种视频播放系统,该系统包括上述方面所述的vr设备和服务器。

再一方面,本申请实施例提供一种计算机存储介质,用于储存为上述vr设备所用的计算机软件指令,其包含用于执行上述方面所设计的程序。

再一方面,本申请实施例提供一种计算机存储介质,用于储存为上述服务器所用的计算机软件指令,其包含用于执行上述方面所设计的程序。

还一方面,本申请实施例提供一种计算机程序产品,当该计算机程序产品被执行时,其用于执行上述方面所述的vr设备侧的方法。

还一方面,本申请实施例提供一种计算机程序产品,当该计算机程序产品被执行时,其用于执行上述方面所述的服务器侧的方法。

相较于现有技术,本申请实施例提供的方案中,服务器向vr设备发送两条业务数据流,其中一条是高分辨率的观看视角的vr视频流,用于满足视角固定状态下的显示需求,另一条是低分辨率的全视角vr视频流,用于满足视角切换时的显示需求。相较于360度传输方案,带宽占用减小,且由于低分辨率的全视角vr视频流覆盖了360度视角,视角切换时所需的画面数据不必从服务器请求获取,因此降低了视角切换时的显示时延。

附图说明

图1a是一个例子提供的一种生成单个视角的vr画面的示意图;

图1b是一个例子提供的一种生成多个视角的vr画面的示意图;

图2a是本申请一个实施例提供的应用场景的示意图;

图2b是本申请另一个实施例提供的应用场景的示意图;

图3是本申请一个实施例提供的视频播放方法的流程图;

图4是本申请实施例提供的一种拼合当前视角的画面的示意图;

图5a是本申请另一个实施例提供的视频播放方法的流程图;

图5b是与图5a实施例对应的交互示意图;

图6a是本申请一个实施例提供的设备的示意性框图;

图6b是本申请一个实施例提供的设备的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图,对本申请实施例中的技术方案进行描述。

本申请实施例描述的系统架构以及业务场景是为了更加清楚地说明本申请实施例的技术方案,并不构成对本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着系统架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。

请参考图2a,其示出了本申请实施例提供的一种可能的应用场景的示意图。该应用场景可以是网络vr系统,网络vr系统是指通过网络向用户提供vr业务的系统。该应用场景可以包括:vr设备21和服务器22。

vr设备21用于接收服务器22发送的vr视频流,并基于上述vr视频流播放画面,以实现向用户提供观看vr视频的功能。vr设备21可以是头戴式的vr显示设备,例如vr头盔、vr眼镜等等。当然,vr设备还可以是其它任意能够用于播放vr视频的设备。

服务器22中存储有vr视频资源,用于向vr设备21提供vr视频流。服务器22可以是一台服务器,也可以是由多台服务器组成的服务器集群,或者是一个云计算服务中心。可选地,服务器22是用于提供网络vr业务的后台服务器,例如某一用于提供网络vr业务的网站或应用的后台服务器。

vr设备21与服务器22之间具有通信连接。上述通信连接可以是无线网络连接,也可以是有线网络连接。

在图2a实施例提供的应用场景的基础上,结合参考图2b,本申请实施例还提供了另一种可能的应用场景的示意图。该应用场景除包括vr设备21和服务器22之外,还包括至少一个摄像头23。

摄像头23用于采集vr视频流,并将采集到的vr视频流发送给服务器22。

摄像头23与服务器22之间具有通信连接。上述通信连接可以是无线网络连接,也可以是有线网络连接。

图2b实施例提供的应用场景适用于直播场景。

在一个例子中,提供了一种传输和播放vr视频的方法。服务器预先将360度视角划分为30个视角,每个视角的vr画面的生成过程如图1a所示。以目标视角为例,目标视角是上述30个视角中的任意一个视角,服务器从360度全景画面11中提取目标视角区域的画面12,360度全景画面11中除去目标视角区域的画面12后的剩余画面可称为背景区域画面13,服务器降低背景区域画面13的分辨率,得到低分辨率的背景区域画面14,目标视角的vr画面15包括目标视角区域的画面12和低分辨率的背景区域画面14。这样,30个视角的vr画面可如图1b所示。

在一个例子中,假设用户当前观看的是视角2,vr设备从服务器接收视角2的vr视频流并存储至视频缓冲区,vr设备采用视角2的vr视频流播放视角2的画面。当用户从视角2切换至视角3时,vr设备向服务器请求获取视角3的vr视频流,由于网络传输和视频缓冲均需要耗费一定时间,因此在视角3的vr视频流到达vr设备并可用于播放之前,vr设备会先从本地缓存的视角2的vr视频流的低分辨率的背景区域画面中提取当前视角的画面进行播放。在视角切换的过程中,虽然显示的是低分辨率的画面,但是由于人眼运动过程中感受到的画面本身就是模糊的,因此在视角切换的过程中显示低分辨率的画面并不会明显地降低视觉体验。

上述例子提供的方案虽然克服了网络vr业务占用带宽大和时延高的问题,但存在如下技术问题:

第一,服务器端的存储开销大;服务器需要预先存储30个视角的vr视频流,并且每个视角的vr视频流均包括低分辨率的背景区域画面,上述低分辨率的背景区域画面内容存在大量重合,因此增加了服务器端的存储开销;

第二,视角切换时会导致流量突发;由于在视角切换的过程中,从vr设备请求获取切换后的视角的vr视频流,到其接收并使用该切换后的视角的vr视频流进行播放,需要消耗一定时间(包括数据传输和解码所需的时间),如果vr设备缓存的切换前的视角的vr视频流在上述一定时间内被播放完,则vr设备会产生显示中断,因此为了避免显示中断,在视角切换的过程中,服务器需要同时向vr设备发送切换前的视角的vr视频流和切换后的视角的vr视频流,这就使得在视角切换时需要占用双倍带宽,导致流量突发。

为了克服网络vr业务占用带宽大和时延高的问题,同时避免产生上述例子所存在的问题,本申请实施例提供了一种视频播放方法,以及基于这个方法的设备及系统。在本申请实施例中,服务器向vr设备发送两条业务数据流,其中一条是高分辨率的观看视角的vr视频流,用于满足视角固定状态下的显示需求,另一条是低分辨率的全视角vr视频流,用于满足视角切换时的显示需求。相较于360度传输方案,带宽占用减小,且由于低分辨率的全视角vr视频流覆盖了360度视角,视角切换时所需的画面数据不必从服务器请求获取,因此降低了视角切换时的显示时延。与上述例子相比,服务器端无需重复存储多份低分辨率的全视角vr视频流,存储开销减少,并且服务器在根据视角信息确定vr设备的视角发生变化时,即可停止向vr设备发送第一视角的vr视频流,转而发送变化至的第二视角的vr视频流,因此不会产生流量突发的问题。

下面将基于上面所述的本申请实施例涉及的共性方面,对本申请实施例进一步详细说明。

请参考图3,其示出了本申请一个实施例提供的视频播放方法的流程图。该方法可以应用于图2a或图2b所示的应用场景中。该方法可以包括如下几个步骤。

步骤301,服务器向vr设备发送第一分辨率的第一视角的vr视频流,并向vr设备持续发送第二分辨率的全视角vr视频流,第一分辨率大于第二分辨率。

在本申请实施例中,服务器向vr设备发送两条业务数据流,其中一条是高分辨率的观看视角的vr视频流(也即第一分辨率的观看视角(如第一视角、第二视角)的vr视频流),用于满足视角固定状态下的显示需求,另一条是低分辨率的全视角vr视频流(也即第二分辨率的全视角vr视频流),用于满足视角切换时的显示需求。其中,第二分辨率的全视角vr视频流不受视角变化的影响,在业务提供过程中,由服务器向vr设备持续发送。在本申请实施例中,分辨率的高低决定了vr视频的清晰度,分辨率越高,则vr视频的清晰度越高;分辨率越低,则vr视频的清晰度越低。

在一个示例中,服务器中存储有第一分辨率的全视角vr视频流和第二分辨率的全视角vr视频流。服务器在检测到vr设备请求获取某一视角的vr视频流时,从第一分辨率的全视角vr视频流中提取该视角的vr视频流。例如,服务器在检测到vr设备请求获取第一视角的vr视频流时,从第一分辨率的全视角vr视频流中提取第一视角的vr视频流。通过上述方式,服务器仅需存储第一分辨率的全视角的vr视频流以及第二分辨率的全视角vr视频流,由于第二分辨率的全视角vr视频流占用的存储开销大约为第一分辨率的全视角vr视频流的0.1倍左右,因此占用的总存储开销大约为第一分辨率的全视角的vr视频流的1.1倍左右,相比于上述例子,充分减少了服务器的存储开销。

在另一个示例中,服务器中存储有第一分辨率的n个视角的vr视频流和第二分辨率的全视角vr视频流,n为大于1的整数。在实际应用中,n的取值可根据实际经验得到,该n个视角组合后能够涵盖全视角,例如n为25、30、35等等。服务器在检测到vr设备请求获取某一视角的vr视频流时,从第一分辨率的n个视角的vr视频流中选取该视角的vr视频流。例如,服务器在检测到vr设备请求获取第一视角的vr视频流时,从第一分辨率的n个视角的vr视频流中选取第一视角的vr视频流,第一视角是n个视角中的一个视角。通过上述方式,服务器中无需重复存储多份第二分辨率的全视角vr视频流,仅需存储一份即可,相比于上述例子,也在一定程度上减少了服务器的存储开销。另外,在此示例中,服务器在接收到vr设备的请求之后,无需从全视角vr视频流中提取vr设备所需的那个视角的vr视频流,仅需从存储的n个视角的vr视频流中直接选取vr设备所需的那个视角的vr视频流即可,有助于缩短服务器对vr设备的请求的响应时延。

另外,上述第一分辨率的n个视角的vr视频流,可以由服务器从第一分辨率的全视角vr视频流中分别提取得到;也可以是n个独立的视频流,每一个视角的vr视频流由一个或多个摄像头独立采集得到。

可选地,第二分辨率的全视角vr视频流由第一分辨率的全视角vr视频流转换得到。上述分辨率转换操作可以由服务器执行,也可以由与服务器相连的其它设备(例如用于向服务器提供vr视频资源的源服务器)执行。当然,在其它可能的实现方式中,如果第一分辨率的n个视角的vr视频流是n个独立的视频流,每一个视角的vr视频流由一个或多个摄像头独立采集得到,那么在一种方式中,服务器可以先将第一分辨率的n个视角的vr视频流进行整合,得到第一分辨率的全视角vr视频流,而后将第一分辨率的全视角vr视频流转换为第二分辨率的全视角vr视频流;在另一种方式中,服务器也可以分别将第一分辨率的n个视角的vr视频流转换为第二分辨率的n个视角的vr视频流,而后将第二分辨率的n个视角的vr视频流进行整合,得到第二分辨率的全视角vr视频流。

可选地,通过改变vr视频流的影像传输格式,以实现分辨率转换。例如,第一分辨率的vr视频流可以采用两倍通用影像传输格式(doublecommonintermediateformat,dcif)、四倍通用影像传输格式(4cif)等影像传输格式;第二分辨率的vr视频流可以采用通用影像传输格式(commonintermediateformat,cif)、四分之一通用影像传输格式(quartercommonintermediateformat,qcif)等影像传输格式。示例性地,以第一分辨率的全视角vr视频流采用4cif,第二分辨率的全视角vr视频流采用qcif为例,第一分辨率为704×576,第二分辨率为176×144。

vr视频流可采用流媒体协议传输。在流媒体协议中,采用不同的标识对多条不同的媒体流进行区分。例如,当流媒体协议为实时传输协议(real-timetransportprotocol,rtp)时,rtp中采用同步信源(synchronizationsource,ssrc)标识符(identifier)和特约信源(contributingsource,csrc)标识符来区分多条不同的媒体流。又例如,当流媒体协议为实时消息传输协议(realtimemessagingprotocol,rtmp)时,采用消息流标识(messagestreamid)来区分多条不同的媒体流。又例如,当流媒体协议为基于超文本传输协议的视频直播(httplivestreaming,hls)协议时,采用统一资源标识符(uniformresourceidentifier,uri)来区分多条不同的媒体流。因此,当服务器向vr设备发送两条vr视频流时,这两条vr视频流能够用流媒体协议定义的标识进行区分。另外,根据不同的流媒体协议的规定,上述用于区分媒体流的标识可以携带在每一个数据包中,也可以仅携带在头数据包(也即第一个数据包)中。在其它可能的示例中,由于vr设备对不同的媒体流(在本申请实施例中,媒体流也即vr视频流)分别单独解码,因此可以对不同的媒体流进行区分。

相应地,vr设备接收服务器发送的第一分辨率的第一视角的vr视频流以及服务器持续发送的第二分辨率的全视角vr视频流。vr设备将第一分辨率的第一视角的vr视频流存储至第一视频缓冲区,并将第二分辨率的全视角vr视频流存储至第二视频缓冲区。其中,第一视频缓冲区用于存储第一分辨率的某一视角的vr视频流,第二视频缓冲区用于存储第二分辨率的全视角vr视频流。在本申请实施例中,vr设备将不同分辨率的vr视频流通过两个视频缓冲区独立存储,有利于快速地选择不同的vr视频流进行播放,提高选择切换时的流畅性。

步骤302,vr设备采用第一分辨率的第一视角的vr视频流,播放第一视角的画面。

vr设备对第一分辨率的第一视角的vr视频流进行解码,得到第一视角的画面,然后播放第一视角的画面。在本申请实施例中,对vr视频流的编解码算法不作限定。例如,动态图像专家组(movingpictureexpertsgroup,mpeg)标准提供的编解码算法、视频编解码器(videocodec,vc)涉及的相关算法、h.264编解码算法等等。

可选地,vr设备在检测到第一视频缓冲区中缓存的第一视角的vr视频流的数据量大于预设阈值时,开始从第一视频缓冲区中读取第一视角的vr视频流并进行解码播放。其中,预设阈值可根据实际经验预先设定。

步骤303,在vr设备确定视角发生变化时,vr设备采用第二分辨率的全视角vr视频流和第一分辨率的第一视角的vr视频流中的第一种或全部两种,播放当前视角的画面。

vr设备在播放vr视频的过程中,实时检测视角是否发生变化,也即检测是否从第一视角变化至其它视角。在vr设备确定视角发生变化时,vr设备采用第二分辨率的全视角vr视频流和第一分辨率的第一视角的vr视频流中的第一种或全部两种,播放当前视角的画面,当前视角是指vr设备实时确定出的视角;在vr设备确定视角未发生变化时,vr设备继续采用第一分辨率的第一视角的vr视频流播放第一视角的画面。

在一个示例中,vr设备采用第二分辨率的全视角vr视频流,播放当前视角的画面。该步骤可以包括如下几个子步骤:

1、vr设备对第二分辨率的全视角vr视频流进行解码,得到全视角画面;

2、vr设备从全视角画面中提取当前视角的画面;

3、vr设备播放当前视角的画面。

在视角变化的过程中,vr设备从第二视频缓冲区中读取第二分辨率的全视角vr视频流,采用第二分辨率的全视角vr视频流播放当前视角的画面。由于第二分辨率的全视角vr视频流存储于本地的第二视频缓冲区中,vr设备不必从服务器请求获取,因此能够降低视角切换时的mtp时延,满足低于20毫秒的mtp时延的需求。另外,在视角变化的过程中(例如用户转头的过程中),虽然显示的是低分辨率的画面,但是由于人眼运动过程中感受到的画面本身就是模糊的,因此向用户呈现低分辨率的画面并不会影响到视觉体验。

在另一个示例中,vr设备采用第二分辨率的全视角vr视频流和第一分辨率的第一视角的vr视频流,播放当前视角的画面。该步骤可以包括如下几个子步骤:

1、vr设备对第一分辨率的第一视角的vr视频流进行解码,得到第一视角的画面;

2、vr设备对第二分辨率的全视角vr视频流进行解码,得到全视角画面;

3、vr设备从第一视角的画面中提取重合画面,并从全视角画面中提取非重合画面;

4、vr设备将重合画面和非重合画面拼合得到当前视角的画面;

5、vr设备播放当前视角的画面。

重合画面是指第一视角的画面与当前视角的画面的重合区域的画面,非重合画面是指当前视角的画面中除重合区域以外的画面。在视角变化的过程中,当前视角与第一视角之间仍然可能存在一定的重合,对于重合区域,仍然可以采用高分辨率的画面进行播放,以尽可能地减少清晰度损失。

结合参考图4,其示出了本申请实施例提供的一种拼合当前视角的画面的示意图。第一视角41(图中实线正方形框所示)与当前视角42(图中虚线正方形框所示)存在重合区域43(图中具有斜线填充的矩形框所示)。vr设备从第一分辨率的第一视角的画面44中提取重合画面45,从第二分辨率的全视角画面46中提取非重合画面47,将上述重合画面45和非重合画面47进行拼合,得到当前视角的画面48。可选地,vr设备将重合画面45和非重合画面47缩放到同一分辨率后进行拼合,得到当前视角的画面48。

在本申请实施例中,对上述另一个示例中的子步骤1和2的执行先后顺序不作限定。上述子步骤1可以在子步骤2之前执行,也可以在子步骤2之后执行,或者与子步骤2同时执行。

另外,在本申请实施例中,视角发生变化可以是指当前视角与原始视角不同,也可以是指当前视角与原始视角之间的变化量小于预设门限值,该预设门限值可以根据实际需求预先设定。

步骤304,vr设备向服务器发送视角信息,视角信息中携带有用于指示变化至的第二视角的参数。

在一个示例中,vr设备主动向服务器上报视角信息。例如,vr设备每隔第一预设时间间隔向服务器发送一次视角信息,每一次上报的视角信息中携带有用于指示当前视角(也即上报时刻的视角)的参数。上述第一预设时间间隔可以根据实际需求预先设定。又例如,vr设备在检测到视角发生变化时,向服务器发送视角信息,视角信息中携带有用于指示变化至的第二视角的参数,而在检测到视角未发生变化时,vr设备并不向服务器发送视角信息。

在另一个示例中,vr设备在接收到服务器发送的轮询请求之后,向服务器发送视角信息。例如,服务器每隔第二预设时间间隔向vr设备发送一次轮询请求,vr设备接收到轮询请求之后,向服务器发送视角信息,每一次上报的视角信息中携带有用于指示当前视角(也即上报时刻的视角)的参数。上述第二预设时间间隔可以根据实际需求预先设定。

相应地,服务器接收vr设备发送的视角信息。通过本申请实施例提供的方式,能够确保服务器及时地获知vr设备的视角发生变化。

步骤305,服务器根据上述参数,向vr设备发送第一分辨率的第二视角的vr视频流。

服务器根据视角信息中携带的用于指示变化至的第二视角的参数,获取第一分辨率的第二视角的vr视频流,而后向vr设备发送该第一分辨率的第二视角的vr视频流。

在一个示例中,如果服务器中存储有第一分辨率的全视角vr视频流,则服务器从第一分辨率的全视角vr视频流中提取第二视角的vr视频流。

在另一个示例中,如果服务器中存储有第一分辨率的n个视角的vr视频流,则服务器从第一分辨率的n个视角的vr视频流中选取第二视角的vr视频流。

相应地,vr设备接收服务器发送的第一分辨率的第二视角的vr视频流。vr设备将第一分辨率的第二视角的vr视频流存储至第一视频缓冲区。

在本申请实施例中,服务器在根据视角信息确定vr设备的视角发生变化时,即可停止向vr设备发送第一视角的vr视频流,转而发送变化至的第二视角的vr视频流,因此不会产生流量突发的问题。另外,由于低分辨率的全视角vr视频流是单独持续发送的,因此在第二视角的vr视频流到达vr设备之前,vr设备可以采用低分辨率的全视角vr视频流播放当前视角的画面,不会产生显示中断。

步骤306,vr设备采用第一分辨率的第二视角的vr视频流,播放第二视角的画面。

vr设备对第一分辨率的第二视角的vr视频流进行解码,得到第二视角的画面,然后播放第二视角的画面。

可选地,当vr设备无需用到第一视频缓冲区中缓存的第一分辨率的第一视角的vr视频流时,vr设备对第一视频缓冲区中缓存的第一视角的vr视频流进行数据老化处理。数据老化处理是指清除缓存数据,对第一视角的vr视频流进行数据老化处理是指将第一视频缓冲区中的第一视角的vr视频流进行清除。通过上述方式,能够尽快释放第一视频缓冲区的缓存资源。

在vr设备确定视角发生变化时,如果vr设备采用第二分辨率的全视角vr视频流播放当前视角的画面,则当vr设备确定视角发生变化时,即可对第一视频缓冲区中缓存的第一分辨率的第一视角的vr视频流进行数据老化处理。在vr设备确定视角发生变化时,如果vr设备采用第二分辨率的全视角vr视频流和第一分辨率的第一视角的vr视频流中的第一种或全部两种,播放当前视角的画面,则当vr设备采用第一分辨率的第二视角的vr视频流播放第二视角的画面时,可以对第一视频缓冲区中缓存的第一分辨率的第一视角的vr视频流进行数据老化处理。

本申请实施例提供的方案中,服务器向vr设备发送两条业务数据流,其中一条是高分辨率的观看视角的vr视频流,用于满足视角固定状态下的显示需求,另一条是低分辨率的全视角vr视频流,用于满足视角切换时的显示需求。相较于360度传输方案,带宽占用减小,且由于低分辨率的全视角vr视频流覆盖了360度视角,视角切换时所需的画面数据不必从服务器请求获取,因此降低了视角切换时的显示时延。与上述例子相比,服务器端无需重复存储多份低分辨率的全视角vr视频流,存储开销减少,并且服务器在根据视角信息确定vr设备的视角发生变化时,即可停止向vr设备发送第一视角的vr视频流,转而发送变化至的第二视角的vr视频流,因此不会产生流量突发的问题。

结合参考图5a和图5b,其示出了本申请另一个实施例提供的视频播放方法的流程图。该方法可以应用于图2a或图2b所示的应用场景中。该方法可以包括如下几个步骤。

在图5b中,圆圈中表示的流程1-10分别对应下述步骤501-510。

步骤501,vr设备向服务器发送业务请求,该业务请求中携带有用于指示第一视角的参数。

业务请求用于请求从服务器中获取vr视频资源。

相应地,服务器接收vr设备发送的业务请求。

步骤502,服务器向vr设备发送第一分辨率的第一视角的vr视频流,并向vr设备持续发送第二分辨率的全视角vr视频流,第一分辨率大于第二分辨率。

服务器在接收到业务请求之后,根据业务请求中携带的用于指示第一视角的参数,获取第一分辨率的第一视角的vr视频流,并发送给vr设备。此外,服务器还向vr设备持续发送第二分辨率的全视角vr视频流,直至vr设备停止从服务器请求获取vr视频资源,也即直至业务结束。另外,第二分辨率的vr视频流可以由第一分辨率的vr视频流进行视频转码得到,例如第二分辨率是第一分辨率的10%。

相应地,vr设备接收服务器发送的第一分辨率的第一视角的vr视频流以及服务器持续发送的第二分辨率的全视角vr视频流。

结合参考图5b,服务器中设置有两路发送缓存,包括第一发送缓存和第二发送缓存。其中,第一发送缓存用于向vr设备发送第一分辨率的某一视角的vr视频流(也可称为fov视频流),第二发送缓存用于向vr设备发送第二分辨率的全视角vr视频流(也可称为360度视频流)。相应地,vr设备中设置有两路接收缓存,包括第一接收缓存和第二接收缓存。其中,第一接收缓存也即图3实施例中介绍的第一视频缓冲区,用于存储接收到的第一分辨率的某一视角的vr视频流(也可称为fov视频流),第二接收缓存也即图3实施例中介绍的第二视频缓冲区,用于存储接收到的第二分辨率的全视角vr视频流(也可称为360度视频流)。

步骤503,vr设备采用第一分辨率的第一视角的vr视频流,播放第一视角的画面。

vr设备在第一视频缓冲区中的vr视频流缓冲到一定长度(例如1秒)后,从第一视频缓冲区中读取第一分辨率的第一视角的vr视频流,并对其进行解码播放。

步骤504,在vr设备确定视角发生变化时,vr设备向服务器发送视角信息,视角信息中携带有用于指示变化至的第二视角的参数。

可选地,vr设备向服务器发送视角切换请求,视角切换请求中携带有用于指示变化至的第二视角的参数,视角切换请求用于请求获取变化至的第二视角的vr视频流。

相应地,服务器接收vr设备发送的视角信息。

步骤505,vr设备对第一视频缓冲区中缓存的第一分辨率的第一视角的vr视频流进行数据老化处理。

例如,vr设备清除第一视频缓冲区中存储的数据,准备接收第一分辨率的第二视角的vr视频流。

步骤506,vr设备采用第二分辨率的全视角vr视频流播放当前视角的画面。

vr设备从第二视频缓冲区中读取第二分辨率的全视角vr视频流,对其进行解码得到全视角画面,从从全视角画面中提取当前视角的画面进行播放。

需要说明的一点是,在本申请实施例中,对上述步骤504、505和506的执行先后顺序不作限定,上述3个步骤可以按序先后执行,也可以同时执行。

步骤507,服务器根据上述视角信息中携带有用于指示变化至的第二视角的参数,向vr设备发送第一分辨率的第二视角的vr视频流。

服务器在根据视角信息确定vr设备的视角发生变化时,即可停止向vr设备发送第一视角的vr视频流,转而发送变化至的第二视角的vr视频流。相应地,vr设备接收服务器发送的第一分辨率的第二视角的vr视频流。

另外,服务器在确定vr设备的视角发生变化时,可以清除第一发送缓存中的数据,准备发送第一分辨率的第二视角的vr视频流。

步骤508,vr设备检测已接收到的第一分辨率的第二视角的vr视频流与当前播放画面的时间戳是否同步;若是,则执行下述步骤509;若否,则执行下述步骤510。

vr设备在接收到第一分辨率的第二视角的vr视频流之后,与当前播放画面的时间戳进行比对,判断两者的时间戳是否同步。可选地,上述同步是指已接收到的第一分辨率的第二视角的vr视频流的时间戳包括当前播放画面的时间戳。也即,如果已接收到的第一分辨率的第二视角的vr视频流的时间戳包括当前播放画面的时间戳,则说明已接收到的第一分辨率的第二视角的vr视频流未过期;如果已接收到的第一分辨率的第二视角的vr视频流的时间戳不包括当前播放画面的时间戳,则说明已接收到的第一分辨率的第二视角的vr视频流可能已过期,vr设备可将过期的vr视频流丢弃。

步骤509,vr设备采用第一分辨率的第二视角的vr视频流,播放第二视角的画面。

如果时间戳同步,则vr设备采用第一分辨率的第二视角的vr视频流播放第二视角的画面。

步骤510,vr设备采用第二分辨率的全视角vr视频流播放第二视角的画面。

如果时间戳未同步,则vr设备仍然采用第二分辨率的全视角vr视频流播放第二视角的画面,直至时间戳同步时,转而采用第一分辨率的第二视角的vr视频流播放第二视角的画面。

可选地,如果时间戳未同步,vr设备向服务器发送同步请求,该同步请求用于请求服务器反馈与当前播放画面的时间戳相同步的vr视频流。服务器接收到vr设备发送的同步请求之后,向vr设备发送一段时间之后vr设备需要的第一分辨率的第二视角的vr视频流。例如,服务器可以根据原始发送的第二视角的vr视频流的时间戳往后推移一段时间,得到新的时间戳,并从新的时间戳开始向vr设备发送第一分辨率的第二视角的vr视频流。又例如,vr设备向服务器发送的同步请求中可以携带当前播放画面的时间戳,服务器可以根据当前播放画面的时间戳以及数据传输、编解码所需的耗时,预测得到新的时间戳,并从新的时间戳开始向vr设备发送第一分辨率的第二视角的vr视频流。当然,在其它可能的实现方式中,服务器在上述步骤507中向vr设备发送第一分辨率的第二视角的vr视频流时,可根据当前发送的第二分辨率的全视角vr视频流的时间戳,从该时间戳开始或者从该时间戳延后一段时间得到的新的时间戳开始,向vr设备发送第一分辨率的第二视角的vr视频流。通过上述方式,可以加快时间戳的同步过程,避免因时间戳长时间不同步而导致vr设备长时间地播放第二分辨率的画面,影响到用户的视觉体验。

另外,考虑到用户在观看vr视频的过程中,其观看视角可能会始终处于变化状态,这就导致vr设备向服务器反馈的视角信息无法跟上实际的观看视角。因此,服务器端还可设置相应的视角预测机制,该视角预测机制用于根据vr设备反馈的视角信息预测实际的观看视角,从而向vr设备反馈其所需视角的视频数据,达到视角同步的目的。

本申请实施例提供的方案中,还通过vr设备检测已接收到的第一分辨率的第二视角的vr视频流与当前播放画面的时间戳是否同步,确保向用户流畅而又准确地播放vr视频。

在上述方法实施例中,仅从vr设备和服务器的交互角度对本申请提供的技术方案进行介绍说明。上述有关vr设备侧的步骤可以单独实现成为vr设备侧的视频播放方法,有关服务器侧的步骤可以单独实现成为服务器侧的视频播放方法。

可以理解的是,设备(例如vr设备、服务器)为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块(或单元)。结合本申请中所公开的实施例描述的各示例的单元及算法步骤,本申请实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同的方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的技术方案的范围。

本申请实施例可以根据上述方法示例对设备(例如vr设备、服务器)进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

在采用集成的单元的情况下,图6a示出了上述实施例中所涉及的设备的一种可能的结构示意图。设备600包括:处理单元602和通信单元603。处理单元602用于对设备600的动作进行控制管理。例如,当设备600为vr设备时,处理单元602用于支持设备600执行图3中的步骤302至304、步骤306,以及图5a中的步骤501、步骤503至506以及步骤508至510,和/或用于执行本文所描述的技术的其它步骤。当设备600为服务器时,处理单元602用于支持设备600执行图3中的步骤301和305,以及图5a中的步骤502和507,和/或用于执行本文所描述的技术的其它步骤。通信单元603用于支持设备600与其它设备的通信。设备600还可以包括存储单元601,用于存储设备600的程序代码和数据。

其中,处理单元502可以是处理器或控制器,例如可以是中央处理器(centralprocessingunit,cpu),通用处理器,数字信号处理器(digitalsignalprocessor,dsp),专用集成电路(application-specificintegratedcircuit,asic),现场可编程门阵列(fieldprogrammablegatearray,fpga)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等等。通信单元603可以是通信接口、收发器、收发电路等,其中,通信接口是统称,可以包括一个或多个接口,例如服务器与vr设备之间的接口。存储单元601可以是存储器。

当处理单元602为处理器,通信单元603为通信接口,存储单元601为存储器时,本申请实施例所涉及的设备可以为图6b所示的设备。

参阅图6b所示,该设备610包括:处理器612、通信接口613、存储器611。可选地,设备610还可以包括总线614。其中,通信接口613、处理器612以及存储器611可以通过总线614相互连接;总线614可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。所述总线614可以分为地址总线、数据总线、控制总线等。为便于表示,图6b中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

上述图6a或图6b所示的设备可以是服务器或vr设备。

结合本申请实施例公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块(或单元)组成,软件模块(或单元)可以被存放于随机存取存储器(randomaccessmemory,ram)、闪存、只读存储器(readonlymemory,rom)、可擦除可编程只读存储器(erasableprogrammablerom,eprom)、电可擦可编程只读存储器(electricallyeprom,eeprom)、寄存器、硬盘、移动硬盘、只读光盘(cd-rom)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于asic中。另外,该asic可以位于设备中。当然,处理器和存储介质也可以作为分立组件存在于设备中。

本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。本申请实施例还提供了计算机程序产品,当该计算机程序产品被执行时,其用于实现上述功能。另外,可以将上述计算机程序存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。

以上所述的具体实施方式,对本申请实施例的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请实施例的具体实施方式而已,并不用于限定本申请实施例的保护范围,凡在本申请实施例的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本申请实施例的保护范围之内。

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