虚拟场景中的视频播放、数据提供方法、客户端及服务器
技术领域
本申请涉及互联网技术领域,特别涉及一种虚拟场景中的视频播放、数据提供方法、客户端及服务器。
背景技术
随着虚拟现实技术的不断发展,沉浸式的视频体验越来越受到人们关注。当前,在实现沉浸式的视频体验时,通常可以基于激光测距的原理,利用三维激光扫描的方法记录真实场景中被测物体表面大量的密集的点的三维坐标、反射率和纹理等信息。这样,通过扫描得到的信息,从而可以渲染出与真实场景一致的虚拟场景。用户可以在虚拟场景中行走、观看,从而达到沉浸式的视频体验。例如,当前可以基于超市、商场这些现实场景构建虚拟场景,那么用户在足不出户的情况下,可以在虚拟场景中实现逛超市和逛商场的活动。
由于通过三维激光扫描的方法通常需要价格昂贵的三维激光扫描仪,并且扫描得到的信息量通常十分巨大,从而导致通过该方法实现沉浸式体验时成本很高。
目前,为了减少成本,现有技术中通常可以通过空间索引立方体全景视频的方式来实现沉浸式的视频体验。具体地,可以将空间索引立方体全景视频输入系统,利用三维图形卡支持的压缩方法对全景视频数据进行压缩和提高绘制速度,从而可以减少构建虚拟场景所需的数据量并且可以加快渲染虚拟场景的速度。然后用户可以利用游戏手柄、鼠标和键盘等外部设备方便灵活地与系统进行交互,从而可以在系统构建出的虚拟场景中进行沉浸式的体验。
然而,现有技术中的这种方式,当用户在虚拟场景中活动时,需要采用外部设备来控制前进、后退、转向等操作,这无疑是一种很不友好的交互方式,无法实现真正的沉浸式体验。
发明内容
本申请实施方式的目的是提供一种虚拟场景中的视频播放、数据提供方法、客户端及服务器,能够在避免使用外部设备时,使得用户能够在虚拟场景中活动,以实现真正的沉浸式体验。
为实现上述目的,本申请实施方式提供一种虚拟场景中的视频播放方法,所述方法包括:接收服务器发来的当前视频片段数据;所述当前视频片段数据表征一个视频片段;所述当前视频片段数据中包括至少一个指定视角,和表示所述指定视角指向的视频片段数据的数据标识;播放所述当前视频片段数据表征的视频片段,并在播放过程中获取用户的当前视角;在所述至少一个指定视角中确定与所述当前视角匹配的目标指定视角;其中,所述目标指定视角指向的视频片段数据表征的视频片段在所述当前视频片段数据表征的视频片段播放结束时播放。
为实现上述目的,本申请实施方式还提供一种客户端,所述客户端包括:网络通信端口、显示器及处理器,其中:所述网络通信端口,用于接收服务器发来的当前视频片段数据;所述显示器,用于播放视频片段;所述处理器,用于通过所述网络通信端口接收服务器发来的当前视频片段数据;所述当前视频片段数据表征一个视频片段;所述当前视频片段数据中包括至少一个指定视角,和表示所述指定视角指向的视频片段数据的数据标识;通过所述显示器播放所述当前视频片段数据表征的视频片段,并在播放过程中获取用户的当前视角;在所述至少一个指定视角中确定与所述当前视角匹配的目标指定视角;其中,所述目标指定视角指向的视频片段数据表征的视频片段在所述当前视频片段数据表征的视频片段播放结束时播放。
为实现上述目的,本申请实施方式还提供一种虚拟场景中的数据提供方法,提供有视频片段数据集,所述视频片段数据集中包括至少一个视频片段数据,所述视频片段数据表征一个视频片段;其中,每个所述视频片段数据中包括至少一个指定视角,和表示所述指定视角指向的视频片段数据的数据标识;所述方法包括:接收客户端发来的视频片段数据加载请求,所述视频片段数据加载请求用于表征用户在所述虚拟场景中当前所处的位置;向所述客户端反馈与所述用户当前所处的位置相对应的当前视频片段数据,以使得所述客户端播放所述当前视频片段数据表征的视频片段,并在播放过程中获取用户的当前视角;接收所述客户端发来的目标视频片段数据的数据标识;其中,指向所述目标视频片段数据的目标指定视角与所述当前视角相匹配。
为实现上述目的,本申请实施方式还提供一种服务器,所述服务器包括网络通信端口、存储器以及处理器,其中:所述网络通信端口,用于与客户端进行网络数据通信;所述存储器,用于存储视频片段数据集,所述视频片段数据集中包括至少一个视频片段数据,所述视频片段数据表征一个视频片段;其中,每个所述视频片段数据中包括至少一个指定视角,和表示所述指定视角指向的视频片段数据的数据标识;所述处理器,用于通过所述网络通信端口接收客户端发来的视频片段数据加载请求,所述视频片段数据加载请求用于表征用户在虚拟场景中当前所处的位置;控制所述网络通信端口向所述客户端反馈与所述用户当前所处的位置相对应的当前视频片段数据,以使得所述客户端播放所述当前视频片段数据表征的视频片段,并在播放过程中获取用户的当前视角;通过所述网络通信端口接收所述客户端发来的目标视频片段数据的数据标识;其中,指向所述目标视频片段数据的目标指定视角与所述当前视角相匹配。
为实现上述目的,本申请实施方式还提供一种虚拟场景中的视频播放方法,提供有视频片段数据集,所述视频片段数据集中包括至少一个视频片段数据,所述视频片段数据表征一个视频片段;其中,每个所述视频片段数据中包括至少一个指定视角,和表示所述指定视角指向的视频片段数据的数据标识;所述方法包括:从所述视频片段数据集中确定与用户在所述虚拟场景中当前所处的位置相对应的当前视频片段数据;播放所述当前视频片段数据表征的视频片段,并在播放过程中获取所述用户的当前视角;在所述当前视频片段数据的至少一个指定视角中确定与所述当前视角匹配的目标指定视角;其中,所述目标指定视角指向的视频片段数据表征的视频片段在所述当前视频片段数据表征的视频片段播放结束时播放。
为实现上述目的,本申请实施方式还提供一种客户端,所述客户端包括存储器、显示器以及处理器,其中:所述存储器,用于存储视频片段数据集,所述视频片段数据集中包括至少一个视频片段数据,所述视频片段数据表征一个视频片段;其中,每个所述视频片段数据中包括至少一个指定视角,和表示所述指定视角指向的视频片段数据的数据标识;所述显示器,用于显示视频片段;所述处理器,用于从所述存储器的视频片段数据集中确定与用户在虚拟场景中当前所处的位置相对应的当前视频片段数据;通过所述显示器播放所述当前视频片段数据表征的视频片段,并在播放过程中获取所述用户的当前视角;在所述当前视频片段数据的至少一个指定视角中确定与所述当前视角匹配的目标指定视角;其中,所述目标指定视角指向的视频片段数据表征的视频片段在所述当前视频片段数据表征的视频片段播放结束时播放。
由上可见,本申请可以通过向用户持续播放视频片段的方式,使得用户可以浏览到虚拟场景中的物体。具体地,在向用户播放当前视频片段时,可以确定用户的当前视角,并根据用户的当前视角,确定下一个要播放的视频片段。这样,在当前视频片段播放完成时,可以播放下一个视频片段。通过用户视角的转变,呈现在用户眼前的视频内容也可能会发生变化。这样便使得用户可以通过视角来实现前进、后退或者停留等操作,从而能够避免使用外部设备,以实现真正的沉浸式体验。
附图说明
为了更清楚地说明本申请实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施方式中服务器与客户端的交互示意图;
图2为本申请实施方式中现实场景的平面示意图;
图3为本申请实施方式中视频片段的示意图;
图4为本申请实施方式中TS格式数据的示意图;
图5为本申请实施方式中正向和反向视频片段的示意图;
图6为本申请实施方式中客户端的结构示意图;
图7为本申请实施方式中服务器的结构示意图;
图8为本申请实施方式中客户端一侧视频播放的方法流程图;
图9为本申请实施方式中客户端的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施方式中的附图,对本申请实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本申请一部分实施方式,而不是全部的实施方式。基于本申请中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都应当属于本申请保护的范围。
本申请实施方式提供一种虚拟场景中的视频播放方法和一种虚拟场景中的数据提供方法。其中,所述视频播放方法可以应用于客户端中,所述数据提供方法可以应用于服务器中。所述服务器可以是存储全景视频数据的设备。具体地,所述服务器可以是能够提供视频服务的网站的后台业务服务器。所述网站例如可以是爱奇艺、搜狐视频、Acfun等。在本实施方式中,所述服务器可以为一个具有数据运算、存储功能以及网络交互功能的电子设备;也可以为运行于该电子设备中,为数据处理、存储和网络交互提供支持的软件。在本实施方式中并不具体限定所述服务器的数量。所述服务器可以为一个服务器,还可以为几个服务器,或者,若干服务器形成的服务器集群。
在本实施方式中,所述客户端可以是用于渲染全景视频数据并可以捕捉用户视角的电子设备。具体地,所述客户端例如可以是具备用户视角捕捉功能的台式电脑、平板电脑、笔记本电脑、智能手机、数字助理、智能可穿戴设备、导购终端、电视机等。或者,所述客户端也可以为能够运行于上述电子设备中的软件。具体的,所述客户端可以为电子设备中的浏览器,所述浏览器中可以加载视频网站平台提供的访问入口。所述视频网站平台例如可以是爱奇艺、搜狐视频、Acfun等,所述访问入口可以是上述网站平台的首页。所述客户端还可以是视频网站平台提供的在智能终端中运行的应用。
本申请提供一种虚拟场景中的视频播放方法。请参阅图1,所述方法可以包括以下步骤。
S1:接收服务器发来的当前视频片段数据;所述当前视频片段数据表征一个视频片段;所述当前视频片段数据中包括至少一个指定视角,和表示所述指定视角指向的视频片段数据的数据标识。
在本实施方式中,可以预先拍摄现实场景中的全景视频,然后基于拍摄的视频来构建与所述现实场景相对应的虚拟场景。具体地,所述现实场景中通常包括可供人行走的至少一条路径,当人在该路径上行走时,可以观赏到沿途的景物。在本实施方式中,可以在所述现实场景中的各条路径上分别进行全景视频的拍摄。例如,请参阅图2,某个现实场景中可以包括8条路径,在实际应用过程中,可以分别拍摄这8条路径中每条路径相对应的全景视频。具体地,由于一条路径上通常可以包含两个行走方向,那么当行人在该路径上沿不同方向行走时,观赏到景物的顺序也是不同的。基于此,在本实施方式中,可以针对每条路径,分别拍摄两个方向的全景视频。这样,每条路径便可以与两段视频相对应。例如,在图2中所示的标号为8的路径中,可以拍摄行走方向为从左至右的全景视频,还可以拍摄行走方向为从右至左的全景视频。这样,标号为8的路径便可以与两段全景视频相对应。
在本实施方式中,在拍摄完每条路径对应的全景视频后,可以将每段视频按照指定的时间间隔划分为至少一个视频片段。例如,某个路径上的全景视频共计25秒,每秒有25帧画面,那么可以按照1秒的时间间隔,将该全景视频划分为25个视频片段,每个视频片段中包含25帧画面。例如,请参阅图3,某段全景视频共计可以划分为Sn个视频片段,每个视频片段中可以包含25帧画面。这样,编号为S2的视频片段中可以包含第26帧至第50帧画面。
在本实施方式中,在将每段全景视频划分为多个视频片段之后,可以为每个视频片段设置至少一个指定视角。具体地,所述指定视角可以是方位角和俯仰角的组合。在本实施方式中,所述指定视角可以表征在虚拟场景中行进的方向。例如,指定视角(0,0)可以表征正前方的行进方向;(π,0)可以表征正后方的行进方向;(π/4,0)可以表征左前方行进方向。举例来说,请参阅图2,在标号为8的路径上,指定视角(0,0)可以表征从左向右的行进方向,指定视角(π,0)可以表征从右向左的行进方向;当行进到标号为8的路径与标号为5的路径的交汇路口时,指定视角(-3π/8,0)可以表征拐向标号为5的路径的行进方向。
在本实施方式中,每个视频片段对应的指定视角可以是根据该视频片段展示的内容在路径中所处的位置确定的。例如,对于图2中的路径8而言,若视频片段展示的内容为路径8的起始点,那么该视频片段通常可以仅对应一个表征向前行走的指定视角;若视频片段表征的内容为路径8的中间段,那么该视频片段通常可以对应向前行走和向后行走的两个指定视角。而如果视频片段展示的内容为路径8的尽头,而该尽头与路径5、路径6以及路径7均存在交汇,那么该视频片段对应的指定视角通常可以较多,分别对应拐向路径5的指定视角、走进路径6的指定视角、拐向路径7的指定视角以及向后行走的指定视角。
在本实施方式中,为视频片段设置的各个指定视角可以分别指向另一个视频片段。其中,指定视角指向视频片段可以表示在当前的视频片段播放完毕之后,可以根据为其设置的指定视角,确定下一个即将播放的视频片段。
在本实施方式中,各个视频片段通常以数据的形式存储于服务器中,这样,所述服务器中便可以具备视频片段数据集。所述视频片段数据集可以通过一定的数据类型存储于服务器中。所述数据类型例如可以MySQL、Oracle、DB2、Sybase等数据库格式中的至少一种。在所述视频片段数据集中,可以包含各个视频片段数据,每个视频片段数据可以表征相应的视频片段。其中,视频片段数据表征视频片段可以指根据所述视频片段数据能够渲染得到相应的视频片段。在本实施方式中,为每个视频片段设置的指定角度也可以包含于所述视频片段数据中。这样,各个所述视频片段数据中便可以包含至少一个指定角度。
在本实施方式中,在服务器中存储的各个视频片段数据通常可以具备数据标识。所述数据标识与对应的视频片段数据之间可以通过键值对(key-value)的形式进行存储。其中,数据标识可以是键,对应的视频片段数据可以是值。这样,通过数据标识可以查询到对应的视频片段数据。基于此,在所述视频片段数据中,除了包含至少一个指定视角,还可以包含表示所述指定视角指向的视频片段数据的数据标识。例如,在一个视频片段数据中,包含两个指定视角(0,0)和(π,0),其中,指定视角(0,0)指向的视频片段数据的数据标识可以是S2;指定视角(π,0)指向的视频片段数据的数据标识可以是S10。
在本实施方式中,指定视角及其对应的数据标识在视频片段数据中可以按照固定格式进行编写。例如,所述指定视角及其对应的数据标识可以写入所述视频片段数据的指定字段中。在该指定字段中,可以预先限定指定视角和数据标识的编写顺序。例如,相对应的一对指定视角和数据标识中,在该指定字段中可以将指定视角书写于数据标识之前。这样,当服务器或者客户端读取视频片段数据时,针对所述指定字段中的内容,可以依次读取指定视角和数据标识,并将连续读取的指定视角和数据标识作为相对应的一对指定视角和数据标识。举例来说,视频片段数据中可以包括两个指定视角(0,0)和(π,0),其中,(0,0)对应的视频片段数据的数据标识可以是S2,(π,0)对应的视频片段数据的数据标识可以是S10。那么在所述视频片段数据的指定字段中,可以书写“(0,0),S2,(π,0),S10”这样的字符串。当然,在实际应用场景中,可以根据视频片段数据的格式,将指定视角和数据标识均通过二进制的方式进行书写。以上的字符串仅仅是为了阐述方便而举的例子,对本申请技术方案的实施并不构成限定。当服务器或者客户端读取所述视频片段数据时,可以依次读取上述字符串中的内容,从而可以识别出相对应的指定视角和数据标识。
在本实施方式中,各个视频片段数据可以存储于服务器中。具体地,服务器中可以存储多个场景中的视频片段数据,为了能够区分不同的场景,可以为同一个场景中的视频片段数据分配相同的场景标识。
在本实施方式中,在客户端中可以显示用于表示各个场景的链接。所述链接可以是文字链接,也可以是图片链接。其中,各个场景的链接可以与相应的场景标识相绑定。当用户触发某个场景的链接时,便可以向服务器发送包含该场景标识的视频加载请求。
在本实施方式中,当服务器接收到所述视频加载请求时,可以从中提取出所述场景标识,并从视频片段数据库中查找到与所述场景标识相对应的视频片段数据。在本实施方式中,某个场景对应的视频片段数据中可以具备一个初始视频片段数据,该初始视频片段数据表征的视频片段可以作为向用户播放的第一个视频片段数据。这样,所述服务器在接收到所述视频加载请求时,可以向服务器反馈所述初始视频片段数据。例如,当用户触发如图2所示的场景的链接时,服务器可以向客户端反馈路径8的起始位置处的视频片段数据;其中,路径8的起始位置处的视频片段数据便可以是该场景对应的初始视频片段数据。这样,用户的视觉体验就是在视频开始播放时,自己身处路径8的起始位置处。
在本实施方式中,当用户在客户端中触发场景的链接时,服务器还可以向客户端反馈该场景的平面图,在该平面图中,可以具备至少一个可选的位置。例如,在图2所示的场景中,路径8和路径5的起始位置均可选。这样,用户在平面图中可以选定某个位置,该位置的信息可以发送至服务器处。这样,所述服务器便可以向客户端反馈与该位置信息相对应的视频片段数据,用户的视觉体验就是在视频片段开始播放时,自己身处之前选择的位置处。
在本实施方式中,客户端当前接收到的视频片段数据可以作为当前视频片段数据。所述当前视频片段数据可以表征一个视频片段。其中,当前视频片段数据表征视频片段可以指通过渲染所述当前视频片段数据可以得到所述视频片段。在本实施方式中,由以上的描述可见,所述当前视频片段数据中可以包括至少一个指定视角,和表示所述指定视角指向的视频片段数据的数据标识。
S2:播放所述当前视频片段数据表征的视频片段,并在播放过程中获取用户的当前视角。
在本实施方式中,所述客户端在接收到服务器发来的当前视频片段数据时,可以通过Open GL、WebGL等绘图标准将所述当前视频片段数据渲染为对应的视频片段,并播放渲染得到的视频片段。由于渲染得到的视频片段是预先在现实场景中进行拍摄的,那么该视频片段在播放时,从用户的视觉体验来看就是随着拍摄的方向在虚拟场景中进行移动。
在本实施方式中,当用户在观看渲染得到的全景视频片段时,可以通过与客户端进行交互来改变客户端当前播放的视角。随着客户端播放视角的改变,呈现在用户面前的景象也可能会不同。这样,客户端当前播放的视角可以作为用户的当前视角。在本实施方式中,当用户没有借助于虚拟现实(Virtual Reality,VR)眼镜时,可以通过在客户端的屏幕上划动的方式来改变客户端当前播放的视角。例如,当用户通过手指在客户端的屏幕上向右划动时,客户端当前播放的视角便可以向左偏转,相当于用户的当前视角在向左偏转,从而可以查看到路径左侧的景物。此外,当用户借助于VR眼镜时,可以通过摆动头部来改变当前视角。在用户摆动头部时,受VR眼镜中陀螺仪的影响,呈现在用户眼前的视频内容也会相应改变。例如,当用户向左转动头部时,VR眼镜当前播放的视角便可以向左偏转,从而可以使得用户查看到路径左侧的景物。
在本实施方式中,在播放当前视频片段数据表征的视频片段的过程中,可以在指定时刻获取用户的当前视角。所述用户的当前视角可以表明用户当前正在观看的方向。在本实施方式中,可以根据用户当前观看的方向,来决定下一个播放的视频片段。具体地,客户端在向用户展示视频片段时,通常具备一个初始的播放视角。例如,在向用户展示图2中路径8起始位置处的视频片段时,初始的播放视角可以是沿着路径8从左向右的正方向。那么当用户与客户端进行交互,改变客户端的播放视角时,可以通过改变后的播放视角与初始的播放视角之间的夹角作为所述用户的当前视角。例如,所述初始的播放视角可以是(0,0),其中第一个0表示方位角为0度,第二个0表示俯仰角为0度。那么当用户在客户端的屏幕上进行划动或者用户扭动头部时,可以导致客户端的播放视角的改变,改变后的播放视角与所述初始的播放视角之间的夹角可以是(20,60),其中,20表示方位角的夹角为20度,60表示俯仰角的夹角为60度。这样,(20,60)便可以作为用户的当前视角。当然,在上述举例中,当前视角是通过方位角和俯仰角来表示的。在实际应用过程中,还可以通过极坐标或者经纬度来表示,本申请对此并不做限制。
在本实施方式中,获取用户当前视角的时机可以是在当前视频片段数据表征的视频片段即将播放结束时。其中,所述即将播放结束的时刻可以通过定量的方式来确定。具体地,可以按照视频片段中剩余未播放的帧数或者已经播放的帧数在总帧数中的占比来确定获取用户当前视角的时机。例如,可以在剩余未播放的帧数在总帧数中的占比减少至10%的时候,触发获取用户的当前视角的指令。又例如,可以在已经播放的帧数在总帧数中的占比增加至80%的时候,触发获取用户的当前视角的指令。当然,在实际应用过程中,还可以根据视频片段已经播放的时间或者剩余未播放的时间在总时间中的占比来确定获取用户当前视角的时机。
S3:在所述至少一个指定视角中确定与所述当前视角匹配的目标指定视角;其中,所述目标指定视角指向的视频片段数据表征的视频片段在所述当前视频片段数据表征的视频片段播放结束时播放。
在本实施方式中,在确定了用户的当前视角后,可以从所述当前视频片段数据中的至少一个指定视角中确定与所述当前视角匹配的目标指定视角。具体地,所述当前视角与目标指定视角匹配可以指所述当前视角与所述目标指定视角相同或者所述当前视角与所述目标指定视角之间的夹角在指定范围内。所述指定范围可以是预先确定的角度值。针对方位角和俯仰角,可以分别设定不同的角度值,也可以设定相同的角度值。例如,方位角和俯仰角对应的角度值可以均设置为45度,那么只要当前视角与所述至少一个指定视角中的某个指定视角之间方位角和俯仰角之间的夹角均在45度之内,则可以将该指定视角作为所述当前视角的目标指定视角。例如,所述至少一个指定视角中有个指定视角为(0,0),而当前视角为(30,-20),那么由于当前视角的俯仰角和方位角与该指定视角的方位角和俯仰角之间的夹角均在45度之内,便可以将(0,0)作为(30,-20)的目标指定视角。
在本实施方式中,在确定了目标指定视角之后,该目标指定视角指向的视频片段数据表征的视频片段便可以为下一个需要播放的视频片段。由此可见,用户通过改变当前视角,可以决定下一个播放的是哪个视频片段。举例来说明,客户端中当前播放的视频片段展示的是图2中路径8最右侧终点位置处的内容。在该视频片段播放快结束时,客户端获取到用户的当前视角为(3π/4,0),也就是说当前用户的视线向路径7的方向偏转。该当前播放的视频片段对应的视频片段数据中,包含四个指定角度,分别为(0,0)、(π/2,0)、(-π/2,0)以及(π,0)。每个指定角度可以分别对应前后π/4的角度范围。那么通过计算当前视角与各个指定视角之间的夹角,发现当前视角与(π/2,0)之间的夹角处于π/4的角度范围内,因此(π/2,0)便可以作为当前视角的目标指定视角。其中,目标指定视角(π/2,0)指向的视频片段为路径7最上端的起始位置处的视频片段,那么在路径8最后位置的视频片段播放完后,便可以播放路径7最上端的初始位置处的视频片段。从用户的视觉效果来看,就可以是用户在路径的尽头向右看时,自动转向了后侧的路径中继续行进,从而可以实现通过用户的视角来改变用户在虚拟环境中位置的功能。
由上可见,所述目标指定视角指向的视频片段数据表征的视频片段可以在所述当前视频片段数据表征的视频片段播放结束时播放,从而给用户产生位置移动的视觉效果,不仅实现过程比较方便(仅需改变当前视角),同时还能避免使用游戏手柄、鼠标和键盘等外部设备,从而减少了成本并且增强了用户体验。
在一个具体应用场景中,用户可以通过佩戴VR眼镜来浏览虚拟场景中的景物。该VR眼镜中可以具备网络通信模块,从而可以与各个视频网站的服务器进行通信连接。用户在VR眼镜中可以访问视频网站的首页,并在首页中通过视线选取自己感兴趣的全景视频。例如,用户当前选择了如图2所示场景的全景视频。此时,视频网站的服务器可以向用户的VR眼镜反馈路径8的起始位置的视频片段数据。这样,当VR眼镜渲染该视频片段数据,并向用户播放渲染得到的视频片段时,用户从视觉效果来看便可以置身于路径8的起始位置处。当该视频片段即将播放结束时,VR眼镜可以获取用户的当前视角为(0,0),表明用户当前正在观看正前方的景象。此时,VR眼镜可以从表征起始位置的视频片段数据中的头部数据字段中读取到(0,0)的指定视角对应的视频片段数据的数据标识,并可以向视频网站的服务器反馈该数据标识。这样,视频网站的服务器便可以将该数据标识指向的视频片段数据反馈给VR眼镜。在当前的视频片段播放结束后,VR眼镜便可以继续播放从视频网站的服务器处再次获取的视频片段数据表征的视频片段。这样,用户的视觉体验就是当视线注视着路径前方时,在虚拟场景中便可以一直向前行走;而当用户扭头看向路径的反方向时,便可以沿着路径的反方向行走。这样,用户可以通过改变当前的视角,从而决定在虚拟场景中的行走方向,不但实现过程比较方便,同时还能避免使用游戏手柄、鼠标和键盘等外部设备,从而减少了成本并且增强了用户体验。
在本申请一个实施方式中,所述当前视频片段数据中可以包括头部数据字段和本体数据字段。其中,所述头部数据字段中可以填充所述视频片段数据在网络中传输时所需的信息。所述头部数据字段中的构成部分通常是固定的。所述本体数据字段中填充的数据可以被客户端进行渲染,从而得到在客户端中展示的视频片段。在本实施方式中,所述至少一个指定视角,和表示所述指定视角指向的视频片段数据的数据标识可以存放于所述头部数据字段中。这样,当客户端接收到所述当前视频片段数据时,可以读取该数据的头部数据字段,并从中获取到包含的指定视角和数据标识。例如,请参阅图4,所述当前视频片段数据可以按照TS(Transport Stream,传输流)格式进行编写,在所述TS格式的数据中,可以包括头部数据字段和有效载荷字段。其中,所述有效载荷字段可以是上述的本体数据字段,在所述有效载荷字段中可以填充用于渲染得到当前视频片段的数据。所述头部数据字段中可以包括同步字节字段、传输错误标志字段、负载起始标志字段、传输优先级标志字段、数据类型字段、加扰优先级标志字段、适配域控制标志字段、连续性计数器字段以及自适应域字段。上述的这些字段可以是TS格式限定的。其中,所述自适应域字段中又可以包含多个字段。具体地,如图4所示,所述自适应域字段中可以包括自适应域长度字段、不连续标志字段、随机访问标志字段、元素流优先级标志字段、标记字段、可选域字段以及填充字节字段。上述的自适应域字段中的各个字段同样可以是TS格式限定的。在本实施方式中,所述可选域字段中还可以包括PCR(Program Clock Reference,程序时钟参考)字段、CPCR(CurrentProgram Clock Reference,当前程序时钟参考)字段,拼接的倒计时字段、传输私有数据长度字段、私有数据字段、自适应域扩展长度字段、标记字段以及可选域字段。上述的TS格式中的各个字段均可以是由TS格式预先限定的。在本实施方式中,所述至少一个指定视角,和表示所述指定视角指向的视频片段数据的数据标识可以存放于头部数据字段的私有数据字段中。在所述私有数据字段中,指定视角和数据标识可以按照TS格式的要求进行编写。具体地,私有数据字段的长度可以由8个比特表示,即最大可以容纳255字节。在本实施方式中,每一组指定视角和数据标识可以作为一个单位结构,每个单位结构可以占用12个字节。每个单位结构中可以包括两个浮点型表示的指定视角以及一个整数型表示的数据标识。其中,两个浮点型分别用于表征指定视角中的方位角和俯仰角。举例来说明,假设当前视频片段数据中包括两组指定视角和数据标识,每组指定视角和数据标识可以通过12个字节来表示,那么所述当前视频片段数据中可以通过24个字节来表征这两组指定视角和数据标识。需要说明的是,上述的TS格式的数据仅仅是为了阐述本申请技术方案而进行的举例,并不表明本申请的技术方案仅适用于TS格式的数据中。实际上,在其他格式的数据中,只要存在自定义的字段,均可以通过自定义的字段填充指定视角和数据标识。
在本申请一个实施方式中,在所述至少一个指定视角中确定了与所述当前视角匹配的目标指定视角之后,所述客户端还可以将所述目标指定视角指向的视频片段数据的数据标识发送至所述服务器,以从所述服务器中获取所述目标指定视角指向的视频片段数据。
在本实施方式中,所述服务器中可以将数据标识与视频片段数据进行关联存储。具体地,所述数据标识与对应的视频片段数据之间可以通过键值对(key-value)的形式进行存储。其中,数据标识可以是键,对应的视频片段数据可以是值。这样,通过数据标识可以查询到对应的视频片段数据。这样,当服务器接收到客户端发来的所述目标指定视角指向的视频片段数据的数据标识时,便可以从视频片段数据库中获取与接收到的数据标识相对应的视频片段数据,并将该视频片段数据反馈给所述客户端,以使得客户端在播放完当前视频片段后,播放该视频片段数据表征的视频片段。所述目标指定视角与数据标识相对应,而数据标识又可以与该视频片段数据相关联,这样,该视频片段数据可以视为所述目标指定视角指向的视频片段数据。
在本申请一个实施方式中,为了提高视频播放的流畅程度,可以在播放当前视频片段时,预先将与所述当前视频片段相关的其它视频片段加载至客户端中,从而在当前视频片段播放完后,可以直接从本地调用即将播放的下一个视频片段,具体地,在本实施方式中,在接收服务器发来的当前视频片段数据之后,还可以从所述服务器中获取所述当前视频片段数据中包含的各个视频片段数据的数据标识指向的视频片段数据。例如,所述当前视频片段数据中共包括4组指定视角和数据标识,那么当客户端接收到所述当前视频片段数据时,可以识别其中包含的四个数据标识,并向服务器发送包含这四个数据标识的数据获取请求,从而可以从服务器处预先将这四个数据标识指向的视频片段数据加载至本地。这样,在所述至少一个指定视角中确定与所述当前视角匹配的目标指定视角之后,可以从获取的各个所述视频片段数据中,确定所述目标指定视角指向的目标视频片段数据,并在所述当前视频片段数据表征的视频片段播放结束时,播放所述目标视频片段数据表征的视频片段。通过这种预先加载视频片段数据的方法,可以提高视频播放的流畅程度。
在本申请一个实施方式中,所述虚拟场景中的每个路径可以包含正向和反向两个方向,基于此,所述服务器中的每个视频片段数据还可以具备方向信息,所述方向信息可以用于表征视频片段是沿着路径的正向播放还是沿着路径的反向播放。例如,图2中路径8上播放顺序为从左向右的视频片段对应的方向信息为正向,播放顺序从右向左的视频片段对应的方向信息便可以是反向。考虑到当用户在虚拟场景中活动时,其活动的轨迹通常具备一定的惯性。该惯性体现在:如果给用户播放的当前视频片段为正向视频片段,那么下一个播放的视频片段也有很大概率为正向视频片段。基于此,在接收服务器发来的当前视频片段数据之后,可以在所述当前视频片段数据包含的各个数据标识中,确定与所述当前视频片段数据的方向信息一致的视频片段数据的数据标识,并从所述服务器处获取确定的所述数据标识指向的视频片段数据。这样,客户端在获取了当前视频片段数据之后,可以紧接着从服务器中获取与所述当前视频片段数据的方向信息一致的视频片段数据。这样,在当前视频片段播放完之后,有较大的概率会播放从服务器中获取的方向信息一致的该视频片段,从而可以通过预加载的方式,提高视频播放的流畅程度。
在本申请一个实施方式中,视频片段数据中的每个所述指定视角可以与视角区间相对应。所述视角区间中可以包含所述指定视角。例如,指定视角(0,0)对应的视角区间可以是(-π/4,0)至(π/4,0)。这样,在所述至少一个指定视角中确定与所述当前视角匹配的目标指定视角时,可以确定所述当前视角所处的视角区间,并将确定的所述视角区间对应的指定视角作为所述目标指定视角。例如,所述当前视角为(π/8,0),那么该当前视角便位于(-π/4,0)至(π/4,0)的视角区间中,从而可以将该视角区间对应的指定视角(0,0)作为所述当前视角的目标指定视角。
在本申请一个实施方式中,若在所述至少一个指定视角中不存在与所述当前视角匹配的目标指定视角,则表明根据用户的当前视角,无法确定下一个需要播放的视频切片,那么这种情况可以对应到用户在虚拟场景中停留的情形。例如,用户的当前视角位于各个指定视角对应的视角区间之外,从而不存在与所述当前视角对应的目标指定视角。在这种情况下,可以在所述当前视频片段数据表征的视频片段播放结束时,显示所述当前视频片段数据表征的视频片段中的一帧画面,从而达到视频暂停的效果。为了保持画面的连贯性,暂停显示的一帧画面通常是当前视频片段中的最后一帧画面。
在本申请一个实施方式中,为了减少全景视频的拍摄成本,针对现实场景中的每个路径,可以仅拍摄沿指定方向的全景视频,从而使得每条路径与在所述路径上沿指定方向进行拍摄的全景视频相关联。在本在本实施方式中,该指定方向的全景视频可以作为正向全景视频,与该指定方向相反的全景视频可以作为反向全景视频。在本实施方式中,所述全景视频可以均按照指定时间间隔被划分为至少一个视频片段。例如,某个路径上的全景视频共计25秒,每秒有25帧画面,那么可以按照1秒的时间间隔,将该全景视频划分为25个视频片段,每个视频片段中包含25帧画面。
在本实施方式中,可以通过根据所述全景视频划分得到的视频片段,生成与各个所述视频片段分别对应的反向视频片段;其中,所述反向视频片段的播放顺序与对应的视频片段的播放顺序相反。具体地,由于全景视频包含360°的信息,那么将正向全景视频进行倒序播放时,便可以得到所述反向全景视频。具体地,将正向全景视频中的每个视频片段进行反向播放,便可以得到反向全景视频中的各个视频片段。这样,所述反向全景视频和所述正向全景视频中可以包含相同数量的视频片段,并且所述反向全景视频中的视频片段的播放顺序与所述正向全景视频中对应的视频片段的播放顺序相反。例如,请参阅图5,左侧为正向全景视频划分得到的Sn个视频片段,每个视频片段中可以包含25帧画面。这样,编号为S2的视频片段中可以包含第26帧至第50帧画面。在视频片段S2播放时,便可以从第26帧画面开始,依次播放每帧画面,直至播放完第50帧画面为止。在根据正向全景视频生成反向全景视频时,可以将正向全景视频中每个视频片段进行反向播放,从而得到反向全景视频中的各个视频片段。例如,对于正向全景视频中的视频片段S2,可以将第50帧画面作为第一个播放的画面,并将第26帧画面作为最后一个播放的画面。那么按照这样的顺序进行播放的视频片段,便可以得到反向全景视频中的视频片段Sn+1。
请参阅图6,本申请还提供一种客户端,所述客户端包括网络通信端口100、显示器200以及处理器300。
其中,所述网络通信端口100,用于接收服务器发来的当前视频片段数据。
所述显示器200,用于播放视频片段。
所述处理器300,用于通过所述网络通信端口接收服务器发来的当前视频片段数据;所述当前视频片段数据表征一个视频片段;所述当前视频片段数据中包括至少一个指定视角,和表示所述指定视角指向的视频片段数据的数据标识;通过所述显示器播放所述当前视频片段数据表征的视频片段,并在播放过程中获取用户的当前视角;在所述至少一个指定视角中确定与所述当前视角匹配的目标指定视角;其中,所述目标指定视角指向的视频片段数据表征的视频片段在所述当前视频片段数据表征的视频片段播放结束时播放。
在本实施方式中,所述网络通信端口100可以是与不同的通信协议进行绑定,从而可以发送或接收不同数据的虚拟端口。例如,所述网络通信端口可以是负责进行web数据通信的80号端口,也可以是负责进行FTP数据通信的21号端口,还可以是负责进行邮件数据通信的25号端口。此外,所述网络通信端口还可以是实体的通信接口或者通信芯片。例如,其可以为无线移动网络通信芯片,如GSM、CDMA等;其还可以为Wifi芯片;其还可以为蓝牙芯片。
在本实施方式中,所述显示器200可以是将一定的电子文件通过特定的传输设备显示到屏幕上再反射到人眼的显示工具。所述显示器可以包括液晶LCD显示屏、阴极射线管CRT显示屏、发光二极管LED显示屏等。
所述处理器300可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific IntegratedCircuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。本申请并不作限定。
上述实施方式公开的客户端,其网络通信端口100、显示器200以及处理器300实现的具体功能,可以与本申请中虚拟场景中的视频播放方法的实施方式相对照解释,可以实现本申请的虚拟场景中的视频播放方法的实施方式并达到方法实施方式的技术效果。
本申请还提供一种虚拟场景中的数据提供方法,所述方法可以应用于服务器中。在本实施方式中,所述服务器中可以提供有视频片段数据集,所述视频片段数据集中包括至少一个视频片段数据,所述视频片段数据表征一个视频片段;其中,每个所述视频片段数据中包括至少一个指定视角,和表示所述指定视角指向的视频片段数据的数据标识。请参阅图1,所述方法可以包括以下步骤。
S10:接收客户端发来的视频片段数据加载请求,所述视频片段数据加载请求用于表征用户在所述虚拟场景中当前所处的位置。
S20:向所述客户端反馈与所述用户当前所处的位置相对应的当前视频片段数据,以使得所述客户端播放所述当前视频片段数据表征的视频片段,并在播放过程中获取用户的当前视角。
S30:接收所述客户端发来的目标视频片段数据的数据标识;其中,指向所述目标视频片段数据的目标指定视角与所述当前视角相匹配。
在本实施方式中,在客户端中可以显示用于表示各个场景的链接。所述链接可以是文字链接,也可以是图片链接。其中,各个场景的链接可以与相应的场景标识相绑定。当用户触发某个场景的链接时,便可以向服务器发送包含该场景标识的视频加载请求。
在本实施方式中,当服务器接收到所述视频加载请求时,可以从中提取出所述场景标识,并从视频片段数据库中查找到与所述场景标识相对应的视频片段数据。在本实施方式中,某个场景对应的视频片段数据中可以具备一个初始视频片段数据,该初始视频片段数据表征的视频片段可以作为向用户播放的第一个视频片段数据。这样,所述服务器在接收到所述视频加载请求时,可以向服务器反馈所述初始视频片段数据。例如,当用户触发如图2所示的场景的链接时,服务器可以向客户端反馈路径8的起始位置处的视频片段数据;其中,路径8的起始位置处的视频片段数据便可以是该场景对应的初始视频片段数据。这样,用户的视觉体验就是在视频开始播放时,自己身处路径8的起始位置处。由此可见,客户端向服务器发送的视频片段数据加载请求,可以用于表征用户在所述虚拟场景中当前所处的位置。在该场景中,用户在所述虚拟场景中当前所处的位置便可以是所述初始视频片段数据表征的初始位置。
在本实施方式中,当用户在客户端中触发场景的链接时,服务器还可以向客户端反馈该场景的平面图,在该平面图中,可以具备至少一个可选的位置。例如,在图2所示的场景中,路径8和路径5的起始位置均可选。这样,用户在平面图中可以选定某个位置,该位置的信息便可以作为视频加载请求发送至服务器处。这样,所述服务器便可以向客户端反馈与该位置信息相对应的视频片段数据,用户的视觉体验就是在视频片段开始播放时,自己身处之前选择的位置处。由此可见,在该场景中,用户在所述虚拟场景中当前所处的位置便可以是用户自己选择的位置。
在本实施方式中,服务器在获取到与所述用户当前所处的位置相对应的当前视频片段数据后,可以向所述客户端反馈所述当前视频片段数据。在本实施方式中,所述客户端在接收到服务器发来的当前视频片段数据时,可以通过Open GL、WebGL等绘图标准将所述当前视频片段数据渲染为对应的视频片段,并播放渲染得到的视频片段。由于渲染得到的视频片段是预先在现实场景中进行拍摄的,那么该视频片段在播放时,从用户的视觉体验来看就是随着拍摄的方向在虚拟场景中进行移动。
在本实施方式中,当用户在观看渲染得到的全景视频片段时,可以通过与客户端进行交互来改变客户端当前播放的视角。随着客户端播放视角的改变,呈现在用户面前的景象也可能会不同。这样,客户端当前播放的视角可以作为用户的当前视角。在本实施方式中,当用户没有借助于虚拟现实(Virtual Reality,VR)眼镜时,可以通过在客户端的屏幕上划动的方式来改变客户端当前播放的视角。例如,当用户通过手指在客户端的屏幕上向右划动时,客户端当前播放的视角便可以向左偏转,相当于用户的当前视角在向左偏转,从而可以查看到路径左侧的景物。此外,当用户借助于VR眼镜时,可以通过摆动头部来改变当前视角。在用户摆动头部时,受VR眼镜中陀螺仪的影响,呈现在用户眼前的视频内容也会相应改变。例如,当用户向左转动头部时,VR眼镜当前播放的视角便可以向左偏转,从而可以使得用户查看到路径左侧的景物。
在本实施方式中,在播放当前视频片段数据表征的视频片段的过程中,可以在指定时刻获取用户的当前视角。所述用户的当前视角可以表明用户当前正在观看的方向。在本实施方式中,可以根据用户当前观看的方向,来决定下一个播放的视频片段。具体地,客户端在向用户展示视频片段时,通常具备一个初始的播放视角。例如,在向用户展示图2中路径8起始位置处的视频片段时,初始的播放视角可以是沿着路径8从左向右的正方向。那么当用户与客户端进行交互,改变客户端的播放视角时,可以通过改变后的播放视角与初始的播放视角之间的夹角作为所述用户的当前视角。例如,所述初始的播放视角可以是(0,0),其中第一个0表示方位角为0度,第二个0表示俯仰角为0度。那么当用户在客户端的屏幕上进行划动或者用户扭动头部时,可以导致客户端的播放视角的改变,改变后的播放视角与所述初始的播放视角之间的夹角可以是(20,60),其中,20表示方位角的夹角为20度,60表示俯仰角的夹角为60度。这样,(20,60)便可以作为用户的当前视角。当然,在上述举例中,当前视角是通过方位角和俯仰角来表示的。在实际应用过程中,还可以通过极坐标或者经纬度来表示,本申请对此并不做限制。
在本实施方式中,客户端在确定了用户的当前视角后,可以从所述当前视频片段数据中的至少一个指定视角中确定与所述当前视角匹配的目标指定视角。具体地,所述当前视角与目标指定视角匹配可以指所述当前视角与所述目标指定视角相同或者所述当前视角与所述目标指定视角之间的夹角在指定范围内。
在本实施方式中,客户端在确定了目标指定视角之后,可以从当前视频片段数据中获取所述目标指定视角指向的目标视频片段数据的数据标识。在获取了目标视频片段数据的数据标识后,客户端可以将该数据标识发送至所述服务器。这样,所述服务器可以接收所述客户端发来的目标视频片段数据的数据标识。在服务器获取到该数据标识后,可以从视频片段数据集中获取该数据标识对应的视频片段数据,并将该视频片段数据反馈至客户端,以使得客户端在播放完当前视频片段后,继续播放服务器反馈的视频片段数据表征的视频片段。
在本申请一个实施方式中,所述视频片段数据集中的各个视频片段数据均包括头部数据字段和本体数据字段;其中,所述至少一个指定视角,和表示所述指定视角指向的视频片段数据的数据标识存放于所述头部数据字段中。
在本申请一个实施方式中,每个所述指定视角与视角区间相对应;相应地,指向所述目标视频片段数据的目标指定视角与所述当前视角相匹配包括:所述当前视角处于所述目标指定视角的视角区间内。
在本申请一个实施方式中,所述虚拟场景中包括至少一条路径,其中,每条所述路径与在所述路径上沿指定方向进行拍摄的全景视频相关联;其中,所述全景视频均按照指定时间间隔被划分为至少一个视频片段。
在本申请一个实施方式中,所述方法还包括:通过根据所述全景视频划分得到的视频片段,生成与各个所述视频片段分别对应的反向视频片段;其中,所述反向视频片段的播放顺序与对应的视频片段的播放顺序相反。
上述各个实施方式的具体实现过程,在虚拟场景中的视频播放方法的实施方式中均有描述,这里便不再赘述。
请参阅图7,本申请还提供一种服务器,所述服务器包括网络通信端口110、存储器210及处理器310。
其中,所述网络通信端口110,用于与客户端进行网络数据通信。
所述存储器210,用于存储视频片段数据集,所述视频片段数据集中包括至少一个视频片段数据,所述视频片段数据表征一个视频片段;其中,每个所述视频片段数据中包括至少一个指定视角,和表示所述指定视角指向的视频片段数据的数据标识。
所述处理器310,用于通过所述网络通信端口接收客户端发来的视频片段数据加载请求,所述视频片段数据加载请求用于表征用户在虚拟场景中当前所处的位置;控制所述网络通信端口向所述客户端反馈与所述用户当前所处的位置相对应的当前视频片段数据,以使得所述客户端播放所述当前视频片段数据表征的视频片段,并在播放过程中获取用户的当前视角;通过所述网络通信端口接收所述客户端发来的目标视频片段数据的数据标识;其中,指向所述目标视频片段数据的目标指定视角与所述当前视角相匹配。
在本实施方式中,所述网络通信端口110可以是与不同的通信协议进行绑定,从而可以发送或接收不同数据的虚拟端口。例如,所述网络通信端口可以是负责进行web数据通信的80号端口,也可以是负责进行FTP数据通信的21号端口,还可以是负责进行邮件数据通信的25号端口。此外,所述网络通信端口还可以是实体的通信接口或者通信芯片。例如,其可以为无线移动网络通信芯片,如GSM、CDMA等;其还可以为Wifi芯片;其还可以为蓝牙芯片。
在本实施方式中,所述存储器210可以是用于保存信息的记忆设备。在数字系统中,能保存二进制数据的设备可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也可以为存储器,如RAM、FIFO等;在系统中,具有实物形式的存储设备也可以叫存储器,如内存条、TF卡等。
所述处理器310可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific IntegratedCircuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。本申请并不作限定。
上述实施方式公开的服务器,其网络通信端口110、存储器210以及处理器310实现的具体功能,可以与本申请中虚拟场景中的数据提供方法的实施方式相对照解释,可以实现本申请的虚拟场景中的数据提供方法的实施方式并达到方法实施方式的技术效果。
以上介绍的实施方式,均是基于客户端和服务器的架构进行描述的,在视频片段播放过程中,客户端与服务器之间均会产生一定的数据交互。在本申请中,录制的全景视频以及划分的视频片段数据还可以预先全部加载至客户端本地,那么在进行视频片段播放时,客户端完全可以离线运行,无需与服务器进行交互。具体地,本申请还提供一种虚拟场景中的视频播放方法,该方法可以应用于客户端中。其中,所述客户端可以提供有视频片段数据集,所述视频片段数据集中包括至少一个视频片段数据,所述视频片段数据表征一个视频片段;其中,每个所述视频片段数据中包括至少一个指定视角,和表示所述指定视角指向的视频片段数据的数据标识。所述视频片段数据集可以是预先从服务器处加载至本地的,也可以是直接在本地导入的。请参阅图8,所述方法可以包括以下步骤。
S110:从所述视频片段数据集中确定与用户在所述虚拟场景中当前所处的位置相对应的当前视频片段数据;
S210:播放所述当前视频片段数据表征的视频片段,并在播放过程中获取所述用户的当前视角;
S310:在所述当前视频片段数据的至少一个指定视角中确定与所述当前视角匹配的目标指定视角;其中,所述目标指定视角指向的视频片段数据表征的视频片段在所述当前视频片段数据表征的视频片段播放结束时播放。
在本实施方式中,在客户端中同样可以显示用于表示各个场景的链接。只不过当用户触发某个场景的链接时,可以直接从客户端本地的视频片段数据集中查找到与该场景的链接相对应的视频片段数据。具体地,该场景对应的视频片段数据中可以具备一个初始视频片段数据,该初始视频片段数据表征的视频片段可以作为客户端向用户播放的第一个视频片段数据。例如,当用户触发如图2所示的场景的链接时,客户端可以从视频片段数据集中获取到路径8的起始位置处的视频片段数据;其中,路径8的起始位置处的视频片段数据便可以是该场景对应的初始视频片段数据。这样,客户端便可以直接渲染获取到的该初始视频片段数据,并向用户播放渲染得到的视频片段。这样,用户的视觉体验就是在视频开始播放时,自己身处路径8的起始位置处。在该场景中,用户在所述虚拟场景中当前所处的位置便可以是所述初始视频片段数据表征的初始位置。
当然,在本实施方式中,当用户在客户端中触发场景的链接时,客户端还可以向用户展示该场景的平面图,在该平面图中,可以具备至少一个可选的位置。例如,在图2所示的场景中,路径8和路径5的起始位置均可选。用户在平面图中可以选定某个位置,该位置的信息便可以被客户端接收到。这样,客户端便可以从本地的视频片段数据集中查询与该位置信息相对应的视频片段数据,从而可以渲染查询到的视频片段数据,并向用户播放渲染得到的视频片段。用户的视觉体验就是在视频片段开始播放时,自己身处之前选择的位置处。在该场景中,用户在所述虚拟场景中当前所处的位置便可以是用户自己选择的位置。
后续步骤S210中获取用户当前视角以及S310中确定与所述当前视角匹配的目标指定视角的过程均与前述实施方式中的描述一致,这里便不再赘述。不同之处在于,在获取到与当前视角匹配的目标指定视角后,该目标指定视角指向的视频片段数据可以从客户端本地的视频片段数据集中获取,获取的视频片段数据可以在当前视频片段数据表征的视频片段播放结束之后,进行渲染播放。
在本申请一个实施方式中,所述视频片段数据集中的各个视频片段数据均包括头部数据字段和本体数据字段;其中,所述至少一个指定视角,和表示所述指定视角指向的视频片段数据的数据标识存放于所述头部数据字段中。
在本申请一个实施方式中,在所述当前视频片段数据的至少一个指定视角中确定与所述当前视角匹配的目标指定视角之后,所述方法还包括:根据所述目标指定视角指向的视频片段数据的数据标识,从所述视频片段数据集中确定所述数据标识对应的目标视频片段数据,并在所述当前视频片段数据表征的视频片段播放结束时,播放所述目标视频片段数据表征的视频片段。
在本申请一个实施方式中,每个所述指定视角与视角区间相对应;相应地,在所述当前视频片段数据的至少一个指定视角中确定与所述当前视角匹配的目标指定视角包括:确定所述当前视角所处的视角区间,并将确定的所述视角区间对应的指定视角作为所述目标指定视角。
在本申请一个实施方式中,若在所述当前视频片段数据的至少一个指定视角中不存在与所述当前视角匹配的目标指定视角,所述方法还包括:在所述当前视频片段数据表征的视频片段播放结束时,显示所述当前视频片段数据表征的视频片段中的一帧画面。
在本申请一个实施方式中,所述虚拟场景中包括至少一条路径,其中,每条所述路径与在所述路径上沿指定方向进行拍摄的全景视频相关联;其中,所述全景视频均按照指定时间间隔被划分为至少一个视频片段。
在本申请一个实施方式中,所述方法还包括:通过根据所述全景视频划分得到的视频片段,生成与各个所述视频片段分别对应的反向视频片段;其中,所述反向视频片段的播放顺序与对应的视频片段的播放顺序相反。
上述各个实施方式的具体实现过程,在虚拟场景中的视频播放方法的实施方式中均有描述,这里便不再赘述。与虚拟场景中的视频播放方法的实施方式的不同之处在于,本实施方式中视频片段数据均在客户端本地存储,因此当涉及视频片段数据的查询和获取时,均可以在离线的情况下实现,并且从本地加载视频片段数据的速度通常会比从服务器处下载视频片段数据的速度快,从而可以提高视频片段播放的流畅程度。
请参阅图9,本申请还提供一种客户端,所述客户端包括存储器120、显示器220以及处理器320。
其中,所述存储器120,用于存储视频片段数据集,所述视频片段数据集中包括至少一个视频片段数据,所述视频片段数据表征一个视频片段;其中,每个所述视频片段数据中包括至少一个指定视角,和表示所述指定视角指向的视频片段数据的数据标识。
所述显示器220,用于显示视频片段。
所述处理器320,用于从所述存储器的视频片段数据集中确定与用户在虚拟场景中当前所处的位置相对应的当前视频片段数据;通过所述显示器播放所述当前视频片段数据表征的视频片段,并在播放过程中获取所述用户的当前视角;在所述当前视频片段数据的至少一个指定视角中确定与所述当前视角匹配的目标指定视角;其中,所述目标指定视角指向的视频片段数据表征的视频片段在所述当前视频片段数据表征的视频片段播放结束时播放。
在本实施方式中,所述存储器120可以是用于保存信息的记忆设备。在数字系统中,能保存二进制数据的设备可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也可以为存储器,如RAM、FIFO等;在系统中,具有实物形式的存储设备也可以叫存储器,如内存条、TF卡等。
在本实施方式中,所述显示器220可以是将一定的电子文件通过特定的传输设备显示到屏幕上再反射到人眼的显示工具。所述显示器可以包括液晶LCD显示屏、阴极射线管CRT显示屏、发光二极管LED显示屏等。
所述处理器320可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific IntegratedCircuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。本申请并不作限定。
上述实施方式公开的客户端,其存储器120、显示器220以及处理器320实现的具体功能,可以与本申请中客户端单侧的虚拟场景中的视频播放方法的实施方式相对照解释,可以实现本申请的虚拟场景中的视频播放方法的实施方式并达到方法实施方式的技术效果。
由上可见,本申请可以通过向用户持续播放视频片段的方式,使得用户可以浏览到虚拟场景中的物体。具体地,在向用户播放当前视频片段时,可以确定用户的当前视角,并根据用户的当前视角,确定下一个要播放的视频片段。这样,在当前视频片段播放完成时,可以播放下一个视频片段。通过用户视角的转变,呈现在用户眼前的视频内容也可能会发生变化。这样便使得用户可以通过视角来实现前进、后退或者停留等操作,从而能够避免使用外部设备,以实现真正的沉浸式体验。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog2。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
本领域技术人员也知道,除了以纯计算机可读程序代码方式实现客户端、服务器以外,完全可以通过将方法步骤进行逻辑编程来使得客户端、服务器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种客户端、服务器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施方式或者实施方式的某些部分所述的方法。
本说明书中的各个实施方式均采用递进的方式描述,各个实施方式之间相同相似的部分互相参见即可,每个实施方式重点说明的都是与其他实施方式的不同之处。尤其,针对服务器和客户端的实施方式来说,均可以参照前述方法的实施方式的介绍对照解释。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
虽然通过实施方式描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。