一种视频数据的处理方法及装置与流程

文档序号:14098594阅读:282来源:国知局

本发明涉及流媒体数据处理领域,尤其涉及一种视频数据的处理方法及装置。



背景技术:

随着虚拟现实(英文:virtualreality,vr)技术的日益发展完善,360度视角等vr视频的观看应用越来越多地呈现在用户面前。在vr视频观看过程中,用户随时可能变换视角(英文:fieldofview,fov),此时出现在用户视角内的vr视频图像也应当随着切换。在vr的应用中,在上述应用场景的用户体验上,用户既要快速看到切换后的新画面,也要看到高质量的新画面。因此,如何实现vr视频图像的高效高质量切换,是vr应用中的视频码流数据处理亟待解决的问题之一。

现有技术将vr视频观看的全景空间划分为多个空间对象,并为每个空间对象准备一组基于通过超文本传输协议(英文:hypertexttransferprotocol,http)动态自适应(英文:dynamicadaptivestreamingoverhttp,dash)码流。在用户变换视角时,终端选择切换后的视角对应的空间对象的dash码流进行播放,实现不同视角的视频图像切换。每个区域对应的dash码流中包含多个分段(英文:segment),视频图像切换具体表现为segment与segment之间的播放切换。视角切换时,需要等待当前播放的segment播放结束之后才能切入下一个segment。在动态图像专家组(英文:movingpictureexpertsgroup,mpeg)组织批准的现有mpeg-dash标准中,规定了表示不同的视频质量的码流之间的segment的切换方式。但是在现在的大部分应用当中,每个segment的时长(英文:duration)为5秒等较长的时间,因此视角切换时,用户可能需要等待5秒才能看到切换后的新视角的画面。然而,在vr应用中,视角切换的时延超过200ms则将给用户带来不适,因此5秒的时间间隔将会给用户带来不适,终端的用户体验低,vr视频观看的效果差。



技术实现要素:

一、mpeg-dash技术介绍

2011年11月,mpeg组织批准了dash标准,dash标准是基于http协议传输媒体流的技术规范(以下称dash技术规范);dash技术规范主要由两大部分组成:媒体呈现描述(英文:mediapresentationdescription,mpd)和媒体文件格式(英文:fileformat)。

1、媒体文件格式

在dash中服务器会为同一个视频内容准备多种版本的码流,每个版本的码流在dash标准中称为表示(英文:representation)。表示是在传输格式中的一个或者多个码流的集合和封装,一个表达中包含一或者多个分段。不同版本的码流的码率、分辨率等编码参数可以不同,每个码流分割成多个小的文件,每个小文件被称为分段(英文:segment)。在客户端请求媒体分段数据的过程中可以在不同的表示之间切换,如图3所示,服务器为一部电影准备了3个表示,包括rep1,rep2,rep3。其中,rep1是码率为4mbps(每秒兆比特)的高清视频,rep2是码率为2mbps的标清视频,rep3是码率为1mbps的标清视频。图3中标记为阴影的分段是客户端请求播放的分段数据,客户端请求的前三个分段是表示rep3的分段,第四个分段切换到rep2,请求第四个分段,之后切换到rep1,请求第五个分段和第六个分段等。每个表示的分段可以首尾相接的存在一个文件中,也可以独立存储为一个个的小文件。segment可以按照标准iso/iec14496-12中的格式封装(isobmff(basemediafileformat)),也可以是按照iso/iec13818-1中的格式封装(mpeg-2ts)。

2、媒体呈现描述

在dash标准中,媒体呈现描述被称为mpd,mpd可以是一个xml的文件,文件中的信息是采用分级方式描述,如图2所示,上一级的信息被下一级完全继承。在该文件中描述了一些媒体元数据,这些元数据可以使得客户端了解服务器中的媒体内容信息,并且可以使用这些信息构造请求segment的http-url。

在dash标准中,媒体呈现(英文:mediapresentation),是呈现媒体内容的结构化数据的集合;媒体呈现描述(英文:mediapresentationdescription),一个规范化描述媒体呈现的文件,用于提供流媒体服务;时期(英文:period),一组连续的时期组成整个媒体呈现,时期具有连续和不重叠的特性;表示(英文:representation),封装有一个或多个具有描述性元数据的的媒体内容成分(编码的单独的媒体类型,例如音频、视频等)的结构化的数据集合即表示是传输格式中一个或者多个码流的集合和封装,一个表示中包含一个或者多个分段;自适应集(英文:adaptationset),表示同一媒体内容成分的多个可互替换的编码版本的集合,一个自适应集包含一个或者多个表示;子集(英文:subset),一组自适应集合的组合,当播放器播放其中所有自适应集合时,可以获得相应的媒体内容;分段信息,是媒体呈现描述中的http统一资源定位符引用的媒体单元,分段信息描述媒体数据的分段,媒体数据的分段可以存储在一个文件中,也可以单独存储,在一种可能的方式中,mpd中会存储媒体数据的分段。

本发明有关mpeg-dash技术的相关技术概念可以参考iso/iec23009-1:2014informationtechnology--dynamicadaptivestreamingoverhttp(dash)--part1:mediapresentationdescriptionandsegmentformats,中的有关规定,也可以参考历史标准版本中的相关规定,如iso/iec23009-1:2013或iso/iec23009-1:2012等。

二、虚拟现实(virtualreality,vr)技术介绍

虚拟现实技术是一种可以创建和体验虚拟世界的计算机仿真系统,它利用计算机生成一种模拟环境,是一种多源信息融合的交互式的三维动态视景和实体行为的系统仿真,可以使用户沉浸到该环境中。vr主要包括模拟环境、感知、自然技能和传感设备等方面。模拟环境是由计算机生成的、实时动态的三维立体逼真图像。感知是指理想的vr应该具有一切人所具有的感知。除计算机图形技术所生成的视觉感知外,还有听觉、触觉、力觉、运动等感知,甚至还包括嗅觉和味觉等,也称为多感知。自然技能是指人的头部转动,眼睛、手势、或其他人体行为动作,由计算机来处理与参与者的动作相适应的数据,并对用户的输入作出实时响应,并分别反馈到用户的五官。传感设备是指三维交互设备。当vr视频(或者360度视频,或者全方位视频(英文:omnidirectionalvideo))在头戴设备和手持设备上呈现时,只有对应于用户头部的方位部分的视频图像呈现和相关联的音频呈现。

vr视频和通常的视频(英文:normalvideo)的差别在于通常的视频是整个视频内容都会被呈现给用户;vr视频是只有整个视频的一个子集被呈现给用户(英文:invrtypicallyonlyasubsetoftheentirevideoregionrepresentedbythevideopictures)。

三、现有dash标准的空间描述:

现有标准中,对空间信息的描述原文是“thesrdschemeallowsmediapresentationauthorstoexpressspatialrelationshipsbetweenspatialobjects.aspatialobjectisdefinedasaspatialpartofacontentcomponent(e.g.aregionofinterest,oratile)andrepresentedbyeitheranadaptationsetorasub-representation.”

【中文】:mpd中描述的是空间对象(即spatialobjects)之间的空间关系(即spatialrelationships)。空间对象被定义为一个内容成分的一部分空间,比如现有的感兴趣区域(英文:regionofinterest,roi)和tile;空间关系可以在adaptationset和sub-representation中描述。

现有dash标准在mpd中定义了一些描述子元素,每个描述子元素都有两个属性,schemeiduri和value。其中,schemeiduri描述了当前描述子是什么,value是描述子的参数值。

在已有的标准中有两个已有描述子supplementalproperty和essentialproperty(补充特性描述子和基本特性描述子)。现有标准中如果这两个描述子的schemeiduri="urn:mpeg:dash:srd:2014"(或者schemeiduri=urn:mpeg:dash:vr:2017),则表示该描述子描述了关联到的空间对象的空间信息(spatialinformationassociatedtothecontainingspatialobject.),相应的value中列出了sdr的一系列参数值。具体value的语法如下表1:

表1

如图6,图6是空间对象的空间关系示意图。其中,图像as可设为一个内容成分,as1、as2、as3和as4为as包含的4个空间对象,每个空间对象关联一个空间,mpd中描述了各个空间对象的空间关系,例如各个空间对象关联的空间之间的关系。

mpd样例如下:

其中,上述空间对象的左上坐标、空间对象的长宽和人空间对象参考的空间,也可以是相对值,比如:上述value="1,0,0,1920,1080,3840,2160,2"可以描述成value="1,0,0,1,1,2,2,2"。

在一些可行的实施方式中,对于360度大视角的视频图像的输出,服务器可将360度的视角范围内的空间进行划分以得到多个空间对象,每个空间对象对应一个子视角,一个或者多个子视角的拼接形成一个完整的人眼观察视角。人眼观察视角通常为120度*120度。例如图7所述的框1对应的视角1和框2对应的视角2。服务器可为每个空间对象准备一组视频码流,具体的,服务器可获取视频中每个码流的编码配置参数,并根据码流的编码配置参数生成视频的各个空间对象对应的码流。客户端可在视频输出时向服务器请求某一时间段某个视角对应的视频码流分段并输出该视角对应的空间对象。客户端在同一个时间段内输出360度的视角范围内的所有视角对应的视频码流分段,则可在整个360度的空间对象内输出显示该时间段内的完整视频图像。

具体实现中,在360度的空间对象的划分中,客户端可首先将球面映射为平面,在平面上对空间对象进行划分。具体的,客户端可采用经纬度的映射方式将球面映射为经纬平面图。如图9,图9是本发明实施例提供的空间对象的示意图。客户端可将球面映射为经纬平面图,并将经纬平面图划分为a~i等多个空间对象。进一步的,客户端可也将球面映射为立方体,再将立方体的多个面进行展开得到平面图,或者将球面映射为其他多面体,在将多面体的多个面进行展开得到平面图等。客户端还可采用更多的映射方式将球面映射为平面,具体可根据实际应用场景需求确定,在此不做限制。下面将以经纬度的映射方式,结合图10进行说明。

如图10,客户端可将球面的空间对象划分为a~i等多个空间对象之后,则可通过服务器为每个空间对象准备一组dash码流。其中,每个空间对象对应一个子视角,每个空间对象对应的一组dash码流为每个子视角的视角码流。一个视角码流中每个图像所关联的空间对象的空间信息相同,由此可将视角码流设为静态码流。视频播放过程中,可根据用户当前观看的视角选择相应的空间对象对应的dash码流进行播放。用户切换视频观看的视角时,客户端则可根据用户选择的新视角确定切换的目标空间对象对应的dash码流,进而可将视频播放内容切换为目标空间对象对应的dash码流。

在图10中repa到repi的9个视角码流分别对应经纬图中的a到i的9个空间对象。其中,repa为空间对象a对应的一组dash码流中的任一个,本发明实施例将repa为例进行说明。同理,repb到repi中各个子视角码流分别对其对应的空间对象对应的一组dash码流中的任一个,本发明实施例将以repb、repc、……、以及repi为例进行说明。其中,各个子视角的视角码流中包含的segment对齐,即同一时间段内各个视角码流中包含的segment的长度相同。不同视角码流的segment对齐使得不同视角码流可随着视角的切换进行segment的视频图像呈现切换。例如,用户在repd的第3个segment播放结束之后切换到repb的第4个segment,之后在repb的第5个segment播放结束时切换至repc的第6个segment。客户端呈现的视频图像从d视角的画面切换到b视角的画面,再切换到c视角的画面。

本发明实施例提供了与视角码流具有不同的segment时长的切换码流,切换码流中包含的segment对应的播放时长小于其对应的视角码流包含的segment的播放时长。每组切换码流对应一组视角码流(如图11所示,repa表示一组视角码流,repa’表示一组切换码流),一组切换码流中包含一个或者多个切换码流,每组切换码流对应一个空间对象。切换码流与其对应的视角码流对应相同的空间对象,即,切换码流及其对应的视角码流中包含的同一个时间段的码流分段的内容成分相同。

在一些可行的实施方式中,服务器在准备视频码流数据的视角码流的同时,针对每个子视角多准备一组切换码流,即每组视角码流对应一组切换码流。每组视角码流及其对应的切换码流包含的子视角相同(即空间对象相同),只是视角码流的segment时长较长,切换码流的segment时长较短。用户的视角需要切换时,客户端先选择切换码流,这样客户端在很短的时间后就会呈现出新视角的高质量视频;当客户端检测到切换码流的segment可以向视角码流切换时,客户端的representation从切换码流向视角码流切换,这样在同等带宽条件下就可以保证用户的最佳体验。

在本发明实施例中,为了使得客户端侧可以识别出切换码流,服务器在生成mpd时需要增加对应切换码流的语法元素,客户端可以根据该语法元素得到与视角码流相对应的切换码流信息。服务器生成mpd时可在mpd中添加用于描述切换码流的表示,一个表示可包含一个或者多个切换码流的描述信息,该表示也可称为切换码流表示或称第一表示。mpd中现有的用于描述视角码流的表示可称为视角码流表示或者媒体表示或者第二表示。在用户的视角需要切换时,能够快速的选择新视角的码流,呈现新视角的高质量视频。几种可能的mpd语法元素的表示方式如下所示。可以理解的是,本发明实施例的mpd示例仅示出了本发明技术对现有标准中规定mpd的语法元素进行修改的相关部分,未示出mpd文件的全部语法元素,本领域普通技术人员可以结合dash标准中的相关规定运用本发明实施例的技术方案。

在本发明实施例的一种实现方式中,在mpd中新增语法描述,如下表2,表2为一语法信息表:

表2

在mpd中通过属性@fovtype来标记对应的representation中的切换码流。在相同的视角、码率等参数下,客户端首选表示切换码流的representation来呈现新的视角。相关的mpd示例如下,

mpd样例1:

在本mpd样例中representationid="author1"的表示是切换码流。

mpd样例2:

在本mpd样例中representationid=“3"的表示是切换码流。

在本发明实施例的另一实现方式中,

mpd样例3:

在本mpd样例中adaptationsetid=”2”下层的所有表示都是切换码流。

本发明实施例的另一实施例中给出mpd中切换码流的另一种该描述方式,如下表3,表3为另一语法信息表:

表3

其中,上述标识着switch-representation和同属于一个adaptationset下的其他representation内容一样,但是该representation不是所有的segment都可以和其他representation的segment无缝切换,该representation只能在指定segment处于其他representation进行切换,表明该representation为切换码流。在视角发生切换的时候,客户端首先获取该representation的segment进行新视角的呈现。

相关的mpd示例如下:

mpd样例4:

在本mpd样例中switch-representationid=“3"的表示是切换码流;本发明实施例增加了新的表达类型switch-representation。

在本发明实施例的另一实现方式中,在mpd中增加新的语法元素,将representation分组,一组是现有dash标准中规定的representation,另一组是切换码流的representation。相关的mpd示例如下:

mpd样例5:

在该mpd中,在representation增加了分组信息,根据分组信息可分出segment可以切换的组;比如representationid=“3"和representationid=“5"的representation的fovgroup=”2”,这两个representation的segment都是对齐的,可以切换。

本发明实施例提供了一种视频数据的处理方法及装置,可提高媒体数据分段的切换效率,增强视频观看的用户体验。

第一方面提供了一种视频数据的处理方法,其可包括:

解析媒体呈现描述,获取标识信息,所述标识信息用于标识视频的第一表示,所述第一表示所描述的分段的播放时长小于所述视频的第二表示所描述的分段的播放时长;得到切换指令信息,所述切换指令信息用于指示将当前空间对象切换到目标空间对象;根据所述标识信息和所述切换指令信息,得到目标表示,所述目标表示和所述目标空间对象相对应;获取所述视频的当前播放时刻,根据所述当前播放时刻和所述目标表示得到目标表示分段。

在本发明实施例中,客户端得到切换指令信息可包括上述头部转动,眼睛、手势、或其他人体行为动作信息,也可包括用户的输入信息,上述输入信息可包括键盘输入信息、语音输入信息和触屏输入信息等。

在一种可行的实施方式中,所述标识信息包括:表示类型标识、表示分段的播放时长以及切换点信息中的至少一种。

在本发明实施例中,用于标识第一表示的标识信息可以以多种表示形式存在,灵活性更高,适用性更强。通过表示类型标识来识别视频中的第一表示,进而可在接收到空间对象切换指令时,优先选择播放时长较短的目标第一表示的分段进行切换,可提高码流分段切换播放的效率,快速呈现切换后的视频空间区域对应的视频内容给用户,增强了视频观看的用户体验。

在一种可行的实施方式中,所述切换点信息用于标识第一表示与第二表示进行表示切换的切换分段信息;其中,所述切换分段信息包括:分段间隔、第一表示的分段位置以及第二表示的分段位置中的至少一个;

或者

所述切换点信息是一个标识(flag),所述标识用于指示分段的切换能力。

在一种可能的方式中,flag的值为1时,表示当前分段可以切换;flag的值为0时,表示当前分段不能无缝切换。

在本发明实施例中,可通过切换点信息识别第一表示和第二表示进行内容切换的切换分段信息,切换分段信息可以以多种表现形式存在,灵活性更高,适用性更强。

在一种可行的实施方式中,所述标识信息携带在媒体呈现描述中携带的第一表示所在表示集合的属性信息中。

在一种可行的实施方式中,所述标识信息携带在媒体呈现描述中携带的第一表示的属性信息中。

在一种可行的实施方式中,所述标识信息携带在媒体呈现描述中携带的第一表示的分段的属性信息中。

在本发明实施例中,用于标识第一表示的标识信息可以以多种表示形式携带在媒体呈现描述中,进一步的,还可携带在媒体呈现描述的不同位置属性信息中,灵活性更高,适用性更强。

在一种可行的实施方式中,所述根据所述当前播放时刻和所述目标表示得到目标表示分段,包括:

获取所述目标表示的分段信息,所述目标表示的分段信息包括所述目标表示中包含的各个分段对应的播放时长;

根据所述各个分段对应的播放时长,计算各个分段的播放起始时刻,并根据各个分段的播放起始时刻和所述当前播放时刻确定第一时刻,所述第一时刻为所述各个分段的播放起始时刻中距离所述当前播放时刻最近的播放起始时刻;

将播放起始时刻为所述第一时刻的分段确定为目标表示分段。

在本发明实施例中,可根据目标表示中包含的各个分段的播放时长确定各个分段的播放起始时刻,进而可根据当前播放时刻将播放起始时刻距离当前播放时刻最近的目标表示的分段确定为视频切换的目标分段,进而可在目标分段的播放起始时刻呈现该目标分段,可保证视角切换时播放的视频内容连贯,视频内容呈现顺畅,增强视频观看的用户体验。

在本发明实施例的一种实现方式中,媒体呈现描述可以参考上述mpd中的示例。

在本发明实施例的一种实现方式中,切换码流可以参照图11中的示例。

在本发明实施例的一种实现方式中,切换指令信息包括表示待切换到的视角的信息,客户端可以根据切换指令信息确定视角码流和切换码流的信息,例如视角码流的id或存储位置信息,切换码流的id或存储位置信息等。

在本发明实施例的一种实现方式中,客户端可以根据切换指令信息得到切换后的目标视角所关联的空间对象,然后根据切换后的目标视角所关联的空间对象和各个切换码流所关联的空间对象从多个切换码流中确定一个目标切换码流(或称目标表示)。

在确定目标切换码流之后,可以根据当前播放时刻,确定待播放的目标切换码流的分段(即目标表示分段),然后根据mpd中包括的url模板构造相应的http请求,从而请求相应的切换码流的分段。

在本发明实施例的一种实现方式中,可以根据当前播放时刻,目标切换码流的信息构造分段的url。

相关的构造分段url和请求分段的方式可以参照dash标准中或其它类似方式的描述,在此不再赘述。

客户端在接收到切换码流的分段后,可以直接进行呈现。

在本发明实施例的一种实现方式后,客户端还要从切换码流切换到切换后的视角对应的视角码流。从而保障用户的良好体验。

本发明实施例的另一方面的实施例中,还在mpd中新增了切换点信息的语法元素描述。

在本发明实施例中描述切换码流向视角码流切换的方法。因为切换码流和视角码流并不是在每一个segment之间都进行切换的,所以本发明实施例给出了切换点的描述方法,在点播应用场景下将描述信息存储在媒体数据的文件中,在直播应用场景中将描述信息存储在mpd中,这两种方式即兼容了已有的dash协议,又对已有的cdn和客户端的改动最小,同时也支持了切换码流和视角码流的切换。

视角码流(即非切换码流)和切换码流之间的切换点信息描述在文件中,具体语法如下:

在一个可能的实施例中,sidx的box中的flag取值为1,可以表示在sidxbox中包含有切换点信息,或者可以表示每个分段的切换信息。

fov_group_change_info:该信息标识当前segment和其他duration/fovgroup/fovtype属性的表达切换的相关信息。

该信息可以是标识当前segment是否可以和其他duration/fovgroup/fovtype流切换;比如对应上述实施例中的mpd样例1~3,representationid=“3"的码流文件video-3.mp4中包含上述的sidxbox,在该box中解析到某个segment的fov_group_change_info=1,表示这个segment是可以切换到representationid="2"的;反之则不可以切换;如果是实施例一中的mpd样例4,fov_group_change_info=1,可以表示当前segment可以和属性fovgroup=1的representaion切换。

该信息也可以是当前segment可以切换的其他duration/fovgroup/fovtype流的segmentid的值,比如fov_group_change_info=4,表示当前segment可以和视角码流的第4个segment切换。

视角码流和切换码流之间的切换点信息描述在mpd中,具体语法如下表4所示,表示为另一语法信息表:

表4

mpd样例5:

在这个mpd样例中representationid=“3"的码流是切换码流,在segmenturlmedia="seg-m1-3.mp4”是可以切换到视角码流的,而且可以切换到视角码流的第2个segment。

在本发明实施例的一种实现方式中,将fov_group_change_info信息添加在了已有的sidxbox中,该信息也可以添加在其他的box中,比如

fov_group_change_info的语义和上述实施例中的语义相同。

在本发明实施例的一种实现方式中,客户端可以采用如下的方式实现从切换码流到视角码流的切换。

客户端获取切换码流中的索引分片(indexsegment),解析sidx信息,获得segment切换点的信息(fov_group_change_info);

当客户端检测到某个segment的切换点信息表示当前segment可以切换到视角码流的segment;客户端根据fov_group_change_info/当前segment的播放起始时间信息,找到视角码流中可以和当前segment切换的segment的信息,构造视角码流的segment的url;如图11中,客户端检测到视角切换码流repa’的第5个segment的fov_group_change_info信息,判断出在第5个segment可以向repa切换,客户端根据repa’的第5个segment的播放起始时间,在repa中找出起始时间和repa’的第5个segment的播放起始时间最接近的segment(repa中的第2个segment),构造该segmenturl;根据构造的视角码流的url,客户端请求视角码流的segment。

第二方面提供了一种客户端,其可包括:

获取模块,用于解析媒体呈现描述,获取标识信息,所述标识信息用于标识视频的第一表示,所述第一表示所描述的分段的播放时长小于所述视频的第二表示所描述的分段的播放时长;

接收模块,用于得到切换指令信息,所述切换指令信息用于指示将当前空间对象切换到目标空间对象;

确定模块,用于根据所述获取模块获取的所述标识信息和所述接收模块接收的所述切换指令信息,得到目标表示,所述目标表示和所述目标空间对象相对应;

所述获取模块,还用于获取所述视频的当前播放时刻,根据所述当前播放时刻和所述确定模块确定的所述目标表示得到目标表示分段。

在一种可行的实施方式中,所述标识信息包括:表示类型标识、表示分段的播放时长以及切换点信息中的至少一种。

在一种可行的实施方式中,所述切换点信息用于标识第一表示与第二表示进行表示切换的切换分段信息;

其中,所述切换分段信息包括:分段间隔、第一表示的分段位置以及第二表示的分段位置中的至少一个;

或者

所述切换点信息是一个标识(flag),所述标识用于指示分段的切换能力。

在一种可能的方式中,flag的值为1时,表示当前分段可以切换;flag的值为0时,表示当前分段不能无缝切换。

在一种可行的实施方式中,所述标识信息携带在媒体呈现描述中携带的第一表示所在表示集合的属性信息中。

在一种可行的实施方式中,所述标识信息携带在媒体呈现描述中携带的第一表示的属性信息中。

在一种可行的实施方式中,所述标识信息携带在媒体呈现描述中携带的第一表示的分段的属性信息中。

在一种可行的实施方式中,所述获取模块具体用于:

获取所述目标表示的分段信息,所述目标表示的分段信息包括所述目标表示中包含的各个分段对应的播放时长;

根据所述各个分段对应的播放时长,计算各个分段的播放起始时刻,并根据各个分段的播放起始时刻和所述当前播放时刻确定第一时刻,所述第一时刻为所述各个分段的播放起始时刻中距离所述当前播放时刻最近的播放起始时刻;

将播放起始时刻为所述第一时刻的分段确定为目标表示分段。

第三方面提供了一种视频数据的处理方法,其可包括:

服务器根据第一表示的编码配置参数生成视频的第一表示,并根据第二表示的编码配置参数生成视频的第二表示,所述第一表示所描述的分段的播放时长小于所述第二表示所描述的分段的播放时长;

所述服务器生成媒体呈现描述,所述媒体呈现描述中包括标识信息,所述标识信息用于标识所述视频的第一表示。

在一种可行的实施方式中,所述标识信息描述所述第一表示的分段的播放时长和所述第二表示的分段的播放时长;

其中,所述第一表示的分段的播放时长小于所述视频的第二表示的分段的播放时长。

在一种可行的实施方式中,所述标识信息描述所述第一表示和所述第二表示的分段的切换点信息。

在一种可行的实施方式中,所述切换点信息用于标识第一表示与第二表示进行内容切换的切换分段信息;

其中,所述切换分段信息包括:分段间隔、第一表示的分段位置以及第二表示的分段位置中的至少一个;

或者

所述切换点信息是一个标识(flag),所述标识用于指示分段的切换能力。

在一种可能的方式中,flag的值为1时,表示当前分段可以切换;flag的值为0时,表示当前分段不能无缝切换。

第四方面提供了一种服务器,其可包括:

生成模块,用于根据第一表示的编码配置参数生成视频的第一表示,并根据第二表示的编码配置参数生成视频的第二表示,所述第一表示所描述的分段的播放时长小于所述第二表示所描述的分段的播放时长;

描述模块,用于生成媒体呈现描述,所述媒体呈现描述中包括标识信息,所述标识信息用于标识所述视频的第一表示。

在一种可行的实施方式中,所述标识信息描述所述第一表示的分段的播放时长和所述第二表示的分段的播放时长;

其中,所述第一表示的分段的播放时长小于所述视频的第二表示的分段的播放时长。

在一种可行的实施方式中,所述标识信息描述所述第一表示和所述第二表示的分段的切换点信息。

在一种可行的实施方式中,所述切换点信息用于标识第一表示与第二表示进行内容切换的切换分段信息;

其中,所述切换分段信息包括:分段间隔、第一表示的分段位置以及第二表示的分段位置中的至少一个;

或者

所述切换点信息是一个标识(flag),所述标识用于指示分段的切换能力。

在一种可能的方式中,flag的值为1时,表示当前分段可以切换;flag的值为0时,表示当前分段不能无缝切换。

第五方面提供了一种基于http动态自适应流媒体的视频数据的处理方法,其可包括:

接收媒体呈现描述,所述媒体呈现描述包括至少两个的表示,所述表示包括描述媒体数据分段的属性信息,所述媒体呈现描述还包括至少两个的切换码流表示,所述切换码流表示包括描述切换码流的数据分段的属性信息,

其中,所述至少两个的表示所关联的空间对象与所述至少两个的切换码流表示所关联的空间对象之间存在一一对应的关系,一个媒体表示中描述的一个媒体数据分段对应的播放时长大于一个与媒体表示相对应的切换码流表示中描述的一个切换码流的数据分段对应的播放时长;

得到切换指令信息;

根据所述切换指令信息和所述媒体呈现描述得到目标切换码流表示,其中,所述目标视角切换码流表示为所述至少两个的切换码流表示中的一个切换码流表示;

根据所述目标切换码流表示得到目标切换码流请求信息,所述切换码流请求信息用于请求目标切换码流的部分数据分段。

在一种可行的实施方式中,所述媒体呈现描述还包括切换码流表示所关联的空间对象的空间信息,所述空间信息用于描述切换码流表示所关联的空间对象与其关联的内容成分的空间关系;

所述根据所述切换指令信息和所述媒体呈现描述得到目标切换码流表示,包括:

根据所述切换指令信息得到目标空间对象的空间信息;

根据所述目标空间对象的空间信息和所述空间关系得到所述目标切换码流表示。

在一种可行的实施方式中,所述媒体呈现描述包括自适应集的信息,所述自适应集用于描述同一媒体内容成分的多个可互相替换的编码版本的媒体数据分段的属性的数据集合;

其中,所述自适应集的信息包括所述至少两个的切换码流表示的信息。

在一种可行的实施方式中,所述媒体呈现描述包括表示的信息,所述表示为传输格式中的一个或者多个码流的集合和封装;

其中,所述表示的信息包括所述至少两个的切换码流表示的信息。

在一种可行的实施方式中,所述切换码流表示的信息包括:码流类型标识、码流分段的播放时长以及切换点信息中的至少一种。

在一种可行的实施方式中,所述切换点信息用于标识切换码流与非切换码流进行内容切换的切换分段信息;

其中,所述切换分段信息包括:码流分段间隔、切换码流的码流分段位置以及非切换码流的码流分段位置中的至少一个;

或者

所述切换点信息是一个标识(flag),所述标识用于指示分段的切换能力。

在一种可能的方式中,flag的值为1时,表示当前分段可以切换;flag的值为0时,表示当前分段不能无缝切换。

第六方面提供了一种客户端,其可包括:

接收模块,用于接收媒体呈现描述,所述媒体呈现描述包括至少两个的表示,所述表示包括描述媒体数据分段的属性信息,所述媒体呈现描述还包括至少两个的切换码流表示,所述切换码流表示包括描述切换码流的数据分段的属性信息,其中,所述至少两个的表示所关联的空间对象与所述至少两个的切换码流表示所关联的空间对象之间存在一一对应的关系,一个媒体表示中描述的一个媒体数据分段对应的播放时长大于一个与媒体表示相对应的切换码流表示中描述的一个切换码流的数据分段对应的播放时长;

获取模块,用于得到切换指令信息;

所述获取模块,还用于根据所述切换指令信息和所述媒体呈现描述得到目标切换码流表示,其中,所述目标视角切换码流表示为所述至少两个的切换码流表示中的一个切换码流表示;

所述获取模块,还用于根据所述目标切换码流表示得到目标切换码流请求信息,所述切换码流请求信息用于请求目标切换码流的部分数据分段。

在一种可行的实施方式中,所述媒体呈现描述还包括切换码流表示所关联的空间对象的空间信息,所述空间信息用于描述切换码流表示所关联的空间对象与其关联的内容成分的空间关系;

所述获取模块具体用于:

根据所述切换指令信息得到目标空间对象的空间信息;

根据所述目标空间对象的空间信息和所述空间关系得到所述目标切换码流表示。

在一种可行的实施方式中,所述媒体呈现描述包括自适应集的信息,所述自适应集用于描述同一媒体内容成分的多个可互相替换的编码版本的媒体数据分段的属性的数据集合;

其中,所述自适应集的信息包括所述至少两个的切换码流表示的信息。

在一种可行的实施方式中,所述媒体呈现描述包括表示的信息,所述表示为传输格式中的一个或者多个码流的集合和封装;

其中,所述表示的信息包括所述至少两个的切换码流表示的信息。

在一种可行的实施方式中,所述切换码流表示的信息包括:码流类型标识、码流分段的播放时长以及切换点信息中的至少一种。

在一种可行的实施方式中,所述切换点信息用于标识切换码流与非切换码流进行内容切换的切换分段信息;

其中,所述切换分段信息包括:码流分段间隔、切换码流的码流分段位置以及非切换码流的码流分段位置中的至少一个;

或者

所述切换点信息是一个标识(flag),所述标识用于指示分段的切换能力。

在一种可能的方式中,flag的值为1时,表示当前分段可以切换;flag的值为0时,表示当前分段不能无缝切换。

第七方面提供了一种基于http动态自适应流媒体的视频数据的处理方法,其可包括:

接收媒体呈现描述,所述媒体呈现描述包括至少两个的表示的信息,所述表示包括至少一个分段,所述至少两个的表示中的第一表示的分段时长小于第二表示的分段时长;

其中,所述第一表示表示所关联的空间对象和所述第二表示所关联的空间对象相对应;

得到切换指令信息;

根据所述表示切换指令,获取所述第一表示的分段,并在预设的时间后获取所述第二表示的分段。

在一种可行的实施方式中,所述第一表示中携带切换点信息。

在一种可行的实施方式中,所述的媒体呈现描述中携带标识信息;

其中,所述标识信息包含:表示类型标识、表示分段的播放时长以及切换点信息中的至少一种。

在一种可行的实施方式中,所述切换点信息用于标识第一码流与第二码流进行表示切换的切换分段信息;

其中,所述切换分段信息包括:分段间隔、第一表示的分段位置以及第二表示的分段位置中的至少一个;

或者

所述切换点信息是一个标识(flag),所述标识用于指示分段的切换能力。

在一种可能的方式中,flag的值为1时,表示当前分段可以切换;flag的值为0时,表示当前分段不能无缝切换。

在一种可行的实施方式中,所述携带切换点信息携带在所述第一表示中的指定box中。

在一种可行的实施方式中,所述指定box为所述第一表示中包含的sidxbox,所述sidxbox用于描述分段信息。

在一种可行的实施方式中,所述表示类型标识用来标识所述第一表示。

在一种可行的实施方式中,所述媒体呈现描述中包含自适应集的信息,所述自适应集用于描述同一媒体内容成分的多个可互相替换的编码版本的媒体数据分段的属性的数据集合;

其中,所述自适应集的信息中包含所述标识信息。

在一种可行的实施方式中,所述媒体呈现描述中包含表示的信息,所述表示为传输格式中的一个或者多个码流的集合和封装;

其中,所述表示的信息中包含所述标识信息。

在一种可行的实施方式中,所述媒体呈现描述中包含描述子的信息,所述描述子用于描述关联到的空间对象的空间信息;

其中,所述描述子的信息中包含所述标识信息。

第八方面提供了一种客户端,其可包括:

接收模块,用于接收媒体呈现描述,所述媒体呈现描述包括至少两个的表示的信息,所述表示包括至少一个分段,所述至少两个的表示中的第一表示的分段时长小于第二表示的分段时长;其中,所述第一表示表示所关联的空间对象和所述第二表示所关联的空间对象相对应;

获取模块,用于得到切换指令信息;

所述获取模块,还用于根据所述表示切换指令,获取所述第一表示的分段,并在预设的时间后获取所述第二表示的分段。

在一种可行的实施方式中,所述第一表示中携带切换点信息。

在一种可行的实施方式中,所述的媒体呈现描述中携带标识信息;

其中,所述标识信息包含:表示类型标识、表示分段的播放时长以及切换点信息中的至少一种。

在一种可行的实施方式中,所述切换点信息用于标识第一码流与第二码流进行表示切换的切换分段信息;

其中,所述切换分段信息包括:分段间隔、第一表示的分段位置以及第二表示的分段位置中的至少一个;

或者

所述切换点信息是一个标识(flag),所述标识用于指示分段的切换能力。

在一种可能的方式中,flag的值为1时,表示当前分段可以切换;flag的值为0时,表示当前分段不能无缝切换。

在一种可行的实施方式中,所述携带切换点信息携带在所述第一表示中的指定box中。

在一种可行的实施方式中,所述指定box为所述第一表示中包含的sidxbox,所述sidxbox用于描述分段信息。

在一种可行的实施方式中,所述表示类型标识用来标识所述第一表示。

在一种可行的实施方式中,所述媒体呈现描述中包含自适应集的信息,所述自适应集用于描述同一媒体内容成分的多个可互相替换的编码版本的媒体数据分段的属性的数据集合;

其中,所述自适应集的信息中包含所述标识信息。

在一种可行的实施方式中,所述媒体呈现描述中包含表示的信息,所述表示为传输格式中的一个或者多个码流的集合和封装;

其中,所述表示的信息中包含所述标识信息。

在一种可行的实施方式中,所述媒体呈现描述中包含描述子的信息,所述描述子用于描述关联到的空间对象的空间信息;

其中,所述描述子的信息中包含所述标识信息。

本发明实施例可根据媒体呈现描述中携带的标识信息识别出视频中包含的切换码流和视角码流。在空间对象切换的过程中,可根据目标空间对象从视频的多个切换码流中识别出目标空间对象对应的目标切换码流,进而可根据空间对象切换时的视频播放时刻确定出目标切换码流中的目标分段,并呈现目标分段。切换码流的分段的播放时长小于视角码流的分段的播放时长,因此空间对象切换时,可先切换到播放时长较短的切换码流分段,可提高空间对象对应的分段切换播放的效率,增强用户体验。进一步的,可获取并呈现目标空间对象对应的目标视角码流的分段,完成空间对象切换时对应的视角码流的分段切换播放。客户端通过目标切换码流完成空间对象时码流切换的中间过渡之后可切换至目标视角码流的播放,可保障空间对象切换后的视频播放的稳定性,增强视频观看的用户体验。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是系统层视频流媒体传输采用的dash标准传输的框架实例示意图;

图2是系统层视频流媒体传输采用的dash标准传输的mpd的结构示意图;

图3是本发明实施例提供的码流分段的切换的一示意图;

图4是码流数据中的分段存储方式的一示意图;

图5是码流数据中的分段存储方式的另一示意图;

图6是空间对象的空间关系示意图;

图7是视角变化对应的空间对象变化的一示意图;

图8是本发明实施例提供的视频数据的处理方法的流程示意图;

图9是本发明实施例提供的空间对象的示意图;

图10是dash码流的分段的一示意图;

图11是dash码流的分段的另一示意图;

图12是视角变化对应的空间对象变化的另一示意图;

图13是本发明实施例提供的客户端的一结构示意图;

图14是本发明实施例提供的服务器的结构示意图;

图15是本发明实施例提供的客户端的另一结构示意图;

图16是本发明实施例提供的客户端的另一结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

当前以客户端为主导的系统层视频流媒体传输方案可采用dash标准框架,如图1,图1是系统层视频流媒体传输采用的dash标准传输的框架实例示意图。系统层视频流媒体传输方案的数据传输过程包括两个过程:服务器端(如http服务器,媒体内容准备服务器,以下简称服务器)为视频内容生成媒体数据的过程,和客户端(如http流媒体客户端)向服务器请求并获取媒体数据,响应客户端请求的过程。其中,上述媒体数据包括媒体呈现描述(英文:mediapresentationdescription,mpd)文件和媒体码流。服务器上的mpd中包括多个表示(英文:representation),每个表示描述多个分段。客户端的http流媒体请求控制模块获取服务器发送的mpd,并对mpd进行分析,确定mpd中描述的视频码流的各个分段的信息,进而可确定要请求的分段,通过http请求接收端向服务器请求相应的分段,并通过媒体播放器进行解码播放。

1)在上述服务器为视频内容生成媒体数据的过程中,服务器为视频内容生成的媒体数据包括对应同一视频内容的不同视频质量的视频码流,以及视频码流的mpd文件。例如,服务器为同一集电视剧的视频内容生成低分辨率低码率低帧率(如360p分辨率、300kbps码率、15fps帧率)的码流,中分辨率中码率高帧率(如720p分辨率、1200kbps码率、25fps帧率)的码流,高分辨率高码率高帧率(如1080p分辨率、3000kbps码率、25fps帧率)的码流等。

此外,服务器还为该集电视剧的视频内容生成mpd文件。其中,如图2,图2是系统传输方案dash标准的mpd的结构示意图。上述码流的mpd包含多个时期(period),例如,图2的mpd)中的periodstart=100s部分可包含多个自适应集(英文:adaptationset),每个adaptationset可包含representation1、representation2,…等多个表示。每个表示描述码流的一个或者多个分段。

在本发明一个实施例中,每个表示按照时序描述若干个分段(英文:segment)的信息,例如初始化分段(英文:initializationsegment)、媒体分段(mediasegment)1、mediasegment2,…,mediasegment20等。表示中可以包括播放起始时刻、播放持续时长、网络存储地址(例如以统一资源定位符(英文:universalresourcelocator,url)的形式表示的网络存储地址)等分段信息。

2)在客户端向服务器请求并获取媒体数据的过程中,用户选择播放视频时,客户端根据用户点播的视频内容向服务器获取相应的mpd。客户端根据mpd中描述的码流分段的网络存储地址,向服务器发送下载网络存储地址对应的码流分段的请求,服务器根据接收到的请求向客户端发送码流分段。客户端获取得到服务器发送的码流分段之后,则可通过媒体播放器进行解码、播放等操作。

系统层视频流媒体传输方案采用dash标准,通过客户端分析mpd、按需向服务器请求视频数据并接收服务器发送的数据的方式实现视频数据的传输。

参见图3,是本发明实施例提供的码流分段的切换的一示意图。服务器可为同一个视频内容(比如一部电影)准备三个不同视频质量的的码流数据,并在mpd中使用三个representation对上述三个不同视频质量的码流数据进行描述。其中,上述三个representation(以下简称rep)可假设为rep1、rep2和rep3等。其中,rep1是码率为4mbps(每秒兆比特)的高清视频,rep2是码率为2mbps的标清视频,rep3是码率为1mbps的普通视频。每个rep的segment包含一个时间段内的视频码流,同一个时间段内,不同的rep包含的segment相互对齐。即,每个rep按照时序描述每个时间段的segment,并且相同时段的segment长度相同,进而可实现不同rep上的segment的内容切换。如图,图中标记为阴影的分段是客户端请求播放的分段数据,其中,客户端请求的前3个分段是rep3的分段,客户端请求第4个分段时可请求rep2中的第4个分段,进而可在rep3的第3个segment播放结束之后切换到rep2的第4个分段上播放。rep3的第3个segment的播放终止点(对应到时间上可为播放结束时刻)即为第4个segment的播放起始点(对应到时间上可为播放起始时刻),同时也是rep2或者rep1的第4个segment的播放起始点,实现不同rep上的segment的对齐。客户端请求rep2的第4个分段之后切换到rep1,请求rep1的第5个分段和第6个分段等。随后可切换至rep3上,请求rep3的第7个分段,再切换到rep1上,请求rep1的第8个分段。

需要说明的是,在现有的dash码流中,不同的rep上的segment的切换,需要在前一个rep的某个segment(例如图3中的rep3上的第3个segment,标记为segment3)播放结束之后才能切换到下一个rep的指定segment(例如图3中的rep2上的第4个segment,标记为segment4),并且需要segment3和segment4的视频内容在时域上连续,即segment3的播放结束时刻为segment4的播放起始时刻,segment3和segment4的视频内容连续。

每个rep的segment可以首尾相接的存在一个文件中,也可以独立存储为一个个的小文件。segment可以按照标准iso/iec14496-12中的格式封装(isobmff(basemediafileformat)),也可以是按照iso/iec13818-1中的格式封装(mpeg-2ts)。具体可根据实际应用场景需求确定,在此不做限制。

在dash媒体文件格式中提到,上述segment有两种存储方式:一种是每个segment分开独立存储,如图4,图4是码流数据中的分段存储方式的一示意图;另一种是同一个rep上的所有segment均存储在一个文件中,如图5,图5是码流数据中的分段存储方式的另一示意图。如图4,repa的segment中每个segment单独存储为一个文件,repb的segment中每个segment也单独存储为一个文件。对应的,图4所示的存储方式,服务器可在码流的mpd中可采用模板的形式或者列表的形式描述每个segment的url等信息。如图5,rep1的segment中所有segment存储为一个文件,rep2的segment中所有segment存储为一个文件。对应的,图5所示的存储方法,服务器可在码流的mpd中采用一个索引分段(英文:indexsegment,也就是图5中的sidx)来描述每个segment的相关信息。索引分段描述了每个segment在其所存储的文件中的字节偏移,每个segment大小以及每个segment持续时间(duration,也称每个segment的播放时长,简称时长)等信息。

当前随着360度视频等vr视频的观看应用的日益普及,越来越多的用户加入到大视角的vr视频观看的体验队伍中。这种新的视频观看应用给用户带来了新的视频观看模式和视觉体验的同时,也带来了新的技术挑战。由于360度(本发明实施例将以360度为例进行说明)等大视角的视频观看过程中,vr视频的呈现空间为360度的一个空间,超过了人眼正常的视觉范围,因此,用户在观看视频的过程中随时都会变换观看的角度(即视角,fov)。用户观看的视角不同,看到的视频图像也将不同,故此视频播放的内容需要随着用户的视角变化而变化。如图7,图7是视角变化对应的空间对象变化的一示意图。框1和框2分别为用户的两个不同的视角对应的空间对象,其中不同的空间对象显示的视频码流的分段不同。用户在观看视频的过程中,可通过眼部或者头部转动,或者视频观看设备的画面切换等操作,将视频观看的视角由框1切换到框2。其中,用户的视角为框1时观看的视频图像为视频码流的某一个segment包含的内容所呈现出来的视频图像。下一个时刻用户的视角切换为框2,此时用户观看到的视频图像也应该切换为框2对应的空间对象在该时刻所呈现视频图像,此时,该视频图像为另外一个segment包含的内容所呈现出来的视频图像。若用户快速看到切换后的视频图像,则需要客户端以更快更好的方式实现视频码流的segment的播放切换。本发明实施例提供的视频数据的处理方法及装置可针对视角切换带来的视频码流分段的切换提供更高效率的,更好的视觉体验的切换方式。

下面将结合图8至图16对本发明实施例提供的视频数据的处理方法及装置进行说明。

参见图8,是本发明实施例提供的视频数据的处理方法的流程示意图。本发明实施例提供的方法,包括步骤:

s801,解析媒体呈现描述,获取标识信息。

在一些可行的实施方式中,对于360度大视角的视频图像的输出,服务器可将360度的视角范围内的空间进行划分以得到多个空间对象,每个空间对象对应用户的一个子视角,例如上述图7所述的框1对应的空间对象1和框2对应的空间对象1。进一步的,服务器可为每个空间对象准备一组视频码流,具体的,服务器可获取视频中每个码流的编码配置参数,并根据码流的编码配置参数生成视频的各个空间对象对应的码流。客户端可在视频输出时向服务器请求某一时间段某个子视角对应的视频分段并输出至该视角对应的空间对象。客户端在同一个时间段内输出360度的视角范围内的所有子视角对应的视频分段,则可在整个360度的空间内输出显示该时间段内的完整视频图像。

具体实现中,在360度的空间的划分中,客户端可首先将球面映射为平面,在平面上对空间进行划分。具体的,客户端可采用经纬度的映射方式将球面映射为经纬平面图。如图9,图9是本发明实施例提供的空间对象的示意图。客户端可将球面映射为经纬平面图,并将经纬平面图划分为a~i等多个空间对象。进一步的,客户端可也将球面映射为立方体,再将立方体的多个面进行展开得到平面图,或者将球面映射为其他多面体,在将多面体的多个面进行展开得到平面图等。客户端还可采用更多的映射方式将球面映射为平面,具体可根据实际应用场景需求确定,在此不做限制。下面将以经纬度的映射方式,结合图9进行说明。

如图9,客户端可将球面的空间划分为a~i等多个空间对象之后,则可通过服务器为每个空间对象准备一组dash码流。其中,每个空间对象对应一个子视角,每个空间对象对应的一组dash码流为每个子视角的视角码流。每个子视角的视角码流为整个视频码流的一部分,所有子视角的视角码流构成一个完整的视频码流。即,具体实现中,每个空间对象对应的一组dash码流均为视角码流,整个视频可切分为多个视角码流,具体某个空间对象(设为指定空间对象)对应的视角码流可称为指定视角码流。视频播放过程中,可根据用户当前观看的视角选择相应的一个或者多个空间对象对应的dash码流进行播放。用户切换视频观看的视角时,客户端则可根据用户选择的新视角确定切换的目标空间对象对应的dash码流(或称为目标视角码流),进而可将视频播放内容切换为目标空间对象对应的dash码流。如图10,图10是dash码流的分段的一示意图。

在图10中repa到repi的10个视角码流分别对应经纬图中的a到i的9个空间对象。其中,repa为空间对象a对应的一组dash码流中的任一个,本发明实施例将repa为例进行说明。同理,repb到repi中各个子视角码流分别对其对应的空间对象对应的一组dash码流中的任一个,本发明实施例将以repb、repc、……、以及repi为例进行说明。其中,各个子视角的视角码流中包含的segment对齐,即同一时间段内各个视角码流中包含的segment的长度相同。不同视角码流的segment对齐使得不同视角码流可随着视角的切换进行segment的视频内容无缝切换。例如,用户在repd的第3个segment播放结束之后切换到repb的第4个segment,之后在repb的第5个segment播放结束时切换至repc的第6个segment。客户端呈现的视频图像从d视角的画面切换到b视角的画面,再切换到c视角的画面。

需要说明的是,在图10所示的视角码流的切换方式中,若客户端刚刚播放repd的第3个segment,并且第3个segment的时长是5秒时,用户将视角从d视角切换至b视角,此时客户端需要等到第3个segment播放结束之后才能切换到repb的第4个segment,则用户需要等到5s后才能看到视角b的视频图像。在vr视频观看的用户体验中,这5s的时长会给用户带来不适感,通常这个时延超过200ms,用户就会产生不适感。为了解决用户的不适感问题,如果简单地将视角码流的segment的时长缩短,比如200ms,虽然可以将视角切换时新视角的视频图像的呈现时间缩短,但是将严重影响视频的压缩性能,在相同的目标码率下,200ms的segment的视频质量要比5s的segment的视频质量差很多。若要保证视频质量,则需要更大的传输带宽或者更高的压缩性能,提高了对视频码流数据的传输带宽的要求和压缩性能的要求,增加了视角切换的视频输出成本。

本发明实施例提供了与视角码流具有不同的segment时长的切换码流(设为第一表示或者切换码流表示),切换码流中包含的segment的时长小于其对应的视角码流包含的segment的时长。每组切换码流对应一组视角码流,一组切换码流中包含一个或者多个切换码流,每组切换码流对应一个空间对象。切换码流与其对应的视角码流关联相同的空间对象,即,切换码流及其对应的视角码流中包含的同一个时间段的码流分段的视频内容相同。

在一些可行的实施方式中,服务器在准备视频码流数据的视角码流的同时,针对每个视角多准备一组切换码流,即每组视角码流对应一组切换码流。每组视角码流及其对应的切换码流包含的子视角相同(即空间对象相同),只是视角码流的segment时长较长,切换码流的segment时长较短。服务器可获取视角码流的编码配置参数(设为第二编码配置参数)和切换码流的编码配置参数(设为第一编码配置参数),并根据所述第一编码配置参数生成第一表示,根据第二编码配置参数生成第二表示。其中,上述第一编码配置参数可包括第一表示的分段(设为第一表示分段)的播放时长(设为第一播放时长)和第一表示对应的第一空间对象等。上述第二编码配置参数可包括第二表示的分段(设为第二表示分段)的播放时长(设为第二播放时长)和第二表示对应的第二空间对象等。服务器生成mpd时可在mpd中添加标识信息,用于标识视频中的切换码流。客户端可解析服务器发送的mpd,并根据上述标识信息区分视频的切换码流和视角码流,其中,携带上述标识信息的rep描述的码流可为切换码流,或者携带上述标识信息的分段为切换码流的分段等。其中,上述标识信息可为码流类型的标识(或称表示类型标识),分段的播放时长或者切换点的信息等。具体的,服务器可通过上述标识信息在切换码流中描述切换码流可以向视角码流切换的分段位置信息,也可以在mpd中描述切换码流可以向视角码流切换的分段位置信息,切换码流的多个segment中会存在一个或者多个可以向视角码流切换的位置点(或称切换点,具体可为可进行切换的segment的位置),视角码流与其对应的切换码流可在切换码流中包含的指定切换位置的segment进行切换。在切换码流指定切换位置的segment位置将码流切换到视角码流中segment,码流切换前后的视频内容是连续的。此外,不同的视角码流之间的segment对齐,不同切换码流之间的segment也对齐,因此不同的切换码流之间的segment可自由切换,切换码流和视角码流进行切换的前后视频内容是连续的,即切换后播放的视频内容是紧接着切换前播放的视频内容的。如图11,图11是dash码流的分段的另一示意图。repa、repb、repc和repd是分别为空间对象a、b、c和d对应的视角码流(和图9的子视角对应)。repa’为空间对象a对应的一组切换码流中的一个,repa’和repa对应同一个子视角,repa’可为repa对应的切换码流。同理,repb’可为repb对应的切换码流,repc’可为repc对应的切换码流,repd’可为repd对应的切换码流。repa、repb、repc和repd之间的segment对齐,可根据视角的切换在各个segment的播放结束时刻(也为下一个segment的播放起始时刻)自由切换(即内容无缝切换)。repa’、repb’、repc’和repd’之间的segment对齐,可根据视角的切换在各个segment的播放结束时刻(也为下一个segment的播放起始时刻)自由切换。视角码流可在切换码流的指定segment处于切换码流进行切换,如图11中t2对应的指定segment(切换码流的第2个segment,t2为该segment的播放起始时刻)。切换码流可在指定切换点向视角码流的segment切换,如图11中的t3或者t4。其中,t3为视角码流的第二个segment的播放起始时刻。

在一些可行的实施方式中,服务器准备了视频数据的视角码流以及每个视角码流对应的切换码流之后,则在mpd中描述视角码流和切换码流。客户端向服务器请求mpd,进而可解析服务器发送的mpd,从mpd中获取切换码流的标识信息。客户端还可从上述mpd中获取视角码流的视角码流信息,例如上述repa、repb、repc和repd等视角码流的视角码流信息。其中,上述视角码流信息可包括视角码流中每个segment的时长、和每个segment的相关的url等,具体可参见上述dash标准中描述的分段信息。客户端还可从上述mpd中获取切换码流的切换码流信息,例如上述repa’、repb’、repc’和repd’等切换码流的切换码流信息。其中,上述切换码流信息可包括切换码流中每个segment的时长以及每个segment相关的url等。此外,切换码流信息还包括上述用于标识切换码流的标识信息。其中,上述表示类型标识用于标识第一表示,若接收到空间对象的切换指令,客户端优先选择空间对象切换的指定空间对象对应的指定第一表示的分段进行视频内容的切换。客户端也可根据码流的分段的播放时长确定视频中的切换码流和视角码流。上述切换点信息用于标识切换码流与视角码流进行内容无缝切换的切换分段信息,包括:切换码流向视角码流切换的切换码流分段间隔、切换码流向视角码流切换的切换码流分段位置以及切换码流切换至视角码流的视角码流分段位置等。具体实现中,上述标识信息可携带在媒体呈现描述中携带的切换码流所在码流集合的属性信息中(如上述adaptationset的属性信息中);或者上述标识信息携带在媒体呈现描述中携带的切换码流的属性信息中(如上述representation的属性信息中);或者携带在媒体呈现描述中携带的切换码流的码流分段的属性信息中(如上述segment的属性信息中)。具体实现中,也可携带在需要进行视频内容切换的目标切换码流的索引分段中。

在一些可行的实施方式中,上述表示类型标识具体可为mpd中新增的语法元素,用于标识携带上述语法元素的rep描述的码流为切换码流。具体实现中,客户端可通过mpd中增加的语法元素快速识别切换码流和视角码流,进而可在视角切换时,从各个切换码流中选择视角切换的目标空间对象对应的目标切换码流。快速接入新视角,呈现新视角的视频数据。其中,上述语法元素可包括:fovtype、fovgroup、fov_group_change_info等。下面将对上述几种可行的mpd语法元素的描述方式进行描述:

方式一:

如下表2,表2为一语法元素的属性信息表:

表2

客户端可解析视频码流的mpd,若从mpd中解析得到某个representation中携带字符fovtype,fovtype取值不作限定描述,则可确定该representation描述的码流为切换码流。如果是切换码流,在相同的视角,码率等参数下,客户端首选该representation来呈现新的视角,可提高视角的切换效率,增强用户体验。

mpd示例1:

在本mpd示例中representationid=“3"的表达中携带“fovtype=‘1’”,标记着representationid=“3"的表达的是切换码流;representationid=“2"中“fovtype”缺省,则默认“fovtype=0”,标记着representationid=“2"的表达的是视角码流。上述示例中其他描述与dash标准中提供的相关mpd描述的格式相同,具体可参见dash标准中提供的描述,在此不做限制。下面各个示例的相关描述也可参见dash标准中提供的描述,以下不再赘述。

mpd示例2:

在本mpd示例中adaptationsetid=”2”的adaptationset属性信息中携带fovtype,标记着adaptationsetid=”2”下层的所有rep描述的码流均为切换码流;adaptationsetid=”1”的adaptationset属性信息中fovtype缺省,则默认为“fovtype=0”,标记着adaptationsetid=”1”下层的所有rep描述的码流均为不是切换码流。

方式二:

如下表3,表3为另一语法元素的属性信息表:

表3

其中,上述标识着switch-representation和同属于一个adaptationset下的其他representation内容一样,但是该representation不是所有的segment都可以和其他representation的segment无缝切换,该representation只能在指定segment处于其他representation进行切换,表明该representation为切换码流。在视角发生切换的时候,客户端首先获取该representation的segment进行新视角的呈现。

mpd示例3:

在本mpd示例中,增加了新的表达类型switch-representation,其中,上述switch-representation可为切换码流所属描述层的类型标识,标识着switch-representationid=“3"的表达的码流是切换码流。

方式三:

在mpd中增加新的语法fovgroup,将representation分组,一组是视角码流,即为现有的representation;另一组是新增的码流,即切换码流。

mpd示例4:

在该mpd中,在representation增加了分组信息,根据分组信息确定各个segment之间可自由切换的分组。其中,fovgroup=”2”标记的是切换码流的分组,fovgroup=”1”标记的是视角码流的分组。各个分组中组内representation可自由切换,即同属于视角码流的representation的各个segment之间可自由切换,同属于切换码流的representation的各个segment之间可自由切换。属于不同的分组的representation只能在指定segment处进行切换。比如representationid=“3"和representationid=“5"的representation的fovgroup=”2”,这两个representation描述的均为切换码流,这两个representation的segment都是对齐的,可以无缝切换。

在一些可行的实施方式中,上述mpd中携带的标识信息具体可为mpd中的已有语法元素,例如,分段对应的播放时长(duration)属性。客户端可以通过解析mpd中包含的分段对应的播放时长(duration)属性,将分段的播放时长最短的码流作为切换码流。

在一些可行的实施方式中,客户端解析视频码流的mpd并确定了mpd中各个representation描述的码流类型之后,则可根据用户观看视频时的视角进行相关视角码流的请求和播放,以及视角码流与切换码流的切换播放等操作。具体实现中,客户端解码得到各个视角对应的视角码流的视角码流信息之后,则可首先根据用户当前观看视频的视角(设为第一视角)确定第一视角对应的空间对象(设为当前空间对象),进而可根据mpd中描述的各个视角码流对应的空间对象,确定第一视角对应的第一视角码流(或称当前视角码流)。进一步的,客户端可根据第一视角码流的视角码流信息向服务器请求第一视角码流。服务器接收到客户端的请求之后,则可将第一视角码流发送给客户端。客户端接收到第一视角码流之后,则可解码并播放第一视角码流。例如,假设上述第一视角码流为图10的repd,客户端获取得到上述repd之后,则可从repd的第一个segment(可标记为segmentd1)开始播放repd。

具体实现中,在本发明实施例中mpd中携带的标识信息,也可以携带在基于http协议的实时流(英文:httplivestreaming,hls)定义的.m3u8文件中或者平滑流(英文:smoothstreaming,ss的.ismc文件中,具体可根据实际应用场景需求确定,在此不做限制。本发明实施例将以上述标识信息携带在dash码流为例进行说明。

s802,得到切换指令信息。

s803,根据所述标识信息和所述切换指令信息,从所述视频的第一表示中确定出目标表示。

在一些可行的实施方式中,如图12,图12是视角变化对应的空间对象变化的另一示意图。如图所描述,在vr视频呈现的空间被划分成的9个空间对象,包括空间对象a至空间对象i中,每个空间对象都准备了一组视角码流和切换码流。在图12的(a)(b)(c)中的虚线框可表示为当前呈现的空间对象(即当前空间对象),实线框可表示为切换后呈现的空间对象(即目标空间对象)。

在图12(a)中,当前空间对象对应的视角包括空间对象a、b、d和e;切换后的目标空间对象对应的视角可包括空间对象b、c、e和f,或者切换后的目标空间对象对应的视角也可包括空间对象c和f,在此不做限制。在图12(b)中,当前空间对象对应的视角包括空间对象a、b、d和e;切换后的目标空间对象对应的视角可包括空间对象e、f、h和i,或者切换后的目标空间对象对应的视角可包括空间对象f、h和i,在此不做限制。在图12(c)中,当前空间对象对应的视角可包括空间对象a和b;切换后的目标空间对象对应的视角包括空间对象e、f、h和i,在此不做限制。下面将结合步骤704对空间对象切换时带来的视频内容的切换进行描述。

s804,获取所述视频的当前播放时刻,根据所述当前播放时刻和所述目标表示得到目标表示分段。

在一些可行的实施方式中,客户端播放第一视角码流的过程中可对用户观看视频的视角进行监控。若接收到视角切换指令(即检测到当前视频空间切换到目标空间对象的切换指令信息),则可根据视角切换指令信息中携带的新视角信息确定需要切换的目标视角码流(如图11中的repb)。具体实现中,上述视角切换请求中携带的新视角信息具体可为视角切换的目标空间对象。客户端可根据mpd中描述的各个视角码流对应的空间对象,从视频码流中各个视角码流中选择目标空间对象对应的目标视角码流。进一步的,客户端还可根据mpd中描述的各个切换码流对应的指示信息,确定目标空间对象对应的切换码流(即目标码流,或称目标表示),进而可从各个切换码流中选择目标视角对应的目标切换码流(如图11中的repb’)。

在一些可行的实施方式中,客户端确定了要请求的representation(即目标表示,以下称目标切换码流)后,客户端根据mpd中描述的目标切换码流信息构造所要请求的分段的url,进而可根据上述url向服务器请求目标分段,获取并播放目标分段。具体实现中,客户端可获取mpd中描述的上述目标切换码流的各个segment的分段信息,上述分段信息可包括各个segment对应的播放时长(以下简称时长),根据时长信息可以计算出segment的播放起始时刻,或者客户端根据sidxbox中的segment的时长信息计算每个segment的播放起始时刻。进而可根据接收到视角切换请求的时刻(即当前视角切换切换到目标空间对象的时刻,可标记为切换触发时刻或者当前播放时刻),从目标切换码流的各个分段中选择播放起始时刻距离上述切换触发时刻最近的segment,并将该segment(即第一目标分段,设为第一segment)的播放起始时刻确定为第一视角码流向目标切换码流切换的时刻(设为第一时刻)。客户端确定了第一segment之后,构造第一segment的url,并向服务器发送该url请求。服务器接收到客户端的请求之后,则可将上述segment的分段数据发送给客户端。例如,图11,客户端在t1时刻接收到视角切换请求,进而可在确定了第一segment(假设为repb’的第二个segment)之后,在t2时刻切换为播放第一segment的视频数据。

需要说明的是,目标切换码流为目标视角码流对应的切换码流,目标切换码流中包含的视频内容与目标视角码流包含的视频内容相同,并且目标切换码流的分段的播放时长小于目标视角码流的分段的播放时长。由于切换码流的segment的时长小于视角码流的分段的时长,因此,客户端不需要等到当前视角码流的当前segment(如segmentd1)播放结束即可切换到新的视角,即切换到第一segment(假设为repb’的第二个segment),提高了码流分段的切换效率。具体实现中,切换码流包含的视频内容与其对应的视角码流包含的视频内容相同,同时,切换码流的视频数据的质量也可与其对应的视角码流包含的视频数据的质量相同,或者切换码流的视频数据的质量略次于与其对应的视角码流包含的视频数据,可保障快速切换后呈现给用户较高质量视频图像的新视角,避免时延给用户带来不适,增强了vr视频观看的用户体验。

在一些可行的实施方式中,客户端将播放视频数据从第一视角码流切换到目标切换码流之后,可根据mpd中携带的目标视角码流信息向服务器请求目标视角码流。具体实现中,客户端可获取mpd中切换码流的描述信息(或称分段信息),上述描述信息包括切换码流的分段时长信息以及切换码流的空间信息等。其中,切换码流的分段时长信息描述的是切换码流的segment的时长,上述空间信息描述了切换码流所对应的空间对象。客户端还可获得mpd中目标视角码流的描述信息,上述描述信息包括目标视角码流的分段时长信息以及空间信息等。其中,视角码流的分段时长信息描述的是视角码流的segment的时长,上述空间信息描述了视角码流所对应的空间对象。客户端通过目标视角码流的segment的时长,计算每个segment的起始播放时间;通过空间信息,确定和切换码流视角相同的视角码流,在视角码流中查找播放起始时间最接近当前播放时间的segment,进而可将该segment的播放起始时刻确定为第二时刻。客户端可根据该segment的url向服务器请求该segment,接收并解码该segment,进而可在第二时刻切换到该segment上播放。

进一步的,在一些可行的实施方式中,客户端可通过视角码流的segment的时长,计算视角码流的每个segment的起始播放时间;通过切换码流的segment的时长,计算切换码流的每个segment的起始播放时间。进一步的,可确定目标视角码流和目标切换码流中播放起始时刻对齐的segment位置。其中播放起始时刻对齐是指在这个segment位置上进行切换码流向视角码流切换时,切换前后播放的视频内容连续并且不重复。客户端可根据该segment的url向服务器请求该segment,接收并解码该segment,进而可在第二时刻切换到该segment上播放。

进一步的,在一些可行的实施方式中,客户端也可根据mpd中描述的切换点信息进行目标切换码流和目标视角码流的切换。服务器生成的视频码流的mpd除了对切换码流进行标记之外,还可对每个切换码流可以向视角码流切换的位置进行标记,即切换码流与视角码流的切换点等信息进行标记。如下表4,表4为视角码流与切换码流的切换点指示信息的描述表:

表4

其中,上述fov_group_change_info用于标记切换码流向视角码流切换的切换点等信息,其中,上述切换点信息用于标识第一表示(即切换码流)与第二表示(即视角码流)进行内容无缝切换的切换分段信息。上述切换分段信息包括:第一表示向第二表示切换的第一表示分段间隔、第一表示向第二表示切换的第一表示分段位置以及第一表示切换至第二表示的第二表示分段位置等。下面将通过具体的mpd示例进行描述,具体的mpd示例如下:

mpd示例5:

在这个mpd示例中representationid=“3"的码流是切换码流(设为目标切换码流,即目标码流),在segmenturlmedia="seg-m1-3.mp4”对应的segment(第一目标码流分段)处可以切换到视角码流(设为目标视角码流),而且可fov_group_change_info=“2”直接表明该切换码流可以切换到视角码流的第2个segment(即第二目标码流分段)。其中fov_group_change_info=“2”标记着目标第一表示切换至目标第二表示的目标第二表示分段的位置。客户端解析mpd,获取得到上述标识信息之后,可由该标识信息直接确定第二目标码流分段。由视角码流的第2个segment的播放起始时刻即可确定该切换码流与视角码流的切换时刻。

mpd示例6:

具体实现中,上述mpd示例6的fov_group_change_info还可表示可以切换的segment的间隔,即目标第一表示向目标第二表示切换的第一表示分段间隔,比如fov_group_change_info=4,表示切换码流中每间隔4个segment则可切换至视角码流。在该语义下,客户端可通过解析mpd得到上述fov_group_change_info信息,确定各个切换码流与其对应的视角码流进行切换的切换分段位置信息,进而可根据该切换分段位置信息确定切换码流及其对应的视角码流进行切换的segment。如果切换码流中包含的切换码流分段多于一个,则可从中选择距离目标切换码流的播放起始时刻最近的切换分段作为目标第一表示分段,即目标切换码流向目标视角码流切换的分段。这种语义下fov_group_change_info可以放在adaptationset或者representation的语法层,具体可根据实际应用场景确定,在此不做限制。

客户端根据上述mpd描述确定了目标视角码流对应的目标切换码流之后,则可向服务器请求目标切换码流,并且当检测到切换码流向视角码流切换的切换点信息后,按照切换点信息的指示,客户端请求目标视角码流的第二目标码流分段,并在该分段的播放起始时刻呈现该分段。

具体实现中,视角码流和切换码流之间的切换点信息还可以描述在码流的sixdbox(索引分段,英文:indexsegment)数据中,上述sixdbox的语法格式在iso/iec14496-12中的描述如下:

其中,上述描述中包含的语法元素表示的含义如下:

reference_id:码流的id;

timescale:时间单位;

earliest_presentation_time:indexsegment中描述的码流的最早呈现时间,以timescale为单位;

first_offset:第一个segment在indexsegment后的起始偏移;

reference_count:indexsegment中描述的segment的个数;

reference_type;1表示segment是indexsegment,0表示segment是媒体内容;

referenced_size:segment的大小;

subsegment_duration:以timescale为单位的segment持续时长;

starts_with_sap:segment的流接入类型;

sap_delta_time:第一个流接入点的最早呈现时间。

fov_group_change_info:切换点标识信息,表示当前分段(segment,即目标第一表示分段)可以和具有相同内容成分的其他任意表达(representation)切换,即目标第一表示向目标第二表示切换的目标第一表示分段位置。

其中,上述fov_group_change_info表达的含义可包括以下2种:

1、该fov_group_change_info信息可以是标识当前segment是否可以和其他携带duration/fovgroup/fovtype等属性信息的rep的segment切换。具体的,还可在携带该信息的segment的分段信息中描述当前segment可切换的视角码流的指示信息,通过该视角码流的指示信息则可确定该切换码流对应的视角码流。

比如上述实现方式中的mpd的示例1~3,representationid=“3"的码流文件video-3.mp4中包含上述的sidxbox,在该box中解析到第n个segment的fov_group_change_info=1,表示这个segment是可以切换到具有相同内容成分的其他representaion;在上述示例1~3中,representationid="2"的码流和representationid=“3"的码流具有相同的视角,(representationid="2"的码流仅是示例,具体可根据实际应用场景确定该segment对应的视角码流),所以representationid=“3"在第n个segment的位置可以切换到representationid="2",反之则不可以切换。如果是上述mpd示例4,representationid=“3"的fovgroup=”2”,并且解析sidxbox获得第n个segment的fov_group_change_info=1,表示representationid=“3"的码流在第n个segment的位置可以切换到属性fovgroup=1(即视角码流,以repid=“2”的码流为例)的representaion。

2、该fov_group_change_info信息也可以是当前携带该信息的segment可以切换的其他携带duration/fovgroup/fovtype等属性信息的码率的segmentid的值。比如fov_group_change_info=4,表示当前segment可以和视角码流的第4个segment切换。

具体实现中,视角码流和切换码流之间的切换点信息还可以描述在其他的新的box中,比如:

上述的fov_group_change_info语义和在sidx中语义一致;

还可以描述为:

fov_group_change_info:该信息表示切换流的segment向视角码流切换的segment的间隔。

具体实现中,客户端可根据目标切换码流的分段信息中携带的切换点信息确定目标切换码流向目标视角码流切换的切换点,进而根据mpd中描述的目标视角码流的url等信息向服务器请求目标视角码流。其中,上述目标切换码流的分段信息可包括目标切换码流向目标视角码流切换的切换分段位置信息,例如上述mpd中携带的fov_group_change_info元素的值所指明的切换分段位置,或者上述fov_group_change_info元素的值所指明的切换分段的分段间隔等。客户端可根据当前视角码流切换到目标切换码流时对应的目标切换码流的segment(设定第一切换分段,例如repb’的第二个segment),结合上述fov_group_change_info的值指代的切换分段位置信息确定目标切换码流向目标视角码流切换的目标分段(设为第二切换分段)。例如,如图10,假设上述mpd中描述的目标切换码流的分段信息中携带fov_group_change_info=2的指示信息,指明目标切换码流的第5个segment(标记为第二segment)可以和目标视角码流的第2个segment切换。客户端则可根据上述fov_group_change_info=2的指示信息确定在第二视角的切换码流的第4个segment之后,客户端可以请求第二视角的视角码流的第2个segment。

在一些可行的实施方式中,客户端可以根据mpd中的segment的时长或者sidxbox中的segment的时长来计算每个segment的播放起始时刻,通过segment的播放起始时刻来确定了第二时刻,比如将视角码流中的segment的播放起始时刻和切换码流中的segment播放起始时刻最接近的时刻确定为第二时刻。确定第二时刻后,则可向服务器请求该时刻对应的目标视角码流的目标分段(如图10中的repb的第二个segment,标记为segmentb2),其中,上述第二时刻可为segmentb2的播放起始时刻,或者第二时刻与segmentb2的播放起始时刻的时间距离最短。客户端可通过第二时刻与目标视角码流中各个分段的播放起始时刻的比较,从各个分段中选择目标切换分段,如segmentb2,并向服务器请求该segment。客户端接收到服务器发送的segmentb2之后,则可在目标切换码流播放到segmentb2的播放起始时刻时,将播放视频数据切换为segmentb2,为用户呈现第二视角的高质量视频。客户端接收到视角切换请求之后,客户端播放的视频数据从当前视角码流切换到目标视角码流之前,可先将播放的视频数据从当前视角码流切换到目标切换码流,以更快的速度为用户呈现新的视角的视频图像。进一步的,客户端可在预设的目标切换码流向目标视角码流切换的第二时刻将播放视频数据切换为目标视角码流。如图10,客户端播放segmentd1时,用户在t1时刻触发视角切换请求,客户端可在t2时刻切换至上述第一segment,即可在t1与t2之间的短时间内为用户呈现新视角的画面。进而可在t3时刻从第一segment切换至segmentb2,完成第一视角到第二视角的切换。若按照现有的dash标准提供的分段切换方法,用户在第t1时刻触发视角切换请求,客户端需要等待segmentd1播放结束之后,在t3时刻切换到segmentb2,用户需要等待新视角的时长为(t3-t1)。若(t3-t1)大于200ms,则将给用户带来不适感,用户体验低。

进一步的,在一些可行的实施方式中,上述目标切换码流的分段信息可包括目标切换码流向目标视角码流切换的一个或者多个切换时刻,切换时刻用于指示目标切换码流可以向目标视角码流切换的时间节点,具体可表示为某一个segment的播放起始时刻,如图10中segmentb2的播放起始时刻t3和segmentb3的播放起始时刻t4等。其中,上述切换时刻具体可为某个segment的播放起始时刻,例如上述第二segment的播放起始时刻。具体的,服务器端可在mpd或者索引分段中描述的目标切换码流的分段信息字段添加切换时刻的指示信息。客户端解析mpd或者索引分段之后可从上述mpd或者索引分段中获取切换时刻的指示信息,确定目标切换码流向目标视角码流切换的切换时刻。客户端确定了目标切换码流向目标视角码流切换的各个切换时刻之后,则可从中选择具体第一时刻最近的切换时刻作为本次目标切换码流向目标视角码流切换的切换时刻(即第二时刻)。进一步的,客户端可从服务器请求目标视角码流的各个分段中播放起始时刻距离第二时刻最近的segment(如repb2),并且切换至该segment上播放。

需要说明的是,在上述实现方式中,上述第一时刻可为第一segment的播放起始时刻,第二时刻可为第二segment的播放起始时刻,第一segment与第二segment之间间隔3个segment。即第一时刻和第二时刻之间的时长为目标切换码流的码流分段时长的n(假设为3)倍。具体实现中,n为大于或者等于1的整数,具体可根据实际应用场景确定,在此不做限制。

在本发明实施例中,客户端可解析视频数据的mpd,确定视频数据中的各个视角码流的视角码流信息和各个切换码流的切换码流信息。客户端可根据用户当前观看视频的视角以及上述确定的各个视角码流的视角码流信息向服务器请求或者当前视角对应的视角码流进行播放。客户端接收到视角切换请求之后,客户端播放的视频数据从当前视角码流切换到目标视角码流之前,可先将播放的视频数据从当前视角码流切换到目标切换码流,以更快的速度为用户呈现新的视角的视频图像。进一步的,客户端可在确定目标切换码流向目标视角码流切换的第二时刻之后,在目标切换码流播放到第二时刻时将播放视频数据切换为目标视角码流。本发明实施例通过提供切换码流,可以使得客户端在终端用户切换视角的过程中,将码流快速切换到切换码流以得到高质量的新视角,并且通过切换码流和视角码流的切换点信息,使得客户端在请求一段切换码流后,切换到视角码流,保证客户端所接收的码流的压缩性能是最佳的,在同等带宽条件下可以保证视角视频的最佳体验。

参见图13,是本发明实施例提供的客户端的一结构示意图。本发明实施例提供的客户端,包括:

获取模块131,用于解析媒体呈现描述,获取标识信息,所述标识信息用于标识视频的第一表示,所述第一表示的分段的播放时长小于所述视频的第二表示的分段的播放时长。

接收模块132,用于得到切换指令信息,所述切换指令信息用于指示将当前空间对象切换到目标空间对象。

确定模块133,用于根据所述获取模块获取的所述标识信息和所述接收模块接收的所述切换指令信息,从所述视频的第一表示中确定出目标表示,所述目标表示和所述目标空间对象相对应。

所述获取模块131,还用于获取所述视频的当前播放时刻,根据所述当前播放时刻和所述确定模块确定的所述目标表示得到目标表示分段。

在一种可行的实施方式中,所述标识信息包括:表示类型标识、表示分段的播放时长以及切换点信息中的至少一种。

在一种可行的实施方式中,所述切换点信息用于标识第一表示与第二表示进行表示切换的切换分段信息;

其中,所述切换分段信息包括:分段间隔、第一表示的分段位置以及第二表示的分段位置中的至少一个。

在一种可行的实施方式中,所述标识信息携带在媒体呈现描述中携带的第一表示所在表示集合的属性信息中。

在一种可行的实施方式中,所述标识信息携带在媒体呈现描述中携带的第一表示的属性信息中。

在一种可行的实施方式中,所述标识信息携带在媒体呈现描述中携带的第一表示的分段的属性信息中。

在一种可行的实施方式中,所述获取模块具体用于:

获取所述目标表示的分段信息,所述目标表示的分段信息包括所述目标表示中包含的各个分段对应的播放时长;

根据所述各个分段对应的播放时长,计算各个分段的播放起始时刻,并根据各个分段的播放起始时刻和所述当前播放时刻确定第一时刻,所述第一时刻为所述各个分段的播放起始时刻中距离所述当前播放时刻最近的播放起始时刻;

将播放起始时刻为所述第一时刻的分段确定为目标表示分段。

具体实现中,本发明实施例提供的客户端具体可为上述实施例中的客户端,客户端可通过其内置的各个模块执行上述实施例中各个步骤所描述的实现方式,在此不再赘述。

参见图14,是本发明实施例提供的服务器的结构示意图。本发明实施例提供的客户端,包括:

生成模块141,用于根据第一表示的编码配置参数生成视频的第一表示,并根据第二表示的编码配置参数生成视频的第二表示,所述第一表示的分段的播放时长小于所述第二表示的分段的播放时长。

描述模块142,用于生成媒体呈现描述,所述媒体呈现描述中携带标识信息,所述标识信息用于标识所述视频的第一表示。

在一种可行的实施方式中,所述标识信息描述所述第一表示的分段的播放时长和所述第二表示的分段的播放时长;

其中,所述第一表示的分段的播放时长小于所述视频的第二表示的分段的播放时长。

在一种可行的实施方式中,所述标识信息描述所述第一表示和所述第二表示的分段的切换点信息。

在一种可行的实施方式中,所述切换点信息用于标识第一表示与第二表示进行内容切换的切换分段信息;

其中,所述切换分段信息包括:分段间隔、第一表示的分段位置以及第二表示的分段位置中的至少一个。

具体实现中,本发明实施例提供的服务器具体可为上述实施例中的服务器,可通过其内置的各个模块执行上述实施例中各个步骤所描述的实现方式,在此不再赘述。

参见图15,是本发明的实施例提供的客户端的另一结构示意图。本发明实施例提供的客户端,包括:

接收模块151,用于接收媒体呈现描述,所述媒体呈现描述包括至少两个的表示,所述表示包括描述媒体数据分段的属性信息,所述媒体呈现描述还包括至少两个的切换码流表示,所述切换码流表示包括描述切换码流的数据分段的属性信息,其中,所述至少两个的表示所关联的空间对象与所述至少两个的切换码流表示所关联的空间对象之间存在一一对应的关系,一个媒体表示中描述的一个媒体数据分段对应的播放时长大于一个与媒体表示相对应的切换码流表示中描述的一个切换码流的数据分段对应的播放时长。

获取模块152,用于得到切换指令信息。

所述获取模块152,还用于根据所述切换指令信息和所述媒体呈现描述得到目标切换码流表示,其中,所述目标视角切换码流表示为所述至少两个的切换码流表示中的一个切换码流表示。

所述获取模块152,还用于根据所述目标切换码流表示得到目标切换码流请求信息,所述切换码流请求信息用于请求目标切换码流的部分数据分段。

在一种可行的实施方式中,所述媒体呈现描述还包括切换码流表示所关联的空间对象的空间信息,所述空间信息用于描述切换码流表示所关联的空间对象与其关联的内容成分的空间关系;

所述获取模块152具体用于:

根据所述切换指令信息得到目标空间对象的空间信息;

根据所述目标空间对象的空间信息和所述空间关系得到所述目标切换码流表示。

在一种可行的实施方式中,所述媒体呈现描述包括自适应集的信息,所述自适应集用于描述同一媒体内容成分的多个可互相替换的编码版本的媒体数据分段的属性的数据集合;

其中,所述自适应集的信息包括所述至少两个的切换码流表示的信息。

在一种可行的实施方式中,所述媒体呈现描述包括表示的信息,所述表示为传输格式中的一个或者多个码流的集合和封装;

其中,所述表示的信息包括所述至少两个的切换码流表示的信息。

在一种可行的实施方式中,所述切换码流表示的信息包括:码流类型标识、码流分段的播放时长以及切换点信息中的至少一种。

在一种可行的实施方式中,所述切换点信息用于标识切换码流与非切换码流进行内容切换的切换分段信息;

其中,所述切换分段信息包括:码流分段间隔、切换码流的码流分段位置以及非切换码流的码流分段位置中的至少一个。

具体实现中,本发明实施例提供的客户端具体可为上述实施例中的客户端,可通过其内置的各个模块执行上述实施例中各个步骤所描述的实现方式,在此不再赘述。

参见图16,是本发明实施例提供的客户端的另一结构示意图。本发明实施例提供的客户端,包括:

接收模块161,用于接收媒体呈现描述,所述媒体呈现描述包括至少两个的表示的信息,所述表示包括至少一个分段,所述至少两个的表示中的第一表示的分段时长小于第二表示的分段时长;其中,所述第一表示表示所关联的空间对象和所述第二表示所关联的空间对象相对应。

获取模块162,用于得到切换指令信息。

所述获取模块162,还用于根据所述表示切换指令,获取所述第一表示的分段,并在预设的时间后获取所述第二表示的分段。

在一种可行的实施方式中,所述第一表示中携带切换点信息。

在一种可行的实施方式中,所述的媒体呈现描述中携带标识信息;

其中,所述标识信息包含:表示类型标识、表示分段的播放时长以及切换点信息中的至少一种。

在一种可行的实施方式中,所述切换点信息用于标识第一码流与第二码流进行表示切换的切换分段信息;

其中,所述切换分段信息包括:分段间隔、第一表示的分段位置以及第二表示的分段位置中的至少一个。

在一种可行的实施方式中,所述携带切换点信息携带在所述第一表示中的指定box中。

在一种可行的实施方式中,所述指定box为所述第一表示中包含的sidxbox,所述sidxbox用于描述分段信息。

在一种可行的实施方式中,所述表示类型标识用来标识所述第一表示。

在一种可行的实施方式中,所述媒体呈现描述中包含自适应集的信息,所述自适应集用于描述同一媒体内容成分的多个可互相替换的编码版本的媒体数据分段的属性的数据集合;

其中,所述自适应集的信息中包含所述标识信息。

在一种可行的实施方式中,所述媒体呈现描述中包含表示的信息,所述表示为传输格式中的一个或者多个码流的集合和封装;

其中,所述表示的信息中包含所述标识信息。

在一种可行的实施方式中,所述媒体呈现描述中包含描述子的信息,所述描述子用于描述关联到的空间对象的空间信息;

其中,所述描述子的信息中包含所述标识信息。

具体实现中,本发明实施例提供的客户端具体可为上述实施例中的客户端,可通过其内置的各个模块执行上述实施例中各个步骤所描述的实现方式,在此不再赘述。

本发明实施例可根据媒体呈现描述中携带的标识信息识别出视频中包含的切换码流和视角码流。在空间对象切换的过程中,可根据目标空间对象从视频的多个切换码流中识别出目标空间对象对应的目标切换码流,进而可根据空间对象切换时的视频播放时刻确定出目标切换码流中的目标分段,并呈现目标分段。切换码流的分段的播放时长小于视角码流的分段的播放时长,因此空间对象切换时,可先切换到播放时长较短的切换码流分段,可提高空间对象对应的分段切换播放的效率,增强用户体验。进一步的,可获取并呈现目标空间对象对应的目标视角码流的分段,完成空间对象切换时对应的视角码流的分段切换播放。客户端通过目标切换码流完成空间对象时码流切换的中间过渡之后可切换至目标视角码流的播放,可保障空间对象切换后的视频播放的稳定性,增强视频观看的用户体验。

本发明实施例的说明书、权利要求书以及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或者单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或者单元,或可选地还包括对于这些过程、方法、系统、产品或设备固有的其他步骤或单元。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

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