处理媒体数据的方法和装置转让专利

申请号 : CN201810027139.3

文献号 : CN110035316A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 范宇群

申请人 : 华为技术有限公司

摘要 :

本申请提供了一种处理媒体数据的方法和装置。该方法包括:获取元数据信息,其中,所述元数据信息为描述媒体数据的属性信息,所述元数据信息包括机位标识信息;根据所述机位标识信息对媒体数据进行处理。本申请能够根据机位标识信息对不同机位对应的媒体数据进行自由处理。

权利要求 :

1.一种处理媒体数据的方法,其特征在于,包括:获取元数据信息,其中,所述元数据信息为描述媒体数据的属性的信息,所述元数据信息包括机位标识信息;

根据所述机位标识信息对媒体数据进行处理。

2.如权利要求1所述的方法,其特征在于,所述方法还包括:获取机位选择信息;

所述根据所述机位标识信息对媒体数据进行处理,包括:根据所述机位选择信息和所述机位标识信息确定第一机位;

对所述第一机位对应的媒体数据进行处理。

3.如权利要求2所述的方法,其特征在于,所述对所述第一机位对应的媒体数据进行处理,包括:呈现所述第一机位对应的媒体数据。

4.如权利要求2所述的方法,其特征在于,在对所述第一机位对应的媒体数据进行处理之前,所述方法还包括:根据所述机位标识信息和所述元数据信息获取所述第一机位对应的媒体数据。

5.如权利要求1-4中任一项所述的方法,其特征在于,所述元数据信息还包括机位位置信息,所述机位位置信息用于指示机位在球面坐标系中的位置。

6.如权利要求5所述的方法,其特征在于,所述元数据信息包括盒信息,所述盒信息包括所述机位位置信息。

7.如权利要求1-6中任一项所述的方法,其特征在于,所述元数据信息为元数据轨迹。

8.如权利要求1-6中任一项所述的方法,其特征在于,所述元数据信息为媒体呈现描述。

9.如权利要求1-6中任一项所述的方法,其特征在于,所述元数据信息为辅助增强信息。

10.如权利要求1所述的方法,其特征在于,所述元数据信息为元数据轨迹,所述元数据轨迹还包括导演视角信息;

所述根据所述机位标识信息对媒体数据进行处理,包括:根据所述机位标识信息和导演视角信息,对媒体数据进行处理。

11.一种处理媒体数据的装置,其特征在于,包括:获取模块,用于获取元数据信息,其中,所述元数据信息为描述媒体数据的属性信息,所述元数据信息包括机位标识信息;

处理模块,用于根据所述机位标识信息对媒体数据进行处理。

12.如权利要求11所述的装置,其特征在于,所述获取模块还用于获取机位选择信息;

所述处理模块具体用于:

根据所述机位选择信息和所述机位标识信息确定第一机位;

对所述第一机位对应的媒体数据进行处理。

13.如权利要求12所述的装置,其特征在于,所述处理模块具体用于:呈现所述第一机位对应的媒体数据。

14.如权利要求12所述的装置,其特征在于,在所述处理模块对所述第一机位对应的媒体数据进行处理之前,所述处理模块还用于:根据所述机位标识信息和所述元数据信息获取所述第一机位对应的媒体数据。

15.如权利要求11-14中任一项所述的装置,其特征在于,所述元数据信息还包括机位位置信息,所述机位位置信息用于指示机位在球面坐标系中的位置。

16.如权利要求15所述的装置,其特征在于,所述元数据信息包括盒信息,所述盒信息包括所述机位位置信息。

17.如权利要求11-16中任一项所述的装置,其特征在于,所述元数据信息为元数据轨迹。

18.如权利要求11-16中任一项所述的装置,其特征在于,所述元数据信息为媒体呈现描述。

19.如权利要求11-16中任一项所述的装置,其特征在于,所述元数据信息为辅助增强信息。

20.如权利要求11所述的装置,其特征在于,所述元数据信息为元数据轨迹,所述元数据轨迹还包括导演视角信息;

所述处理模块具体用于根据所述机位标识信息和导演视角信息,对媒体数据进行处理。

说明书 :

处理媒体数据的方法和装置

技术领域

[0001] 本申请涉及流媒体传输技术领域,并且更具体地,涉及一种处理媒体数据的方法和装置。

背景技术

[0002] ISO/IEC 23090-2标准规范又称为全向媒体格式(Omnidirectional media format,OMAF)标准规范,该规范定义了一种媒体应用格式,该媒体应用格式能够在应用中实现全向媒体的呈现,全向媒体主要是指全向视频(360度视频)和相关音频。OMAF规范首先指定了可以用于将球面视频转换为二维视频的投影方法的列表,其次是如何使用ISO基本媒体文件格式(ISO base media file format,ISOBMFF)存储全向媒体和该媒体相关联的元数据,以及如何在流媒体系统中封装全向媒体的数据和传输全向媒体的数据,例如通过基于超文本传输协议(Hyper Text Transfer Protocol,HTTP)的动态自适应流传输(DynamicAdaptive Streaming over HTTP,DASH),ISO/IEC 23009-1标准中规定的动态自适应流传输。
[0003] ISO基本媒体文件格式是由一系列的盒子(box)组成,在一个box中还可以包括其他的box,box中包括元数据box和媒体数据box,元数据box(moov box)中包括的是元数据,媒体数据box(mdat box)中包括的是媒体数据,元数据的box和媒体数据的box可以是在同一个文件中,也可以是在分开的文件中;如果具有时间属性的元数据采用ISO基本媒体文件格式封装,那么,元数据box中包括的是描述具有时间属性的元数据的元数据,媒体数据box中包括的是具有时间属性的元数据。
[0004] 在现有的方案中,当多个机位对应的媒体数据共存时,无法对不同机位的媒体数据进行自由处理。

发明内容

[0005] 本申请提供了一种处理媒体数据的方法和装置,以自由处理不同机位对应的媒体数据。
[0006] 第一方面,提供了一种处理媒体数据的方法,该方法包括:获取元数据信息;根据该元数据信息中包括的机位标识信息对媒体数据进行处理。
[0007] 上述元数据信息可以是描述媒体数据的一些属性信息,例如,媒体数据的时长,码率,帧率,在球面坐标系中的位置等。
[0008] 上述媒体数据可以是全向媒体数据,该全向媒体数据可以是视频数据和/或音频数据。
[0009] 应理解,在根据机位标识信息对媒体数据进行处理之前,上述方法还包括:从元数据信息中获取机位标识信息。
[0010] 上述机位标识信息可以描述媒体数据对应的机位,具体地,机位标识信息可以表示媒体数据对应的机位的ID,媒体数据对应的机位编号等等。
[0011] 上述机位可以是在拍摄视频时摄像机或者摄像机阵列所放置的位置。
[0012] 拍摄视频时既可以采用单个机位也可以采用多个机位,例如,当采用一个摄像机或者一个摄像机阵列拍摄视频时对应的是一个机位,当采用多个摄像机或者采用多个摄像机阵列时拍摄一个场景的画面时对应的是多个机位。具体地,在拍摄全景视频或者360度视频时,通常需要采用多个摄像机组成的摄像机阵列进行拍摄。
[0013] 在某个机位下采用摄像机拍摄某一场景的画面时既可以得到一个视角的视频,也可以得到多个视角的视频,也可以得到全景视频或者360度视频。
[0014] 在本申请中,视角是用户观看视频时选择的某个观看角度。具体地,当用户观看的视频是全景视频或者360度视频时,视角可以是用户视线与视频所在的球面所成的角度。
[0015] 本申请中,由于元数据信息中携带有机位标识信息,因此,通过元数据信息中的机位标识信息能够自由处理不同机位对应的媒体数据。
[0016] 进一步地,上述处理媒体数据具体还可以是呈现媒体数据,此时,可以通过机位标识信息自由选择需要呈现的机位的媒体数据,进而能够实现在不同机位的视频之间进行自由切换。
[0017] 在一种可能的实现方式中,上述处理媒体数据的方法还包括:获取机位选择信息;根据机位标识信息对媒体数据进行处理,包括:根据机位选择信息和机位标识信息确定第一机位;对第一机位对应的媒体数据进行处理。
[0018] 上述机位选择信息可以用于表示用户选择的机位,当上述方法由客户端执行时,客户端可以根据用户触摸客户端的显示屏或者用户操作客户端的按键的输入得到机位指示信息。
[0019] 本申请中,客户端可以根据用户在客户端的操作界面上的输入得到机位选择信息,进而选择和呈现用户想要观看的视频的机位,能够给用户带来较好的视觉体验。
[0020] 在一种可能的实现方式中,在对第一机位对应的媒体数据进行处理之前,上述方法还包括:确定是否已经获取第一机位对应的媒体数据。
[0021] 具体地,当客户端已经将第一机位对应的媒体数据下载到了本地时,可以确定客户端已经获取了第一机位对应的媒体数据,而当客户端还未将第一机位对应的媒体数据下载到本地时,客户端需要先从服务器端获取第一机位对应的媒体数据才能够对媒体数据进行处理。
[0022] 应理解,当客户端还未获取第一机位对应的媒体数据时,上述方法还包括:根据机位标识信息和元数据信息获取第一机位对应的媒体数据。
[0023] 例如,服务器端一共缓存了第一机位、第二机位以及第三机位对应的媒体数据,那么,客户端就可以向服务器端请求获取第一机位对应的媒体数据的码流,并解析得到第一机位对应的媒体数据。具体的获取媒体数据的方式可以参考MPEG-DASH等标准中的有关规定,在此不再赘述。
[0024] 在一种可能的实现方式中,对第一机位对应的媒体数据进行处理,具体包括:呈现第一机位对应的媒体数据。
[0025] 在一种可能的实现方式中,元数据信息的形式可以包括元数据轨迹、媒体呈现描述(Media presentation description,MPD)以及辅助增强信息(supplementary enhancementinformation,SEI),这些信息可以携带上述机位标识信息,因此,可以通过解析包括元数据轨迹、MPD以及SEI来获取机位标识信息。
[0026] 因此,在本申请中,在通过获取元数据信息进而得到机位标识信息时,可以通过获取元数据轨迹,然后从元数据轨迹中获取机位标识信息,也可以通过获取MPD或者SEI,然后再从MPD或者SEI中获取机位标识信息。
[0027] 在一种可能的实现方式中,上述元数据信息还可以包括机位位置信息,该机位位置用于指示机位在球面坐标系中的位置。
[0028] 上述机位位置信息既可以指示当前元数据信息对应的媒体数据所属的机位的位置,也可以指示当前元数据信息对应的媒体数据之外的其它媒体数据所属的机位的位置。
[0029] 具体地,当元数据信息对应的媒体数据所属的机位的位置为机位1时,该元数据信息中的机位位置信息可以指示机位2在机位1的视频数据所在的球面区域中的位置,其中,机位2可以是与机位1的有部分视角重叠的机位。
[0030] 在一种可能的实现方式中,元数据信息的形式可以包括有时间属性的元数据轨迹、盒信息、MPD以及SEI,这些信息可以携带上述机位标识信息,因此,可以通过解析包括元数据轨迹、MPD以及SEI来获取机位位置信息。
[0031] 因此,在本申请中,在通过获取元数据信息进而得到机位位置信息时,可以通过获取有时间属性的元数据轨迹、盒信息、MPD以及SEI,然后再从有时间属性的元数据轨迹、盒信息、MPD以及SEI中获取机位位置信息。
[0032] 可以理解的是,机位位置信息可以和机位标识信息存储在相同的元数据信息中,也可以存储在不同的元数据信息中。例如可以通过元数据轨迹得到机位标识信息,通过MPD文件得到机位位置信息。
[0033] 本申请中,通过机位位置信息,能够灵活指示不同机位的位置,使得用户在观看视频时能够在不同的机位之间进行灵活切换。
[0034] 在一种可能的实现方式中,上述元数据信息的具体形式可以是元数据轨迹,该元数据轨迹中携带机位标识信息和导演视角信息,此时,在根据机位标识信息对媒体数据进行处理,包括:根据机位标识信息和导演视角信息,对媒体数据进行处理。
[0035] 上述导演视角信息可以指示视频制作者或者导演推荐的观看视角,客户端根据导演视角信息可以将视频制作者或者导演要呈现给用户的媒体内容呈现给用户。由于元数据轨迹中还包括机位标识信息,因此,客户端可以将导演视角范围的至少一个机位的视频内容呈现给用户,使得用户能够在导演视角范围内的至少一个机位中选择一个机位的视频来观看。
[0036] 本申请中,由于元数据轨迹中了除了包含导演视角信息之外,还包含机位标识信息,使得用户能够在导演视角范围内选择相应机位的视频观看,因此,本申请能够使得用户在导演视角范围内的不同的机位之间进行自由切换。
[0037] 第二方面,提供了一种处理媒体数据的装置,该装置包括:获取模块,用于获取元数据信息,其中,所述元数据信息为描述媒体数据的属性信息,所述元数据信息包括机位标识信息;处理模块,用于根据所述机位标识信息对媒体数据进行处理。
[0038] 在一种可能的实现方式中,所述获取模块还用于:获取机位选择信息;所述处理模块具体用于:根据所述机位选择信息和所述机位标识信息确定第一机位;对所述第一机位对应的媒体数据进行处理。
[0039] 在一种可能的实现方式中,所述处理模块具体用于:呈现所述第一机位对应的媒体数据。
[0040] 在一种可能的实现方式中,在所述处理模块对所述第一机位对应的媒体数据进行处理之前,所述处理模块还用于:根据所述机位标识信息和所述元数据信息获取所述第一机位对应的媒体数据。
[0041] 在一种可能的实现方式中,所述元数据信息还包括机位位置信息,所述机位位置信息用于指示机位在球面坐标系中的位置。
[0042] 在一种可能的实现方式中,所述元数据信息包括盒信息,所述盒信息包括所述机位位置信息。
[0043] 在一种可能的实现方式中,所述元数据信息为元数据轨迹。
[0044] 在一种可能的实现方式中,所述元数据信息为媒体呈现描述。
[0045] 在一种可能的实现方式中,所述元数据信息为辅助增强信息。
[0046] 在一种可能的实现方式中,所述元数据信息为元数据轨迹,所述元数据轨迹还包括导演视角信息;所述处理模块具体用于根据所述机位标识信息和导演视角信息,对媒体数据进行处理。
[0047] 第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法。
[0048] 第四方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法。
[0049] 第五方面,提供了一种电子设备,包括上述第二方面所述的处理媒体数据的装置。
[0050] 应理解,本申请的第二至第五方面及对应的实现方式所取得的有益效果参见本申请的第一方面及对应的实现方式所取得的有益效果,不再赘述。

附图说明

[0051] 图1是本申请实施例的一种可能的应用场景的示意图;
[0052] 图2是本申请实施例的一种可能的应用场景的示意图;
[0053] 图3是本申请实施例的处理媒体数据的方法的示意性流程图;
[0054] 图4是本申请实施例的处理媒体数据的方法的流程图;
[0055] 图5是本申请实施例的处理媒体数据的方法的流程图;
[0056] 图6是本申请实施例的处理媒体数据的方法的流程图;
[0057] 图7是本申请实施例的处理媒体数据的装置的示意性框图;
[0058] 图8是本申请实施例的处理媒体数据的装置的硬件结构示意图。

具体实施方式

[0059] 下面将结合附图,对本申请中的技术方案进行描述。
[0060] 为了更好地理解本申请实施例的处理媒体数据的方法,下面先对媒体处理数据相关的一些基本概念进行简要的介绍。
[0061] 轨迹(track)是指一系列有时间属性的按照ISO基本媒体文件格式(ISO base media fileformat,ISOBMFF)的封装方式的样本。比如视频track,视频样本是通过将视频编码器编码每一帧后产生的码流按照ISOBMFF的规范封装后得到的。
[0062] 轨迹在标准ISO/IEC 14496-12中的定义为:“timed sequence of related samples(q.v.)inan ISO base media file”,该定义的中文翻译为“ISO媒体文件中相关样本的时间属性序列”。
[0063] 对于媒体数据来说,一个track就是个图像或者音频样本序列;对于提示轨迹,一个轨迹对应一个流频道(For media data,a track corresponds to a sequence of images or sampledaudio;for hint tracks,a track corresponds to a streaming channel)。
[0064] ISOBMFF文件是由多个盒子(box)构成,其中,一个box可以包括其它的box。
[0065] box在ISO/IEC 14496-12标准中的定义为:“object-oriented building block defined by aunique type identifier and length”,该定义的中文翻译为“面向对象的构建块,由唯一的类型标识符和长度定义”。
[0066] 另外,box在某些规范被成为“原子”,包括MP4的第一个定义(Called“atom”in somespecifications,including the first definition of MP4)。
[0067] 辅助增强信息(supplementary enhancement information,SEI)是国际通信联盟(International Telecommunication Union,ITU)发布的视频编解码标准h.264,h.265中定义的一种网络接入单元(Network Abstract Layer Unit,NALU)的类型。
[0068] 媒体呈现描述(Media presentation description,MPD)是标准ISO/IEC 23009-1中规定的一种文档,在该文档中包括了客户端构造HTTP-URL的元数据。在MPD中包括一个或者多个周期(period)元素,每个period元素包括有一个或者多个自适应集(adaptationset),每个adaptationset中包括一个或者多个表示(representation),每个representation中包括一个或者多个分段,客户端根据MPD中的信息,选择表达,并构建分段的http-URL。
[0069] 为了描述媒体数据中有关时间的属性信息,OMAF标准中规定了在球面上的区域(region)的有时间属性的元数据轨迹(timed metadata track)。该元数据轨迹中的元数据的box中包含的是描述球面的元数据,在元数据的box中描述了有时间属性的元数据轨迹的意图,也就是球面区域是用来做什么的,在OMAF标准中描述了两种有时间属性的元数据轨迹:推荐视角元数据轨迹(the recommended viewport timed metadata track)和初始视点轨迹(the initial viewpoint timed metadata track)。其中,推荐视角轨迹描述了推荐给终端呈现的视角的区域,初始视点轨迹描述了全向视频观看时的初始呈现方向。
[0070] 现有的OMAF标准中规定的球面区域样本入口(Sample Entry)的格式如下:
[0071]
[0072]
[0073] 上述球面区域样本入口中各个字段的语义如下:
[0074] Shape_type:用来描述球面区域形状类型;
[0075] Reserved:保留字段;
[0076] dynamic_range_flag:该值为0时表示区域的是水平垂直范围不变,该值为1时表示区域水平和垂直区域在样本中描述;
[0077] static_azimuth_range:区域的方位角覆盖范围;
[0078] static_elevation_range:区域的仰角覆盖范围;
[0079] num_regions:元数据轨迹中的区域个数。
[0080] OMAF中定义了两种球面区域形状类型,一种为四个大圆(Azimuth Circle)合成形成的形状,其shape_type值为0;另一种为两个大圆和两个小圆(Elevation Circle)合成形成的形状,其shape_type值为1。
[0081] 现有的OMAF标准中规定的球面区域样本(Sample)格式定义如下:
[0082]
[0083] 上述球面区域样本中的各个字段的语义如下:
[0084] center_azimuth、center_elevation:表示球面区域的中心点位置;
[0085] Center_tilt:表示区域的倾斜角度;
[0086] azimuth_range:区域的方位角覆盖范围;
[0087] Elevation_range:区域的仰角覆盖范围。
[0088] 在播放视频时,为了能够在不同的视角之间自由切换,可以在拍摄视频时采用多机位拍摄,多机位拍摄的特点是多机位同时记录,并且通过切换不同的机位来播放不同视角的视频。
[0089] 例如,在拍摄视频的过程中一共采用了机位A和机位B两种机位进行拍摄,那么,在拍摄得到的视频中,当机位A出现在另一个机位B拍摄的360度全景视频中的某个区域时,可以用上述球面区域结构来定义该机位A在机位B的位置。而机位A所拍摄的360度全景视频可以用一个统一资源标识符(Uniform Resource Identifier,URI)链接来表示,当用户在观看B机位拍摄的视频时可以通过和机位A相关联的URI链接切换至机位A的视频观看。
[0090] 具体地,可以采用下列语法在球面区域结构中定义一个机位在另一个机位的位置。
[0091] Sample syntax
[0092] class HotspotSample()extends SphereRegionSample
[0093] {
[0094] string hotspot_uri;
[0095] }
[0096] 上述语法通过字段hotspot_uri定义了一个与球面区域相关联的URI指向另一个机位的360度全景视频链接。
[0097] 在上述方式中,由于URI是带外的连接,无法区分两个机位是否属于同一场景(或者事件)的拍摄,并且URI在网络传输过程中容易被更改或者重定向,因此,采用URI无法稳定的表达与机位相关的视频。
[0098] 因此,本申请提出了一种处理媒体数据的方法,通过在媒体数据的元数据信息中携带机位标识信息来指示媒体数据对应的机位,从而能够根据机位对媒体数据进行处理(例如,呈现),从而能够更灵活地向用户展示不同机位的视频。
[0099] 图1是本申请实施例的一种可能的应用场景的示意图。
[0100] 如图1,体育场中设置有机位A、机位B和机位C来拍摄视频,其中,机位A和机位B的位置固定,机位C位于轨道上,位置可以随时变动。机位A、机位B和机位C各自放置一台摄像机,用于拍摄360度的全景视频,其中,机位A拍摄视频的视角为视角1,机位B拍摄视频的视角为视角2,视角1和视角2有部分重叠,因此,在机位A拍摄的视频中的某些区域能够观察到机位B,在机位B拍摄的视频中的某些区域能够观察到机位A。
[0101] 图2示出了本申请实施例的另一种可能的应用场景,在图2中,体育场中设置有机位A和机位B,机位A和机位B分别固定在体育场的两端,机位A拍摄视频的视角为视角1,机位B拍摄视频的视角为视角2,视角1和视角2没有重叠。由于机位A拍摄视频的视角与机位B拍摄视频的视角不重合,因此,在机位A和机位B各自拍摄的视频中的区域中都无法观看到其它机位。
[0102] 应理解,上述图1和图2只是以体育场为例,示出了多机位拍摄视频的场景。实质上,多机位拍摄视频的场景还有很多,例如,采用多机位拍摄进行电视栏目制作,采用多机位拍摄进行晚会节目拍摄等等,任何采用多机位拍摄视频的场景都在本申请的范围内。
[0103] 图3是本申请的处理媒体数据的方法的示意性流程图。图3所示的方法可以由解码端设备执行,这里的解码端设备具体可以是视频解码器、具有解码视频功能的设备、视频播放器(例如,能够处理多媒体数据的电子设备)等等。图3所示的方法包括步骤101和步骤102,下面结合具体实例对步骤101和步骤102进行详细的描述。
[0104] 101、获取元数据信息。
[0105] 上述元数据信息可以是描述媒体数据的一些属性信息,例如,上述元数据信息可以包括媒体数据的时长,码率,帧率,在球面坐标系中的位置等信息。
[0106] 另外,上述元数据信息描述的媒体数据可以是全向媒体数据,该全向媒体数据可以是视频数据和/或音频数据。
[0107] 102、根据元数据信息中的机位标识信息对媒体数据进行处理。
[0108] 上述元数据信息可以携带机位标识信息,该机位标识信息用于表示机位。例如,第一媒体数据的元数据信息中包含第一机位标识信息,该第一机位标识信息表示第一机位,那么,第一媒体数据就是在第一机位下拍摄的媒体数据。
[0109] 另外,在步骤102中根据机位标识信息对媒体数据进行处理之前,还可以先从元数据中获取该元数据携带的机位标识信息。
[0110] 可选地,上述机位标识信息具体可以是机位ID,每个机位对应一个ID,不同的ID用于表示不同的机位。
[0111] 本申请中,由于元数据信息中携带有机位标识信息,因此,通过元数据信息中的机位标识信息能够自由处理不同机位对应的媒体数据。
[0112] 进一步地,上述处理媒体数据具体还可以是呈现媒体数据,此时,可以通过机位标识信息自由选择需要呈现的机位的媒体数据,进而能够实现在不同机位的视频之间进行自由切换。
[0113] 图4是本申请的处理媒体数据的方法的流程图。与图3所示的方法相同,图4所示的方法也可以由解码端设备执行。
[0114] 图4所示的方法包括步骤301至步骤306,下面对步骤301至步骤306进行详细的描述。
[0115] 301、获取元数据信息。
[0116] 步骤301中获取的元数据信息与步骤101中获取的元数据信息相同,也是描述媒体数据的一些属性信息。另外,步骤301中获取的元数据信息可以携带机位标识信息,该机位标识信息用于表示机位。
[0117] 302、获取机位选择信息。
[0118] 该机位选择信息可以用于表示用户选择观看的机位。例如,当图4所示的方法由终端设备执行时,用户可以通过终端设备的操作界面输入机位选择信息,进而选择想要观看的视频的视角。
[0119] 可选地,在步骤302之前,图4所示的方法还包括:呈现不同的机位。
[0120] 当用户观察到呈现的不同的机位时,可以根据观看视频的需要从不同的机位中选择观看视频的目标机位,并通过操作显示界面生成机位选择信息。
[0121] 303、根据机位选择信息以及元数据信息中的机位标识信息确定第一机位。
[0122] 具体地,当图4所示的方法由终端设备执行时,终端设备可以在显示界面呈现不同的机位图标(每个机位图标对应的机位标识信息不同)供用户选择,用户可以根据需要点击需要观看的机位(这里的用户的点击操作相当于上文中的机位选择信息),接下来,设备就可以呈现出用户选择的机位的视频。
[0123] 304、确定是否已经获取第一机位对应的媒体数据。
[0124] 当步骤304中确定已经获取了第一机位对应的媒体数据之后直接执行步骤306,而如果步骤304中确定没有获取第一机位对应的媒体数据,那么需要先获取第一机位对应的媒体数据,也就是执行步骤305。
[0125] 应理解,上述已经获取了第一机位对应的媒体数据可以是指客户端已经将第一机位对应的媒体数据下载到了本地;而没有获取第一机位对应的媒体数据可以是指只获取了第一机位对应的媒体数据的元数据信息,但是还未将第一机位对应的媒体数据保存到本地,此时,需要继续从服务器端获取第一机位对应的媒体数据。
[0126] 305、获取第一机位对应的媒体数据。
[0127] 具体地,在获取第一机位对应的媒体数据时,可以根据第一机位对应的媒体数据的元数据信息从服务器端获取第一机位对应的媒体数据的码流,然后解析第一机位对应的媒体数据的码流,从而得到第一机位对应的媒体数据。
[0128] 306、呈现第一机位对应的媒体数据。
[0129] 例如,当第一机位对应的媒体数据为视频数据并且图4所示的方法的执行主体是终端设备时,可以在终端设备的显示屏显示第一机位对应的视频,这样用户就可以通过显示屏观看到第一机位对应的视频。
[0130] 可选地,上述机位标识信息可以承载在不同形式的元数据信息中。
[0131] 具体地,上述机位标识信息可以承载在元数据轨迹、MPD以及SEI中。
[0132] 当机位标识信息承载在元数据轨迹中时,上述获取元数据信息可以具体包括:获取元数据轨迹,其中,该元数据轨迹包括机位标识信息。
[0133] 当机位标识信息承载在MPD中时,上述获取元数据信息可以具体包括:获取MPD,其中,该MPD包括机位标识信息。
[0134] 当机位标识信息承载在SEI中时,上述获取元数据信息可以具体包括:获取SEI,其中,该SEI包括机位标识信息。
[0135] 由于元数据轨迹、MPD以及SEI中包括机位标识信息,因此,通过解析元数据轨迹、MPD以及SEI能够确定机位。
[0136] 下面结合实例一至实例三对机位标识信息分别携带在元数据轨迹、MPD以及SEI中进行详细的说明。
[0137] 应理解,在本申请实施例中,MPD中除了下面实例中提到的语义之外,MPD中包含的其它语义可以参考OMFA、MPEG-DASH等标准中有关MPD语义的解释。
[0138] 实例一:机位标识信息携带在元数据轨迹中
[0139] 在实例一中,可以将属于同一机位的多个视频流(tracks)组成一类组合,并给不同的机位下的多个视频流组成的组合分配一个机位标识信息(具体可以是机位ID),客户端在解析到该机位的视频流组合之后将机位ID呈现给用户,用户可以根据机位ID选择要观看的机位。
[0140] 现有标准中的元数据轨迹中的box定义组合类型box(TrackGroupTypeBox),TrackGroupTypeBox包含的语法具体如下:
[0141] aligned(8)class TrackGroupTypeBox(unsigned int(32)track_group_type)extendsFullBox(track_group_type,version=0,flags=0)
[0142] {
[0143] unsigned int(32)track_group_id;
[0144] }
[0145] 上述语法的所表示的语义如下:
[0146] Track_group_type:表示组合的类型;
[0147] Track_group_id:表示同一类型和同一id的tracks属于同一个组合。
[0148] 在 实 例 一 种 ,通 过 在 元 数 据 轨 迹 中 新 增 一 种 组 合 类 型 b o x(ViewPositionGroupBox),该box继承自TrackGroupTypeBox,该新增组合类型box的语法如下:
[0149] aligned(8)class ViewPositionGroupBox extends TrackGroupTypeBox(‘vipo’){}
[0150] 当客户端获取到上述类型的box之后,通过解析该类型的box可以获取该box中的track_group_id,然后将不同的机位呈现给用户供用户自由选择。
[0151] 图5是本申请的处理媒体数据的方法的流程图,客户端处理上述类型的box的具体过程可以图5所示:
[0152] 401、获取视频码流。
[0153] 402、解析视频码流,确定是否存在特定类型的盒子。
[0154] 具体地 ,在获取到视频码流之后 ,寻找并解析类型为’vipo’的TrackGroupTypeBox。
[0155] 403、获取机位标识信息。
[0156] 当存在类型为’vipo’的TrackGroupTypeBox时,获取TrackGroupTypeBox中的track_group_id,也就是要获取机位标识信息。
[0157] 404、将机位呈现给用户。
[0158] 具体地,当解析得到多个机位标识信息时,可以将多个机位标识信息表示的机位通过图标的形式呈现在设备的显示界面。例如,当通过机位标识信息确定三个机位时,可以在设备的显示界面显示着三个机位的图标。用户可以通过显示屏幕选择相应的机位的视频观看,例如,用户可以通过点击的机位图标的方式来选择机位。
[0159] 405、呈现用户选择的机位对应的视频。
[0160] 例如,显示界面一共显示第一机位、第二机位和第三机位的图表,用户点击了第一机位,那么,设备接下来可以将第一机位对应的视频呈现在显示界面供用户观看。
[0161] 应理解,上文中的’vipo’表示的是track group组合的类型是同机位组合。并不是box中携带机位标识信息。应理解,这里只是采用’vipo’这四个字符来表示同机位组合类型,也可以用’aabb’等其他的任意字符表示同机位组合类型,本申请对具体采用的字符并不限定。
[0162] 为保证不同机位的track_group_id不同,可以通过标记ViewPositonGroupBox的flags为1来表示不同机位的track_group_id不同,该box的定义如下:
[0163] aligned(8)class ViewPositionGroupBox extends TrackGroupTypeBox(‘vipo’,version=0,flags=1){}
[0164] 实例二:机位标识信息携带在MPD中
[0165] 当机位标识信息携带在MPD中时,具体可以在MPD的字段adaptation set level增加属性@viewPositionSetId来表示该adaptation  set所属的机位,其中,@viewPositionSetId的具体定义如表1所示。
[0166] 表1
[0167]
[0168]
[0169] 在上述表1中,O表示该字段是可选的,不是必须出现的字段。另外,应理解,拥有相同@viewPositionSetId值的adaptation  set属于同一个机位,拥有不同@viewPositionSetId值的adaptation set属于不同的机位。
[0170] 在一种可能的实现方式中,当MPD中携带机位标识指示信息时,MPD包含的语法具体如下:
[0171]
[0172]
[0173] 在上述MPD包含的语法中,当viewPositionSetId=“1”时指示机位1,当viewPositionSetId=“2”时指示机位2,其中,机位1和机位2各自拥有两个轨迹,这两个轨迹可以分别称为tile1和tile2。
[0174] 当客户端获取到MPD文件之后,可以解析MPD文件中adaptation set一级的属性并获取到viewPositionSetId属性的值。
[0175] 接下来,客户端就可以将根据viewPositionSetId属性得到的机位信息呈现给用户,用户可以选择某一机位观看,在用户选择观看机位之后,客户端就可以将该机位对应的视频呈现给用户,用户在观看视频的观看中随时可以根据客户端呈现的机位信息来自由选择不同机位的视频来观看。
[0176] 实例三:机位标识信息携带在SEI中
[0177] 在一种可能的实现方式中,SEI携带机位标识信息的语法具体如下:
[0178]
[0179] 上述语法中的VIP是一个具体的数值,例如,当VIP为190时,表示SEI中的字段source_payload携带机位标识信息,source_payload包含的语法具体如下:
[0180]
[0181] 应理解,Source_payload就是上面的View_position_payload,Source_payload表示的是具体palyload里面的内容。
[0182] 上述View_position_id描述了上述SEI对应的码流所属的机位ID信息。
[0183] 另外,应理解,本申请中并不限定VIP的取值,当VIP取某个特定的取值时就可以用来表示SEI中的字段source_payload携带机位标识信息。
[0184] 在实例三种,当客户端获取视频码流之后,具体的处理流程如下:
[0185] (1)、客户端获取到视频码流,解析码流中的NALU头信息,如果解析到的头信息类型是SEI类型,那么就解析SEI NALU,以获得SEI的载荷类型;
[0186] (2)、如果客户端解析到SEI的载荷类型(payloadType)为190,那么就表示SEI中携带了码流机位信息,客户端继续解析获得view_position_id信息,获取机位号;
[0187] (3)、客户端将不同的view_position_id值对应的机位号呈现给用户;
[0188] (4)、用户选择某一机位观看,客户端将该机位下的视频呈现给客户。
[0189] 应理解,在上述过程(1)至(4)中,客户可以根据客户端呈现的机位号来自由选择不同机位的视频来观看。
[0190] 可选地,作为一个实施例,上述元数据信息还包括机位位置信息,该机位位置信息用于指示机位在球面坐标系中的位置。
[0191] 本申请中,通过机位位置信息,能够灵活指示不同机位的位置,使得用户在观看视频时能够在不同的机位之间进行灵活切换。
[0192] 应理解,在本申请中,机位标识信息可以指示机位的ID或者机位号,而机位位置信息可以用来指示机位在球面坐标系中的位置,也就是说,通过一个信息指示了机位的ID,通过另一个信息指示了机位的位置。
[0193] 可选地,上述元数据信息中包含的机位位置信息可以具体指示该元数据信息对应的机位之外的其它机位的位置。
[0194] 应理解,当机位位置信息指示元数据信息对应机位之外的其它机位的位置时可以适用于图1所示的场景。也就是说,当不同机位之间拍摄视频的视角之间有重叠部分时,可以在一个机位的媒体数据对应的元数据信息中携带指示其它机位在当前机位位置的机位位置信息。
[0195] 例如,在拍摄视频时存在机位1和机位2,机位1中的元数据信息中包含的机位位置信息还可以是机位2在机位1对应的媒体数据所在的球面区域中的位置。
[0196] 图6是本申请实施例的处理媒体数据的方法的流程图。具体地,图6所示方法中的具体步骤可以看成是图4所示的方法的步骤306之后的延续。当呈现了第一机位对应的媒体数据之后,接下来还可以根据在机位位置信息在第一机位的媒体数据所在的位置呈现其它机位的图标,使得用户能够自由的从第一机位切换到其它机位。图6所示的方法具体包括步骤501至步骤506,下面分别对步骤501至步骤506进行详细的描述。
[0197] 501、根据机位位置信息确定第二机位在第一机位对应的媒体数据所在的球面区域的第一位置。
[0198] 上述机位位置信息可以携带在元数据信息中,在步骤501之前,可以先从元数据信息中获取机位位置信息。
[0199] 应理解,在图5所示的方法中,机位位置信息具体指示第二机位在第一机位对应的媒体数据所在的球面区域的位置。上述第二位置可以位于第一机位和第二机位重合的区域。
[0200] 502、在第一位置呈现第二机位的图标。
[0201] 具体地,客户端可以在呈现的第一机位的视频中的第一位置处呈现第二机位的图标,用户通过点击第二机位的图标可以从第一机位切换到第二机位,这里的用户的点击操作就是机位切换指令。
[0202] 503、确定是否接收到用户的机位切换指令。
[0203] 当客户端接收到用户的机位切换指令之后,执行步骤504,否则继续等待。
[0204] 504、确定是否已获取第二机位对应的媒体数据。
[0205] 应理解,上述已获取了第二机位对应的媒体数据可以是指客户端已经将第二机位对应的媒体数据下载到了本地;而未获取第二机位对应的媒体数据可以是指客户端只获取了第二机位对应的媒体数据的元数据信息,但是还未将第二机位对应的媒体数据保存到本地,此时,客户端需要继续从服务器端获取第二机位对应的媒体数据。
[0206] 当步骤504中确定已经获取了第二机位对应的媒体数据之后直接执行步骤506,而如果步骤504中确定没有获取第二机位对应的媒体数据,那么需要先获取第二机位对应的媒体数据然后再呈现,也就是先执行步骤505然后再执行步骤506。
[0207] 505、获取第二机位对应的媒体数据。
[0208] 具体地,在获取第二机位对应的媒体数据时,可以根据第二机位对应的媒体数据的元数据信息从服务器端获取第二机位对应的媒体数据的码流,然后解析第二机位对应的媒体数据的码流,从而得到第二机位对应的媒体数据。
[0209] 506、呈现第二机位对应的媒体数据。
[0210] 可选地,上述机位位置信息可以承载在有时间属性的元数据轨迹、盒信息、MPD以及SEI中。这里的盒信息具体可以是盒子(box)。
[0211] 将机位位置信息携带在有时间属性的元数据轨迹上,能够指示机位位置变化的场景。
[0212] 当机位位置信息承载在有时间属性的元数据轨迹中时,上述获取元数据信息可以具体包括:获取有时间属性的元数据轨迹,其中,该有时间属性的元数据轨迹包括机位位置信息。
[0213] 当机位位置信息承载在盒信息中时,上述获取元数据信息可以具体包括:获取盒信息,其中,该盒信息包括机位位置信息。
[0214] 当机位位置信息承载在MPD中时,上述获取元数据信息可以具体包括:获取MPD,其中,该MPD包括机位位置信息。
[0215] 当机位位置信息承载在SEI中时,上述获取元数据信息可以具体包括:获取SEI,其中,该SEI包括机位位置信息。
[0216] 由于上述有时间属性的元数据轨迹、盒信息、MPD以及SEI中包括机位位置信息,因此,通过解析元数据轨迹、MPD以及SEI能够确定机位。
[0217] 下面结合实例四至实例七对机位标识信息分别携带在有时间属性的元数据轨迹、盒信息、MPD以及SEI中进行详细的说明。
[0218] 实例四:机位标识信息携带在有时间属性的元数据轨迹(timed metadata track)中
[0219] 在多机位的360度全景视频的应用场景中,可能出现在一个机位的视频中观看到其它一个或者多个机位情况。因此,元数据信息中除了携带机位标识信息之外还可以携带机位位置信息,用于描述其它机位在当前机位的球面区域的位置信息。具体地,可以通过一个与当前机位相关联的有时间属性的元数据轨迹描述其它机位在当前机位的球面区域信息,使得用户可以在观看某一机位视频的时候可以观看到另外的机位并通过点击该机位的球面区域的方式切换到其它机位。应理解,通过有时间属性的元数据轨迹描述机位的球面区域位置信息能够支持机位位置变化的场景。
[0220] 与实例一类似,在实例四中也可以通过新增一种组合类型来表示相同ID的轨迹(track)属于同一机位,该新增组合类型的语法如下:
[0221] aligned(8)class ViewPositionGroupBox extends TrackGroupTypeBox(‘vipo’){}
[0222] 为了能够描述其它机位在当前机位的球面区域的位置信息,需要在当前机位的球面区域中关联另一个机位的机位标识信息。为了支持在球面区域中关联另一个机位的机位标识信息(track group id),新定义有时间属性的元数据轨迹中样本入口格式(Sample Entry)如下:
[0223] Class AlternativeViewPositionEntry extends SphereRegionSampleEntry(‘alvp’,0,0){}
[0224] 新定义的有时间属性的元数据轨迹中样本的格式如下:
[0225]
[0226] 上述样本中的各个字段的语义如下:
[0227] num_view_position:表示存在多少个机位(其值应为具体机位数减一);
[0228] Track_group_id:表示其它机位的ID号;
[0229] SphereRegionStruct:表示其它机位在本机位的球面区域中的位置。
[0230] 作为另外一种可能的实现方式,有时间属性的元数据轨迹中样本入口格式如下:
[0231]
[0232] 在实例四中,当客户端获取到视频码流后,具体处理处理流程如下:
[0233] (1)、客户端获取视频数据轨迹(track)流;
[0234] (2) 、客户端在视频数据轨迹流中寻找并解析类型为’vipo’的TrackGroupTypeBox;
[0235] (3)、若视频数据轨迹流中存在类型为’vipo’的TrackGroupTypeBox,那么就从TrackGroupTypeBox获取其track_group_id(也就是从TrackGroupTypeBox中获取机位标识信息);
[0236] (4)、客户端获取有时间属性的元数据轨迹;
[0237] (5)、客户端从有时间属性的元数据轨迹中寻找并解析样本入口类型为’alvp’的有时间属性的元数据轨迹;
[0238] (6)、客户端从类型为’alvp’的有时间属性的元数据轨迹的样本中获取其它机位(其它机位的数量可以是一个也可以是多个)的track_group_id以及其它机位在当前机位的球面区域位置;
[0239] (7)、客户端呈现某一机位的视频,并在当前呈现的机位的视频中呈现其它机位的信息(如机位的编号)和该其它机位在当前机位的视频中的球面区域中的位置。
[0240] 应理解,当客户端呈现某一机位的视频时,用户可以随时点击该机位的视频中的球面区域中的其它机位,进而切换到其它机位的视频。
[0241] 可选地,在实例四中,假设与当前机位视频相关联的机位有多个机位,那么,有时间属性的元数据轨迹既可以包含该多个机位的机位位置信息,也可以只包含该多个机位中的一个机位的机位位置信息。
[0242] 在有时间属性的元数据轨迹仅包含一个机位的机位位置信息的情况下,多个机位的位置信息可以通过多个有时间属性的元数据轨迹来携带。
[0243] 当有时间属性的元数据轨迹包含多个机位的机位位置信息的情况下,相应的样本入口格式如下:
[0244] Class AlternativeViewPositionEntry extends SphereRegionSampleEntry(‘alvp’,0,0){}
[0245] 当有时间属性的元数据轨迹包含多个机位的机位位置信息的情况下,相应的样本格式如下:
[0246]
[0247] 另外,有时间属性的元数据轨迹的样本入口格式也可以不继承至SphereRegionSampleEntry,而是重新定义新的样本入口格式和样本格式,重新定义的样本入口格式如下:
[0248]
[0249] 重新定义的样本格式如下:
[0250]
[0251] 上述各个字段的语义如下:
[0252] num_view_position:表示存在多少个机位(其值应为具体机位数减一);
[0253] Track_group_id:表示其它机位的ID号;
[0254] center_azimuth和center_elevation:表示区域的中心点位置(也就是表示其它机位在当前机位的球面区域的位置)。
[0255] 当有时间属性的元数据轨迹仅包含一个机位的机位位置信息的情况下,相应的样本入口格式如下:
[0256] Class AlternativeViewPositionEntry extends MetaDataSampleEntry(‘alvp’,0,0){}
[0257] 当有时间属性的元数据轨迹仅包含一个机位的机位位置信息的情况下,相应的样本格式如下:
[0258]
[0259] 在实例四中,通过机位位置信息能够当用户观看当前机位的视频时还能够呈现其它机位的机位信息以及其它机位在当前机位的视频区域中的位置,方便用户切换到其它机位的视频观看。
[0260] 在实例四中,通过有时间属性的元数据轨迹描述机位的球面区域位置信息能够支持机位位置变化的场景。而对于机位位置固定不变的应用场景可以在机位视频流track中新增一个用于描述其它机位的机位位置信息的box,使得用户可以在观看某一机位视频的时候可以观看到另外的机位并通过点击该机位相应球面区域(其它机位在当前机位视频中的位置)的方式切换到其它机位。
[0261] 下面结合实例五对机位位置固定不变的场景下,通过在机位视频流track中新增一个box用于描述其它机位的机位位置信息的实现方式进行详细的说明。
[0262] 实例五:机位位置信息携带在盒信息中
[0263] 在实例五中,通过新增一种组合类型,表示该组合类型下相同id的tracks属于同一机位,新增组合类型定义如下:
[0264] aligned(8)class ViewPositionGroupBox extends TrackGroupTypeBox(‘vipo’){}
[0265] 通过在视频流track中的元数据box(相当于上文中的盒信息)来携带其它机位在当前机位的机位位置信息,具体定义如下:
[0266]
[0267] 上述元数据box中的各个字段含义如下:
[0268] num_view_position:表示存在多少个机位(其值应为具体机位数减一);
[0269] Track_group_id:表示其它机位的ID号;
[0270] center_azimuth和center_elevation:表示区域的中心点位置(也就是表示其它机位在当前机位的球面区域的位置)。
[0271] 在实例五中,当客户端获取到视频码流后,具体处理处理流程如下:
[0272] (1)、客户端获取视频数据轨迹(track)流;
[0273] (2) 、客户端在视频数据轨迹流中寻找并解析类型为’vipo’的TrackGroupTypeBox;
[0274] (3)、若视频数据轨迹流中存在类型为’vipo’的TrackGroupTypeBox,那么就从TrackGroupTypeBox获取其track_group_id(也就是从TrackGroupTypeBox中获取机位标识信息);
[0275] (4)、客户端在视频数据轨迹流中寻找并解析类型为’avpb’的box;
[0276] (5)、客户端从类型为’avpb’的box中获取其样本数据中的一个或者多个其它机位的track_group_id和其球面区域位置;
[0277] (6)、客户端呈现某一机位视频,并在该机位视频中呈现其它机位信息以及其它机位在该机位视频中的球面区域的位置。
[0278] 应理解,当客户端呈现某一机位的视频时,用户可以随时点击该机位的视频中的球面区域中的其它机位,进而切换到其它机位的视频。
[0279] 在实例五中,可以利用现有OMAF中的SphereRegionStruct球面区域结构来定义类型为’avpb’的box,具体定义如下:
[0280]
[0281] 下面结合实例六对MPD携带机位标识信息和机位位置信息的情况进行详细描述。
[0282] 实例六:机位位置信息携带在MPD中
[0283] MPD中不仅可以携带机位位置信息,还可以携带机位标识信息。与实例二相同,当MPD携带机位标识信息时,也可以通过在MPD的adaptation set  level增加属性@viewPositionSetId表达该adaptation set所属的机位,其具体含义可以如上文中的表1所示。
[0284] 此外,还可以在ISO/IEC 23009-1中规定的标准元素SupplementalProperty中增加源信息描述子,其@schemeIdUri的值采用”urn:mpeg:omaf:alvp:2017”,表示该辅助属性描述可供替换的机位,其具体值定义如表2所示:
[0285] 表2
[0286]
[0287]
[0288] 上述表2中的各个字段的语义如下:
[0289] View_position_id:表示可替代的机位的id(也就是当前机机位之外的其它机位的id),View_position_id应与adaptation set中的某个@viewPositionSetId相同;
[0290] center_azimuth、center_elevation:表示其它机位在当前机位的视频的球面区域的中心点的位置。
[0291] 另外,在表2中,M表示该字段是必须出现的或者必须存在的,而O表示该字段是可选的。
[0292] 在多个机位的场景下,可以利用多个ALVP描述字来描述多个可替代的机位信息,其中,在一种可能的实现方式中,MPD的示例如下:
[0293]
[0294]
[0295]
[0296] 在上述MPD包含的语法中,当viewPositionSetId=“1”时指示机位1,当viewPositionSetId=“2”时指示机位2,其中,机位1和机位2各自拥有两个轨迹(tile1和tile2)。
[0297] 表示可替代的机位的id以及其它机位的球面区域位置信息。
[0298] 客户端在获取视频码流后的处理流程具体如下:
[0299] (1)、客户端获取MPD文件,解析adaptation  set一级的属性并获取到viewPositionSetId属性的值;
[0300] (2)、客户端解析adaptation set中SupplementalProperty属性,获取其它机位的ID和在其球面区域信息;
[0301] (3)、当用户在观看某一机位视频时,客户端呈现其它机位信息及其在该机位视频中的球面区域,用户可随时点击该区域切换至不同机位观看。
[0302] 在实例六中,通过类型为’alvp’的SupplementalProperty定义了View_position_id,center_azimuth和center_elevation。其中center_azimuth和center_elevation可以表示球面区域的中心点,进一步,在实例六中还可做一定扩展表示球面区域的覆盖范围,其具体定义如表3所示:
[0303] 表3
[0304]
[0305]
[0306] 上述表3中的语法中的各个字段的语义如下:
[0307] View_position_id:表示其它机位的id;
[0308] Shape_type:表示该球面区域构成的形式,包括四个大球相交形成的区域,以及两个大球和两个小球在球面相交的区域;
[0309] center_azimuth、center_elevation、center_tilt、azimuth_range以及elevation_range具体用于表示其它机位在在当前机位的视频的球面区域中的位置。
[0310] 其中,center_azimuth、center_elevation表示其它机位所在区域的中心点位置,center_tilt表示其它机位所在区域中心点倾斜角,azimuth_range表示其它机位所在区域方位角覆盖范围,elevation_range表示其它机位所在区域仰角覆盖范围。
[0311] 实例七:机位位置信息携带在SEI中
[0312] SEI中除了携带机位标识信息之外,还可以携带机位位置信息,同实例二相同,实例七中SEI携带机位标识信息的语法具体如下:
[0313]
[0314] 上述语法中的VIP是一个具体的数值,例如,当VIP为190时,表示SEI中的字段source_payload携带机位标识信息,source_payload包含的语法具体如下:
[0315]
[0316] 上述View_position_id描述了上述SEI对应的码流所属的机位ID信息。
[0317] 另外,应理解,本申请中并不限定VIP的取值,当VIP取某个特定的取值时就可以用来表示SEI中的字段source_payload携带机位标识信息。
[0318] 可选地,机位位置信息也可以携带在SEI中,具体地,这里的机位位置信息可以包括其它机位的ID信息以及其它机位在当前机位的视频所在的球面区域中的位置信息,SEI中携带机位位置信息的语法具体如下:
[0319]
[0320] 述语法中的ALV表示一个具体取值,例如,当ALV为191时表示SEI中携带机位位置信息,当SEI中的载荷类型为ALV时,SEI中的语法具体如下:
[0321]
[0322] 其中,各个语法的语义如下:
[0323] Num_view_position:表示有多个其它机位;
[0324] View_position_id:表示其它机位的ID;
[0325] center_azimuth、center_elevation:表示其它机位在当前机位的视频的球面区域的中心点的位置。
[0326] 在实例七中,客户端获取到视频码流后的处理流程如下:
[0327] (1)、客户端获取到视频码流,解析码流中的NALU头信息;
[0328] (2)、如果客户端解析到的头信息类型是SEI类型,那么,继续解析SEI NALU,获得SEI的载荷类型;
[0329] (3)、如果客户端解析到的载荷类型为190,表示SEI中携带了码流机位信息;
[0330] (4)、客户端继续解析码流获得view_position_id信息,获取机位号;
[0331] (5)、如果客户端解析到的载荷类型为191,表示SEI中携带了其它机位的信息及其它机位在当前机位的视频的球面区域的位置;
[0332] (6)、客户端向用户呈现某一机位视频,并呈现其它机位以及其它机位在当前机位的视频的球面区域中的位置。
[0333] 在实例七中,当客户端呈现某一机位的视频时,用户可以随时点击该机位的视频中的球面区域中的其它机位,进而切换到其它机位的视频。
[0334] 实例七中通过ALV SEI信息中定义了其它机位的机位标识信息和其它机位在当前机位的视频的球面区域中的位置信息,进一步地,实例七还可做一定扩展表示球面区域的覆盖范围,其具体定义如下:
[0335]
[0336] 上述语法中各个语法的含义如下:
[0337] View_position_id:表示其它机位的id;
[0338] Shape_type:表示该球面区域构成的形式,包括四个大球相交形成的区域,以及两个大球和两个小球在球面相交的区域;
[0339] center_azimuth、center_elevation、center_tilt、azimuth_range以及elevation_range具体用于表示其它机位在在当前机位的视频的球面区域中的位置。
[0340] 其中,center_azimuth、center_elevation表示其它机位所在区域的中心点位置,center_tilt表示其它机位所在区域中心点倾斜角,azimuth_range表示其它机位所在区域方位角覆盖范围,elevation_range表示其它机位所在区域仰角覆盖范围。
[0341] 应理解,在上述实例四至实例七中,机位位置信息具体包括其它机位的机位标识信息以及其它机位在当前机位的视频所在的球面区域的位置。其中,其它机位的机位标识信息也可以采用track_group_id来表示,而其它机位在当前机位的视频所在的球面区域的位置可以用SphereRegionStruct来表示。
[0342] 可选地,作为一个实施例,上述获取元数据信息,包括:获取元数据轨迹,该元数据轨迹携带机位标识信息和导演视角信息;上述根据机位标识信息对媒体数据进行处理,包括:根据所述机位标识信息和导演视角信息,对媒体数据进行处理。
[0343] 上述导演视角信息可以指示视频制作者或者导演推荐的观看视角,客户端根据导演视角信息可以将视频制作者或者导演要呈现给用户的媒体内容呈现给用户。由于元数据轨迹中还包括机位标识信息,因此,客户端可以将导演视角范围的至少一个机位的视频内容呈现给用户,使得用户能够在导演视角范围内的至少一个机位中选择一个机位的视频来观看。
[0344] 本申请中,由于元数据轨迹中了除了包含导演视角信息之外,还包含机位标识信息,使得用户能够在导演视角范围内选择相应机位的视频观看,因此,本申请能够使得用户在导演视角范围内的不同的机位之间进行自由切换。
[0345] 下面结合实例八对元数据轨迹中既携带机位标识信息又携带导演视角信息的情况进行详细的说明。
[0346] 实例八:元数据轨迹中携带机位标识信息和导演视角信息
[0347] 实例八为存在导演视角流的应用场景,在该场景下,用户并不通过自身选择的视角和机位来观看视频,而是根据导演或者视频制作者事先设计或者推荐的视角和机位观看视频。
[0348] 现有的OMAF标准中定义了导演视角流的语法格式,具体地,当通过有时间属性的元数据轨迹描述导演推荐用户观看的视角(即球面区域)时定义的样本入口(sample entry)的语法格式如下:
[0349]
[0350] 其中SphereRegionSampleEntry表示了球面区域位置类型,viewport_type表示该样本中定义了导演视角。
[0351] 相应的样本格式如下:
[0352]
[0353]
[0354] 在实例八中,通过新增一种组合类型,表示该组合类型下相同id的轨迹属于同一机位,新增组合类型的定义如下:
[0355] aligned(8)class ViewPositionGroupBox extends TrackGroupTypeBox(‘vipo’){}
[0356] 在实例八中,通过一个timed metadata track描述导演推荐用户观看的机位和视角。其中样本入口(sample entry)定义仍采用OMAF原有的导演推荐视角流的类型’rcvp’,样本格式的定义如下:
[0357]
[0358] 上述语法的语义如下:
[0359] Multiple_position_presence_flag:表示导演推荐视角流中是否存在多个机位;
[0360] Track_group_id:当导演推荐视角流中存在多个机位时,表示导演视角流中的机位的的ID。
[0361] 在实例八中,当客户端获取到视频码流后,具体的处理流程如下:
[0362] (1)、客户端获取视频数据轨迹(track)流;
[0363] (2) 、客户端在视频数据轨迹流中寻找并解析类型为’vipo’的TrackGroupTypeBox;
[0364] (3)、若视频数据轨迹流中存在类型为’vipo’的TrackGroupTypeBox,那么就从TrackGroupTypeBox获取track_group_id;
[0365] (4)、客户端从码流中获取类型为’rcvp’的有时间属性的元数据轨迹;
[0366] (5)、如果时间属性的元数据轨迹的样本数据中的multiple_position_presence_flag为1,则获取其它机位的track_group_id和其推荐观看的球面区域;
[0367] (6)、客户端根据上述有时间属性的元数据轨迹中的信息,将推荐的不同机位的视频呈现给用户。
[0368] 在上述过程(2)中,当客户端解析到类型为’vipo’的TrackGroupTypeBox时,确定有时间属性的元数据轨迹中携带有机位标识信息,接下来,需要获取机位标识信息。
[0369] 在上述过程(3)中,当客户端解析到类型为’rcvp’的有时间属性的元数据轨迹时,确定有时间属性的元数据轨迹中携带有导演视角信息,接下来,需要获取导演视角信息。
[0370] 在本申请实施例中,机位标识信息可以具体用于指示机位的ID,机位的编号或者机位号等等,在上述实例一至实例八中,track_group_id可以看成是机位标识信息的一种具体实现形式,track_group_id可以具体用于表示机位的ID。
[0371] 在全向媒体格式设计中,通常采用多个轨迹(track)来承载全向内容的不同部分。因此,在多视点的场景下,如果当前设计混合使用所有的轨道,那么就很难区分从一个观看位置到另一个观看位置的视频轨迹。
[0372] 为了区分不同观看位置对应的视频轨迹,可以采用轨迹分组机制对属于同一观看位置的视频轨迹进行分组,如果视频轨迹属于相同的观看位置,那么它们享有相同的轨迹组ID,并且一个观看位置对应的轨迹组ID与其它观看位置对应的轨迹组ID不同。当所有的视频轨迹中都不存在ViewPositionGroupBox时,那么就意味着所有的视频轨迹都对应一个观看位置。
[0373] 在本申请中,可以通过下面的语法定义机位标识信息,语法内容具体如下:
[0374] aligned(8)class ViewPositionGroupBox extends TrackGroupTypeBox(‘vipo’){}
[0375] 上述语法的语义如下:
[0376] TrackGroupTypeBox中track_group_id值相同且track_group_type等于“vipo”的轨迹属于相同的观看位置(Tracks that have the same value of track_group_id within
[0377] TrackGroupTypeBox with track_group_type equal to‘vipo’belong to the same viewing
[0378] position)。
[0379] 另外,在本申请中还可以通过机位位置信息来定义其它机位的ID以及其它机位在当前机位的视频中的球面区域中的位置。具体地,可以使用与给定观看位置组相关联的有时间属性的元数据轨道来描述可选观看位置以及其在给定观看位置的球面上的空间区域。
[0380] 为了描述机位位置信息,相应的样本入口类型’alvp’的语法定义如下:
[0381]
[0382] 其中,num_view_position指示了可选择的观看位置的数目(num_view_positionindicates number of alternative viewing positions)。这里的观看位置相当于上位中的机位。
[0383] 为了描述机位位置信息,在每个样本中需要定义可选的观看位置id(相当于上文中的机位ID)和它在球体上的空间区域,样本语法的具体定义如下:
[0384]
[0385]
[0386] 上述样本中的字段的语义具体如下:
[0387] center_azimuth、center_elevation:表示区域的中心点位置;
[0388] Center_tilt:表示区域的倾斜角度;
[0389] azimuth_range:表示区域的方位角覆盖范围;
[0390] Elevation_range:表示区域的仰角覆盖范围;
[0391] num_view_position:表示标志存在多少个机位(其值应为具体机位数减一);
[0392] Track_group_id标志其它机位的ID号;
[0393] SphereRegionStruct:表示其它机位在本机位的球面区域中的位置。
[0394] 上文结合图1至图6对本申请实施例的处理媒体数据的方法进行了详细的描述,下面结合图7和图8对本申请实施例的处理媒体数据的装置进行描述,应理解,图7和图8所描述的处理媒体数据的装置能够执行图1至图6中的处理媒体数据的方法的各个步骤,上文图1至图6中对各个步骤的限定同样适用于图7和图8所示的装置,因此,下面在描述图7和图8所示的装置时,为了简洁,适当省略重复的描述。
[0395] 图7是本申请实施例的处理媒体数据的装置的示意性框图。
[0396] 图7所示的装置600包括:
[0397] 获取模块601,用于获取元数据信息,其中,该元数据信息为描述媒体数据的属性信息,该元数据信息包括机位标识信息。
[0398] 处理模块602,用于根据机位标识信息对媒体数据进行处理。
[0399] 本申请中,由于元数据信息中携带有机位标识信息,因此,通过元数据信息中的机位标识信息能够自由处理不同机位对应的媒体数据。
[0400] 图8是本申请实施例的处理媒体数据的装置的硬件结构示意图。图8所示的装置700可以看成是一种计算机设备,装置700可以作为本申请实施例的处理媒体数据的装置的一种实现方式,也可以作为本申请实施例的处理媒体数据的方法的一种实现方式,装置700包括处理器701、存储器702、输入/输出接口703和总线705,还可以包括通信接口704。其中,处理器701、存储器702、输入/输出接口703和通信接口704通过总线705实现彼此之间的通信连接。
[0401] 处理器701可以采用通用的中央处理器(Central Processing Unit,CPU),微处理器,应用专用集成电路(Application Specific Integrated Circuit,ASIC),或者一个或多个集成电路,用于执行相关程序,以实现本申请实施例的处理媒体数据的装置中的模块所需执行的功能,或者执行本申请方法实施例的处理媒体数据的方法。处理器701可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器701中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器701可以是通用处理器、数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(ASIC)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。
该存储介质位于存储器702,处理器701读取存储器702中的信息,结合其硬件完成本申请实施例的处理媒体数据的装置中包括的模块所需执行的功能,或者执行本申请方法实施例的处理媒体数据的方法。
[0402] 存储器702可以是只读存储器(Read Only Memory,ROM),静态存储设备,动态存储设备或者随机存取存储器(Random Access Memory,RAM)。存储器702可以存储操作系统以及其他应用程序。在通过软件或者固件来实现本申请实施例的处理媒体数据的装置中包括的模块所需执行的功能,或者执行本申请方法实施例的处理媒体数据的方法时,用于实现本申请实施例提供的技术方案的程序代码保存在存储器702中,并由处理器701来执行处理媒体数据的装置中包括的模块所需执行的操作,或者执行本申请方法实施例提供的处理媒体数据的方法。
[0403] 输入/输出接口703用于接收输入的数据和信息,输出操作结果等数据。
[0404] 通信接口704使用例如但不限于收发器一类的收发装置,来实现装置700与其他设备或通信网络之间的通信。可以作为处理装置中的获取模块或者发送模块。
[0405] 总线705可包括在装置700各个部件(例如处理器701、存储器702、输入/输出接口703和通信接口704)之间传送信息的通路。
[0406] 应注意,尽管图8所示的装置700仅仅示出了处理器701、存储器702、输入/输出接口703、通信接口704以及总线705,但是在具体实现过程中,本领域的技术人员应当明白,装置700还包括实现正常运行所必须的其他器件,例如还可以包括显示器,用于显示要播放的视频数据。同时,根据具体需要,本领域的技术人员应当明白,装置700还可包括实现其他附加功能的硬件器件。此外,本领域的技术人员应当明白,装置700也可仅仅包括实现本申请实施例所必须的器件,而不必包括图8中所示的全部器件。
[0407] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
[0408] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0409] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0410] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0411] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0412] 所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0413] 以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。