媒体数据传输方法及装置与流程

文档序号:11590147阅读:237来源:国知局
媒体数据传输方法及装置与流程

本发明涉及通信领域,具体而言,涉及一种媒体数据传输方法及装置。



背景技术:

媒体内容提供者或经营者可通过超文本协议(hypertesttransferprotocol,简称为http)动态自适应流媒体(dynamicadaptivestreamingoverhttp,简称为dash)系统为用户提供高质量的流媒体服务,媒体内容可为音频、视频、文本及其组合等,可支持多种编码和解码技术及标准,支持不同的媒体格式和媒体播放器,可提供多种视角、码率、帧率、空间分辨率及其组合等。

媒体内容可包括媒体呈现描述文件(mediapresentationdescription,简称为mpd)和媒体片段资源。mpd为描述媒体内容的可扩展标记语言(extensiblemarkuplanguage,简称为xml)文档,包含媒体片段资源的描述信息,如媒体片段的呈现时间、码率、帧率、空间分辨率、统一资源定位符、以及所在的时段、适配集、表述等等信息。正如本领域普通技术人员理解的那样,媒体内容可以分为多个层级,包括时段(period)、适配集(adaptationset)、表述(representation)以及片段(segment)。

在http动态自适应流媒体系统中,媒体服务器将媒体流传输到客户端,客户端可根据如网络状况、设备处理能力和用户偏好等等各种因素动态地选择合适的媒体片段,为用户提供尽可能高的媒体内容观赏体验。客户端与服务器之间通过交换http请求和响应来传输媒体流,一个媒体片段对应一对http请求/响应。在直播场景中,通过减少媒体片段时长以满足低延迟限制,但这会造成http请求数量膨胀的问题。

全双工http动态自适应流媒体(fullduplexhttpdash,简称为fdh-dash)通过利用服务器推送(serverpush)技术为上述延迟问题提供了解决方案。在fdh-dash系统中,服务器端会配置一种或多种推送策略(pushpolicy),客户端与服务器端通过交换片段请求/响应消息,协商确定会话中采取的推送策略,譬如:基于片段数量推送策略(k-push)以及基于片段呈现时间推送策略(t-push)等,驱动流媒体传输会话。其中,片段请求/响应消息可通过websocket或http/2等全双工http协议发送。在接收到来自客户端的请求消息后,服务器将包含片段数据的响应消息发送到客户端;同时,客户端也可以通过在片段请求消息指定推送指令,发起推送会话,在一次推送会话中,服务器将一个或多个片段文件推送到客户端。从而缓解了因低延迟限制带来的http请求负载膨胀的问题。

片段请求消息包含片段url(segment_uri)和推送指令(push_directive),用于客户端请求片段和发起推送会话。该push_directive由推送类型和推送参数组成,用于客户端指定推送策略,如t-push和k-push,与服务器协商所需推送的片段序列,发起推送会话。其中,基 于片段呈现时间推送策略(t-push)可通过push-time推送类型的推送指令指定,相应的推送参数为t,用于发起推送会话,请求服务器推送起始呈现时间在参数segment_uri对应片段的起始呈现时间与参数t之间的片段序列。客户端将包含参数segment_uri和由push-time与t组成的推送指令的片段请求消息发送至服务器。服务器接收到上述消息后,首先发送包含segment_uri对应片段的响应消息;然后需解析mpd以获取媒体呈现时间线,并将segment_uri与t映射至媒体呈现时间线上,获取相应呈现区间的片段序列,并向客户端推送相应的片段序列。基于片段数量推送策略(k-push)可通过push-next推送类型的推送指令指定,相应的推送参数为k,用于发起推送会话,请求服务器推送以参数segment_uri对应片段的下一个片段作为起始片段的连续k个片段。客户端将包含参数segment_uri和由push-next与k组成的推送指令的片段请求消息发送至服务器。服务器接收到上述消息后,首先发送包含segment_uri对应片段的响应消息;然后需解析mpd以获取segment_uri对应片段所在的片段列表,获取以参数segment_uri对应片段的下一个片段作为起始片段的连续k个片段,并向客户端推送相应的片段序列。

综上所述,相关技术中的媒体片段推送策略,需要服务器端解析mpd获取片段列表和/或媒体呈现时间线信息才能执行,造成服务器负载重,并且,服务器与dash强相关,这与dash的设计理念相悖。

针对相关技术媒体片段推送策略中需要媒体服务器端解析mpd或其他信息而导致的服务器负载负重的技术问题,目前尚未提出解决方案。



技术实现要素:

本发明提供了一种媒体数据传输方法及装置,以至少解决相关技术媒体片段推送策略中需要媒体服务器端解析mpd或其他信息而导致的服务器负载负重的问题。

根据本发明的一个方面,提供了一种媒体数据传输方法,包括:发送第一媒体数据获取请求至服务器,所述请求中携带基于url模板的推送指令,所述推送指令用于请求所述服务器推送第二媒体数据;接收所述服务器返回的第一媒体数据以及所述服务器根据所述推送指令推送的所述第二媒体数据。

可选地,所述推送指令中包含推送参数,所述推送参数用于参数化所述推送指令中url模板,生成用于请求所述服务器推送所述第二媒体数据对应的url列表。

可选地,所述推送指令中包含的推送参数包括以下至少之一:范围参数、时间参数、压缩序列参数、单值参数、列表值参数。

可选地,在发送所述第一媒体数据获取请求至服务器之前,该方法还包括:生成用于请求所述服务器推送所述第二媒体数据对应的url列表;根据所述第二媒体数据对应的url列表,生成推送参数值数组队列;根据所述推送参数值数组队列,生成所述推送指令中包含的压缩序列参数。

可选地,所述生成用于请求所述服务器推送所述第二媒体数据对应的url列表,包括:根据所述第一媒体数据url以及时间参数,确定所述第二媒体数据对应的呈现时间段,其中,所述呈现时间段包括:起始时间点和最终时间点;根据确定的所述呈现时间段和所述,生成所述第二媒体数据对应的所述url列表。

可选地,所述生成用于请求所述服务器推送所述第二媒体数据对应的url列表,包括:根据所述第一媒体数据url以及范围参数,确定所述第二媒体数据对应的编号范围,其中,所述编号范围包括:起始编号和终止编号;根据确定的所述编号范围,生成所述第二媒体数据对应的所述url列表。

可选地,根据所述第二媒体数据对应的url列表,生成所述推送参数值数组队列,包括:在所述url列表为字节范围类型url列表的情况下,生成包含第一变量标识和第二变量标识的第一url模板,其中,所述第一变量标识用于指示字节范围的起始字节值,所述第二变量标识用于指示字节范围的结束字节值;获取所述url列表中字节范围的所述第一变量标识对应的序列至所述第二变量标识对应的序列,生成所述参数值数组队列;或者,

在所述url列表为普通类型url列表且所述url列表中对应片段名包含起始呈现时间信息的情况下,生成包含时间变量标识的第二url模板,其中,所述时间变量标识用于指示第一媒体片段的起始呈现时间;获取所述url列表中所述时间变量标识对应的数值列表,生成所述参数值数组队列;或者,

在所述url列表为普通类型url列表且所述url列表中对应片段名不包含起始呈现时间信息的情况下,生成包含数值变量标识的第三url模板,其中,所述数值变量标识用于指示第二媒体片段的数值编号;获取所述url列表中所述数值变量标识对应的数值列表,生成所述参数值数组队列。

可选地,根据所述推送参数值数组队列,生成所述推送指令中包含的压缩序列参数,包括:根据所述参数值数组队列,生成差值序列;根据所述差值序列,进行游程编码,生成所述压缩序列参数。

可选地,所述推送指令中包含的压缩序列参数的压缩格式为:定义为:"s,d1:r1,d2:r2,…,di:ri,…,dn:rn",其中,s指示起始参数值,d指示两个连续参数值间的差值,r指示相同差值的持续次数,n为正整数。

可选地,其中,i为正整数且1≤i≤n。

可选地,所述推送指令url模板中包含数目变量,用于基于片段编号指定所述第二媒体数据的url,其中,所述数目变量通过以下参数至少之一所提供的片段编号序列进行参数化:范围参数、压缩序列参数、单值参数、列表值参数。

可选地,所述推送指令url模板中包含时间变量,用于基于片段呈现时间指定所述第二媒体数据的url,其中,所述时间变量通过以下参数至少之一所提供的片段时间序列进行参数化:时间参数、压缩序列参数、单值参数、列表值参数。

可选地,所述推送指令url模板中包含字节范围变量,用于基于片段字节范围指定所述第二媒体数据的url,其中,所述字节范围变量通过以下参数至少之一所提供的首字节位置序列和尾字节位置序列进行参数化:压缩序列参数、单值参数、列表值参数。

可选地,所述推送指令中包含一个或者多个url模板以及基于压缩序列参数、或者单值参数、或者列表值参数的推送参数值列表。

根据本发明的另一个方面,还提供了一种媒体数据传输方法,包括:接收客户端发送的第一媒体数据获取请求,所述请求中携带基于url模板的推送指令,所述推送指令用于请求推送第二媒体数据;返回所述第一媒体数据至所述客户端,并根据所述推送指令推送所述第二媒体数据至所述客户端。

可选地,所述推送指令中包含推送参数,所述推送参数用于参数化所述推送指令中url模板,生成所述第二媒体数据对应的url列表,根据所述推送指令推送所述第二媒体数据至所述客户端,还包括:根据所述url列表,推送所述第二媒体数据至所述客户端。

可选地,所述推送指令中包含的推送参数包括以下至少之一:范围参数、时间参数、压缩序列参数、单值参数、列表值参数。

可选地,所述推送指令中包含的压缩序列参数的压缩格式为:定义为:"s,d1:r1,d2:r2,…,di:ri,…,dn:rn",其中,s指示起始参数值,d指示两个连续参数值间的差值,r指示相同差值的持续次数,n为正整数。

可选地,其中,i为正整数且1≤i≤n。

可选地,在推送所述第二媒体数据至所述客户端之前,该方法还包括:根据所述推送指令中包含的压缩序列参数,生成推送参数值数组队列;根据所述推送参数值数组队列,生成所述第二媒体数据对应的url列表。

可选地,根据所述推送指令中包含的压缩序列参数,生成推送参数值数组队列的方法包括:解析所述推送指令,获取所述压缩序列参数;解压缩所述压缩序列参数,获取参数值数组,生成推送参数值数组队列。

可选地,根据所述推送参数值数组队列,生成所述url列表,包括:获取所述推送参数值数组队列中的元素;利用所述元素替换所述推送指令中的url模板变量,生成所述url列表,其中,所述url模板变量包括以下至少之一:数目变量、时间变量、字节范围变量。

可选地,所述推送指令url模板中包含数目变量,用于基于片段编号指定所述第二媒体数据的url,其中,所述url模板数目变量通过以下参数至少之一所提供的片段编号序列进行参数化:范围参数、压缩序列参数、单值参数、列表值参数。

可选地,所述推送指令url模板中包含时间变量,用于基于片段呈现时间指定所述第二媒体数据的url,其中,所述url模板时间变量通过以下参数至少之一所提供的片段时间序列进行参数化:时间参数、压缩序列参数、单值参数、列表值参数。

可选地,所述推送指令url模板中包含字节范围变量,用于基于片段字节范围指定所述第二媒体数据的url,其中,所述url模板字节范围变量通过以下参数至少之一所提供的首字节位置序列和尾字节位置序列进行参数化:压缩序列参数、单值参数、列表值参数。

可选地,所述推送指令中包含一个或者多个url模板以及基于压缩序列参数、或者单值参数、或者列表值参数的推送参数值列表。

根据本发明的另一个方面,还提供了一种媒体数据传输装置,包括:发送模块,用于发送第一媒体数据获取请求至服务器,所述请求中携带基于url模板的推送指令,所述推送指令用于请求所述服务器推送第二媒体数据;接收模块,用于接收所述服务器返回的第一媒体数据以及所述服务器根据所述推送指令推送的所述第二媒体数据。

可选地,所述装置还包括:第一生成模块,用于在发送所述第一媒体数据获取请求至服务器之前,生成用于请求所述服务器推送所述第二媒体数据对应的url列表;第二生成模块,用于根据所述第二媒体数据对应的url列表,生成参数值数组队列;第三生成模块,用于根据所述参数值数组队列,生成所述推送指令中包含的压缩序列参数。

可选地,所述第一生成模块,包括:所述第一生成模块,包括:第一确定单元,用于根据所述第一媒体数据url以及时间参数,确定所述第二媒体数据对应的呈现时间段,其中,所述呈现时间段包括:起始时间点和最终时间点;第一生成单元,用于根据确定的所述呈现时间段,生成所述第二媒体数据对应的所述url列表。

可选地,所述第一生成模块,包括:第二确定单元,用于根据所述第一媒体数据url以及范围参数,确定所述第二媒体数据对应的编号范围,其中,所述编号范围包括:起始编号和终止编号;第三确定单元,用于根据确定的所述编号范围,生成所述第二媒体数据对应的所述url列表。

可选地,所述第二生成模块,包括:第二生成单元,用于在所述url列表为字节范围类型url列表的情况下,生成包含第一变量标识和第二变量标识的第一url模板,其中,所述第一变量标识用于指示字节范围的起始字节值,所述第二变量标识用于指示字节范围的结束字节值;获取所述url列表中字节范围的所述第一变量标识对应的序列至所述第二变量标识对应的序列,生成所述参数值数组队列;或者,

第三生成单元,用于在所述url列表为普通类型url列表且所述url列表中对应片段名包含起始呈现时间信息的情况下,生成包含时间变量标识的第二url模板,其中,所述时间变量标识用于指示第一媒体片段的起始呈现时间;获取所述url列表中所述时间变量标识对应的数值列表,生成所述参数值数组队列;或者,

第四生成单元,用于在所述url列表为普通类型url列表且所述url列表中对应片段名不包含起始呈现时间信息的情况下,生成包含数值变量标识的第三url模板,其中,所述数值变量标识用于指示第二媒体片段的数值编号;获取所述url列表中所述数值变量标识对应的数值列表,生成所述参数值数组队列。

可选地,所述第三生成模块,包括:第五生成单元,用于根据所述参数值数组队列,生成差值序列;第六生成单元,用于根据所述差值序列,进行游程编码,生成所述压缩序列参数。

可选地,所述推送指令中包含的压缩序列参数的压缩格式为:定义为:"s,d1:r1,d2:r2,…,di:ri,…,dn:rn",其中,s指示起始参数值,d指示两个连续参数值间的差值,r指示相同差值的持续次数,n为正整数。

可选地,其中,i为正整数且1≤i≤n。

根据本发明的另一个发明,还提供了一种媒体数据传输装置,包括:第二接收模块,用于接收客户端发送的第一媒体数据获取请求,所述请求中携带基于url模板的推送指令,所述推送指令用于请求推送第二媒体数据;推送模块,返回所述第一媒体数据至所述客户端,并根据所述推送指令推送所述第二媒体数据至所述客户端。

可选地,所述推送指令中包含的压缩序列参数的压缩格式为:定义为:"s,d1:r1,d2:r2,…,di:ri,…,dn:rn",其中,s指示起始参数值,d指示两个连续参数值间的差值,r指示相同差值的持续次数,n为正整数。

可选地,其中,i为正整数且1≤i≤n。

可选地,所述装置还包括:第四生成模块,用于根据所述推送指令中包含的压缩序列参数,生成推送参数值数组队列;第五生成模块,用于根据所述推送参数值数组队列,生成所述url列表。

可选地,所述第四生成模块包括:第一获取单元,用于解析所述推送指令,获取所述压缩序列参数;第七生成单元,用于解压缩所述压缩序列参数,获取参数值数组,生成推送参数值数组队列。

可选地,所述第五生成模块包括:第二获取单元,用于获取所述推送参数值数组队列中的元素;第八生成单元,用于利用所述元素替换所述推送指令中的url模板变量,生成所述url列表,其中,所述url模板变量包括以下至少之一:数目变量、时间变量、字节范围变量。

通过本发明,采用发送第一媒体数据获取请求至服务器,所述请求中携带基于url模板的推送指令,所述推送指令用于请求所述服务器推送第二媒体数据;接收所述服务器返回的第一媒体数据以及所述服务器根据所述推送指令推送的所述第二媒体数据的方法,在发送给服务器中的第一媒体数据获取请求中携带了基于url模板的推送指令,从而服务器可以根据该推送指令返回此次推送指令期望推送的第二媒体数据,服务器根据该请求中的url模板就可以获知第二媒体数据,解决了相关技术媒体片段推送策略中需要媒体服务器端解析mpd或其他信息而导致的服务器负载负重的问题,进而达到了减轻媒体服务器的负重的效果,实现了媒体服务器对dash透明。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的媒体数据传输方法的流程图一;

图2是根据本发明实施例的媒体数据传输方法的流程图二;

图3是根据本发明实施例的媒体数据传输装置的结构框图一;

图4是根据本发明实施例的媒体数据传输装置的优选结构框图一;

图5是根据本发明实施例的媒体数据传输装置中第一生成模块42的结构框图;

图6是根据本发明实施例的媒体数据传输装置中第二生成模块44的结构框图;

图7是根据本发明实施例的媒体数据传输装置中第三生成模块46的结构框图;

图8是根据本发明实施例的媒体数据传输装置的结构框图二;

图9是根据本发明实施例的媒体数据传输装置的优选结构框图二;

图10是根据本发明实施例的媒体数据传输装置中第四生成模块92的结构框图;

图11是根据本发明实施例的媒体数据传输装置中第五生成模块94的结构框图;

图12是根据本发明实施例的fdh-dash系统架构122的示意图;

图13是根据本发明实施例的fdh媒体客户端的实施例的示意图;

图14是根据本发明实施例的fdh媒体服务器的示意图;

图15是根据本发明实施例的媒体流传输方法的流程图一;

图16是根据本发明实施例的媒体流传输方法的流程图二;

图17a是根据本发明实施例的mpd400的示意图;

图17b是根据本发明实施例的片段请求消息410的示意图;

图17c是根据本发明实施例的片段请求消息420的示意图;

图17d是根据本发明实施例的片段请求消息430的示意图;

图17e是根据本发明实施例的媒体客户端124与媒体服务器126的交互流程图一;

图18a是根据本发明实施例的mpd500的示意图;

图18b是根据本发明实施例的片段请求消息510的示意图;

图18c是根据本发明实施例的片段请求消息520的示意图;

图18d是根据本发明实施例的媒体客户端124与媒体服务器126的交互流程图二;

图19a是根据本发明实施例的mpd600的示意图;

图19b是根据本发明实施例的片段请求消息610的示意图;

图19c是根据本发明实施例的片段请求消息620的示意图;

图19d是根据本发明实施例的片段请求消息630的示意图;

图19e是根据本发明实施例的片段请求消息640的示意图;

图19f是根据本发明实施例的媒体客户端124与媒体服务器126的交互流程三;

图20是根据本发明实施例的计算机系统或网络设备700的实施例的示意图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

在本实施例中提供了一种媒体数据传输方法,图1是根据本发明实施例的媒体数据传输方法的流程图一,如图1所示,该流程包括如下步骤:

步骤s102,发送第一媒体数据获取请求至服务器,该请求中携带基于url模板的推送指令,该推送指令用于请求服务器推送第二媒体数据;

步骤s104,接收服务器返回的第一媒体数据以及服务器根据推送指令推送的第二媒体数据。

上述步骤的执行主体可以为媒体客户端,步骤s102中的第二媒体数据可以为媒体客户端此次推送指令中期望媒体服务器推送的媒体片段序列。

通过上述步骤,在发送给服务器中的第一媒体数据获取请求中携带了基于url模板的推送指令,从而服务器可以根据该推送指令返回此次推送指令期望推送的第二媒体数据,服务器根据该请求中的url模板就可以获知第二媒体数据,解决了相关技术媒体片段推送策略中需要媒体服务器端解析mpd或其他信息而导致的服务器负载负重的问题,进而达到了减轻媒体服务器的负重的效果,实现了媒体服务器对dash透明,有效地支持了dash最初的轻服务器设计理念。

其中,推送指令中可以包含推送参数,该推送参数用于参数化推送指令中的url模板, 生成用于请求服务器推送第二媒体数据对应的url列表。

其中,推送指令中包含的推送参数可以包括以下至少之一:范围参数、时间参数、压缩序列参数、单值参数、列表值参数。

在一个可选的实施例中,步骤s102发送第一媒体数据获取请求至服务器之前,可以包括:生成用于请求服务器推送第二媒体数据对应的url列表;根据该第二媒体数据对应的url列表,生成推送参数值数组队列;根据推送参数值数组队列,生成推送指令中包含的压缩序列参数。

在一个可选的实施例中,生成用于请求服务器推送第二媒体数据对应的url列表,可以包括:根据所述第一媒体数据url以及时间参数,确定第二媒体数据对应的呈现时间段,其中,该呈现时间段包括:起始时间点和最终时间点;根据确定的该呈现时间段,生成第二媒体数据对应的url列表。

例如,根据t-push参数中的时间参数和第一媒体数据url对应的起始媒体片段,确定起始媒体片段所在的表示representation或时段period的呈现时间线;根据呈现时间线,确定本次请求媒体服务器推送的第二媒体数据对应的url列表。在该可选实施例中,mpd包含媒体片段的呈现时间信息和url信息,其中,呈现时间信息可以通过片段模板/片段列表/片段时间线给出,url信息可通过片段模板和/或片段列表给出。客户端通过对mpd信息的解析,可以在推送指令中指示媒体客户端期望请求的第二媒体数据,避免了服务器进行解析、处理。

在一个可选的实施例中,生成用于请求服务器推送第二媒体数据对应的url列表,也可以包括:根据第一媒体数据url以及范围参数,确定第二媒体数据对应的编号范围,其中,该编号范围包括:起始编号和终止编号;根据确定的编号范围,生成第二媒体数据对应的url列表。

又例如,根据第一媒体数据url,确定该第一媒体数据url对应片段所在的representation(表示),根据第一媒体数据url确定起始片段,根据范围参数确定结束片段;根据所述起始片段和结束片段,确定媒体片段序列;根据所述媒体片段序列,并生成url列表。

在一个可选的实施例中,根据第二媒体数据对应的url列表,生成推送参数值数组队列,可以包括:在url列表为字节范围类型url列表的情况下,生成包含第一变量标识和第二变量标识的第一url模板,其中,第一变量标识用于指示字节范围的起始字节值,第二变量标识用于指示字节范围的结束字节值;获取url列表中字节范围的第一变量标识对应的序列至第二变量标识对应的序列,生成参数值数组队列;或者,在url列表为普通类型url列表且url列表对应片段名包含起始呈现时间信息的情况下,生成包含时间变量标识的第二url模板,其中,时间变量标识用于指示第一媒体片段的起始呈现时间;获取url列表中时间变量标识对应的数值列表,生成参数值数组队列;或者,在url列表为普通类型url列表且url列表对应片段名不包含起始呈现时间信息的情况下,生成包含数值变量标识的第三url模板,其中,数值变量标识用于指示第二媒体片段的数值编号;获取url列表中数值变 量标识对应的数值列表,生成参数值数组队列。在该可选实施例中,参数url列表根据mpd的媒体片段的url信息构造,可以为普通类型或字节范围类型url,其中,字节范围可通过查询字段给出;参数值列表为数值序列,根据mpd的类型,代表不同的物理意义,如起始呈现时间、片段编号、字节范围的起始/结束字节等;用户端设备在推送指令指定的片段序列与t-push参数(segment_uri&t)所指定的片段序列一致。

在一个可选的实施例中,根据推送参数值数组队列,生成推送指令中包含的压缩序列参数,可以包括:根据所述参数值数组队列,生成差值序列;根据所述差值序列,进行游程编码,生成所述压缩序列参数。在该可选实施例中,将参数值列表进行压缩,进一步减轻了媒体服务器负重。

其中,推送指令中包含的压缩序列参数的压缩格式可以为:定义为:"s,d1:r1,d2:r2,…,di:ri,…,dn:rn",其中,s指示起始参数值,d指示两个连续参数值间的差值,r指示相同差值的持续次数,n为正整数。

在一个可选的实施例中,其中,i为正整数且1≤i≤n。

其中,推送指令url模板中可以包含数目变量,用于基于片段编号指定第二媒体数据的url,其中,数目变量通过以下参数至少之一所提供的片段编号序列进行参数化:范围参数、压缩序列参数、单值参数、列表值参数。

其中,推送指令url模板中可以包含时间变量,用于基于片段呈现时间指定第二媒体数据的url,其中,时间变量通过以下参数至少之一所提供的片段呈现时间序列进行参数化:时间参数、压缩序列参数、单值参数、列表值参数。

其中,推送指令url模板中可以包含字节范围变量,用于基于片段字节范围指定第二媒体数据的url,其中,字节范围变量通过以下参数至少之一所提供的首字节位置序列和尾字节位置序列进行参数化:压缩序列参数、单值参数、列表值参数。

在上述实施例及各个可选实施例中,推送指令包括一个或多个url模板和基于压缩序列参数、或者单值参数、或者列表值参数的推送参数值列表。

在本实施例中也提供了一种媒体数据传输方法,图2是根据本发明实施例的媒体数据传输方法的流程图二,如图2所示,该流程包括如下步骤:

步骤s202,接收客户端发送的第一媒体数据获取请求,请求中携带基于url模板的推送指令,推送指令用于请求推送第二媒体数据;

步骤s204,返回第一媒体数据至客户端,并根据推送指令推送第二媒体数据至客户端。

上述步骤s202中生成推送指令的执行主体可以为媒体客户端,步骤s204中的第二媒体数据可以为媒体客户端此次推送指令中期望媒体服务器推送的片段序列。

通过上述步骤,发送给服务器中的第一媒体数据获取请求中携带了基于url模板的推送指令,从而服务器可以根据该推送指令返回此次推送指令期望推送的第二媒体数据,服务器 根据该请求中的url模板就可以获知第二媒体数据,并将该第二媒体数据发送给客户端,解决了相关技术中媒体片段推送策略中需要媒体服务器端解析mpd或其他信息而导致的服务器负载负重的问题,进而达到了减轻媒体服务器的负重的效果,实现了媒体服务器对dash透明,有效地支持了dash最初的轻服务器设计理念。

在一个可选的实施例中,推送指令中可以包含推送参数,该推送参数用于参数化推送指令中url模板,生成第二媒体数据对应的url列表,步骤s204中根据推送指令推送第二媒体数据至客户端,可以包括:根据url列表,推送第二媒体数据至客户端。

在一个可选的实施例中,推送指令中包含的推送参数可以包括以下至少之一:范围参数、时间参数、压缩序列参数、单值参数、列表值参数。

其中,推送指令中包含的压缩序列参数的压缩格式可以为:定义为:"s,d1:r1,d2:r2,…,di:ri,…,dn:rn",其中,s指示起始参数值,d指示两个连续参数值间的差值,r指示相同差值的持续次数,n为正整数。

在一个可选的实施例中,其中,i为正整数且1≤i≤n。

在一个可选实施例中,在步骤s204之前,该方法还可以包括:根据推送指令中包含的压缩序列参数,生成推送参数值数组队列;根据推送参数值数组队列,生成第二媒体数据对应的url列表。

在一个可选的实施例中,根据推送指令中包含的压缩序列参数,生成推送参数值数组队列,可以包括:解析推送指令,获取压缩序列参数;解压缩压缩序列参数,获取参数值数组,生成推送参数值数组队列

例如,分割压缩序列参数,获得压缩序列参数;解压缩该压缩序列参数队列,生成推送参数值数组队列。

其中,根据推送参数值数组队列,生成url列表,可以包括:获取推送参数值数组队列中的元素;利用元素替换推送指令中的url模板变量,生成url列表,其中,url模板变量包括以下至少之一:数目变量、时间变量、字节范围变量。

在该可选实施例中,媒体服务器仅需通过分割、去头、去尾、替换等操作对推送指令解析,就可以生成url列表,以获得片段请求消息携带请求的第二媒体数据。

其中,推送指令url模板中可以包含数目变量,用于基于片段编号指定第二媒体数据的url,其中,url模板数目变量通过以下参数至少之一所提供的片段编号序列进行参数化:范围参数、压缩序列参数、单值参数、列表值参数。

其中,推送指令url模板中也可以包含时间变量,用于基于片段呈现时间指定第二媒体数据的url,其中,url模板时间变量通过以下参数至少之一所提供的片段时间序列进行参数化:时间参数、压缩序列参数、单值参数、列表值参数。

其中,推送指令url模板中也可以包含字节范围变量,用于基于片段字节范围指定第二 媒体数据的url,其中,url模板字节范围变量通过以下参数至少之一所提供的首字节位置序列和尾字节位置序列进行参数化:压缩序列参数、单值参数、列表值参数。

在上述各个实施例中,推送指令可以包括一个或多个url模板和基于压缩序列参数、或者单值参数、或者列表值参数的推送参数值列表。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

在本实施例中还提供了一种媒体数据传输装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图3是根据本发明实施例的媒体数据传输装置的结构框图一,如图3所示,该装置包括发送模块32和第一接收模块34,下面对该装置进行说明。

发送模块32,用于发送第一媒体数据获取请求至服务器,该请求中携带基于url模板的推送指令,该推送指令用于请求服务器推送第二媒体数据;第一接收模块34,用于接收服务器返回的第一媒体数据以及服务器根据推送指令推送的第二媒体数据。

其中,推送指令中可以包含推送参数,该推送参数用于参数化推送指令中的url模板,生成用于请求服务器推送第二媒体数据对应的url列表。

其中,推送指令中可以包含压缩序列参数,该压缩序列参数用于参数化推送指令中url模板,生成用于请求服务器推送第二媒体数据对应的url列表。

其中,推送指令url模板中可以包含数目变量,用于基于片段编号指定第二媒体数据的url,其中,数目变量通过以下参数至少之一所提供的片段编号序列进行参数化:范围参数、压缩序列参数、单值参数、列表值参数。

其中,推送指令url模板中可以包含时间变量,用于基于片段呈现时间指定第二媒体数据的url,其中,时间变量通过以下参数至少之一所提供的片段时间序列进行参数化:时间参数、压缩序列参数、单值参数、列表值参数。

其中,推送指令url模板中可以包含字节范围变量,用于基于片段字节范围指定第二媒体数据的url,其中,字节范围变量通过以下参数至少之一所提供的首字节位置序列和尾字节位置序列进行参数化:压缩序列参数、单值参数、列表值参数。

图4是根据本发明实施例的媒体数据传输装置的优选结构框图一,如图4所示,该装置 除了包括图4所有的模块外,还包括第一生成模块42、第二生成模块44和第三生成模块46,下面对该装置进行说明。

第一生成模块42,连接至发送模块32用于在发送第一媒体数据获取请求至服务器之前,生成用于请求服务器推送第二媒体数据对应的url列表;第二生成模块44,连接至第一生成模块42,用于根据第二媒体数据对应的url列表,生成参数值数组队列;第三生成模块46,连接至第二生成模块44,用于根据参数值数组队列,生成推送指令中包含的压缩序列参数。

图5是根据本发明实施例的媒体数据传输装置中第一生成模块42的结构框图,如图5所示,该第一生成模块42包括第一确定单元52和第一生成单元54,下面对该第一生成模块42进行说明。

第一确定单元52,用于根据第一媒体数据url以及时间参数,确定第二媒体数据对应的呈现时间段,其中,该呈现时间段包括:起始时间点和最终时间点;第一生成单元54,连接至第一确定单元52,用于根据确定的呈现时间段,生成第二媒体数据对应的url列表。

其中,第一确定单元52,可以包括:第一确定子单元,用于根据segment_uri参数、t参数,确定第二媒体数据对应的呈现时间段。或者,

在一个可选的实施例中,第一生成模块42包括:第二确定单元和第三确定单元,下面对该第一生成模块42进行说明。

第二确定单元,用于根据第一媒体数据url以及范围参数,确定第二媒体数据对应的编号范围,其中,该编号范围包括:起始编号和终止编号;第三确定单元,连接至第二确定单元,用于根据确定的编号范围,生成第二媒体数据对应的url列表。

例如,第一生成模块42可以包括第二确定子单元,用于根据segment_uri参数、k参数,确定第二媒体数据对应的呈现时间段。

图6是根据本发明实施例的媒体数据传输装置中第二生成模块44的结构框图,如图6所示,该第二生成模块44包括第二生成单元62、第三生成单元64或第四生成单元66,下面对该第一生成模块44进行说明。

第二生成单元62,用于在url列表为字节范围类型url列表的情况下,生成包含第一变量标识和第二变量标识的第一url模板,其中,第一变量标识用于指示字节范围的起始字节值,第二变量标识用于指示字节范围的结束字节值;获取url列表中字节范围的第一变量标识对应的序列至第二变量标识对应的序列,生成参数值数组队列;或者,

第三生成单元64,用于在url列表为普通类型url列表且url列表对应片段名包含起始呈现时间信息的情况下,生成包含时间变量标识的第二url模板,其中,时间变量标识用于指示第一媒体片段的起始呈现时间;获取url列表中时间变量标识对应的数值列表,生成参数值数组队列;或者,

第四生成单元66,用于在url列表为普通类型url列表且url列表对应片段名不包含 起始呈现时间信息的情况下,生成包含数值变量标识的第三url模板,其中,数值变量标识用于指示第二媒体片段的数值编号;获取url列表中数值变量标识对应的数值列表,生成参数值数组队列。

图7是根据本发明实施例的媒体数据传输装置中第三生成模块46的结构框图,如图7所示,该第三生成模块46包括第五生成单元72、编码单元74和第六生成单元76,下面对该第二生成模块46进行说明。

第五生成单元72,用于根据参数值数组队列,生成差值序列;第六生成单元74,连接至第五生成单元72,用于根据该差值序列,进行游程编码,生成压缩序列参数。

其中,推送指令中包含的压缩序列参数的压缩格式可以为:定义为:"s,d1:r1,d2:r2,…,di:ri,…,dn:rn",其中,s指示起始参数值,d指示两个连续参数值间的差值,r指示相同差值的持续次数,n为正整数。

在一个可选的实施例中,其中,i为正整数且1≤i≤n。

图8是根据本发明实施例的媒体数据传输装置的结构框图二,如图8所示,该装置包括第二接收模块82和推送模块84,下面对该装置进行说明。

第二接收模块82,用于接收客户端发送的第一媒体数据获取请求,该请求中携带基于url模板的推送指令,推送指令用于请求推送第二媒体数据;推送模块84,连接至第二接收模块82,返回第一媒体数据至客户端,并根据推送指令推送第二媒体数据至客户端。

其中,推送指令中包含的压缩序列参数的压缩格式可以为:定义为:"s,d1:r1,d2:r2,…,di:ri,…,dn:rn",其中,s指示起始参数值,d指示两个连续参数值间的差值,r指示相同差值的持续次数,n为正整数。

在一个可选的实施例中,其中,i为正整数且1≤i≤n。

图9是根据本发明实施例的媒体数据传输装置的优选结构框图二,如图9所示,该装置除了包括图8所示的所有模块外,还包括:第四生成模块92和第五生成模块94,下面对该装置进行说明。

第四生成模块92,连接至第二接收模块82,用于根据推送指令中包含的压缩序列参数,生成推送参数值数组队列;第五生成模块94,连接至第四生成模块92,用于根据推送参数值数组队列,生成url列表。

图10是根据本发明实施例的媒体数据传输装置中第四生成模块92的结构框图,如图10所示,该第四生成模块92包括第一获取单元102和第七生成单元104,下面对该第四生成模块92进行说明。

第一获取单元102,用于解析推送指令,获取压缩序列参数;第七生成单元104,连接至第一获取单元102,用于解压缩压缩序列参数,获取参数值数组,生成推送参数值数组队列。

图11是根据本发明实施例的媒体数据传输装置中第五生成模块94的结构框图,如图11所示,该第五生成模块94包括第二获取单元112和第八生成单元114,下面对该第五生成模块94进行说明。

第二获取单元112,用于获取推送参数值数组队列中的元素;第八生成单元114,连接至第二获取单元112,用于利用元素替换推送指令中的url模板变量,生成url列表,其中,url模板变量包括以下至少之一:数目变量、时间变量、字节范围变量。

其中,推送指令url模板中包含数目变量,用于基于片段编号指定第二媒体数据的url,其中,url模板数目变量通过以下参数至少之一所提供的片段编号序列进行参数化:范围参数、压缩序列参数、单值参数、列表值参数。

其中,推送指令url模板中包含时间变量,用于基于片段呈现时间指定第二媒体数据的url,其中,url模板时间变量通过以下参数至少之一所提供的片段时间序列进行参数化:时间参数、压缩序列参数、单值参数、列表值参数。

其中,推送指令url模板中包含字节范围变量,用于基于片段字节范围指定第二媒体数据的url,其中,url模板字节范围变量通过以下参数至少之一所提供的首字节位置序列和尾字节位置序列进行参数化:压缩序列参数、单值参数、列表值参数。

以上各个媒体数据传输装置中,push-template类型推送指令包括一个或多个待参数化变量的url模板和压缩后的参数值列表。

下面结合具体实施环境,对本发明实施例的媒体数据请求、传输方法及装置进行说明。

在一实施例中,提供了一种由用户设备实现的媒体流传输方法(即上述实施例中的媒体数据传输方法),该方法可以包括:根据t-push参数(t&segment_uri)和mpd信息生成push-template类型推送指令,其中,该push-template类型推送指令由包含一个或多个待参数化变量的url模板和压缩后的参数值列表组成,url模板对应于ietfrfc6570uritemplatelevel1,变量包含于“{}”,表达式类型为字符串扩展模式;向媒体服务器发送片段请求消息,其中,该片段请求消息由上述segment_uri参数和生成的push-template类型推送指令组成;从媒体服务器接收响应片段请求消息的一个或多个片段。

在另一实施例中,提供了一种装置(即上述实施例中的媒体数据传输装置),该装置可以包括:接收器,用于接收t-push参数(t&segment_uri)和媒体呈现描述(mpd);处理器(相当于第一生成模块42、第二生成模块44和第三生成模块46),与接收器连接,用于根据参数(t&segment_uri)构造push-template类型推送指令,生成由上述segment_uri参数和生成的push-template类型推送指令组成的片段请求消息;发送器(相当于发送模块32),与处理器连接,用于向媒体服务器发送片段请求消息。

在又一实施例中,还提供了一种由媒体服务器实现的媒体流传输方法(上述实施例中的媒体片段获取的方法),可以包括:从媒体客户端接收片段请求消息,其中,该片段请求消息包含segment_uri参数和push-template类型推送指令;向媒体客户端发送片段响应消息,其中, 该片段响应消息包含segment_uri参数对应的片段;根据push-template类型推送指令,确定客户端期望推送的片段序列;向客户端推送上述片段序列。

在又一实施例中,提供了一种装置(即上述实施例中的媒体数据传输装置),该装置可以包括:接收器(相当于第二接收模块82),用于从媒体客户端接收片段请求消息,其中,该片段请求消息包含segment_uri参数和push-template类型推送指令;处理器(相当于第四生成模块92和第五生成模块94),与接收器相连,用于确定segment_uri参数对应的片段,解析push-template类型推送指令,获取客户端期望推送的片段序列;发送器(相当于推送模块84),与处理器相连,用于向媒体客户端发送片段响应消息和推送客户端期望的片段序列,其中,片段请求消息包含segment_uri参数对应的片段。

上述由用户设备实现的媒体流传输方法实施例、由媒体服务器实现的媒体流传输方法实施例及相应装置,提出了一种新的推送协商机制,媒体服务器只需根据片段请求消息中的push-template信息即可获得片段期望推送的片段序列,完成推送会话,实现服务器对dash透明,支持dash轻服务器的设计理念。

在本发明实施例中,媒体客户端根据t-push参数(t&segment_uri)和mpd信息生成push-template类型推送指令,其中,push-template类型推送指令由包含一个或多个待参数化变量的url模板和压缩后的参数值列表组成,媒体服务器只需根据push-template类型推送指令即可确定媒体客户端所期望推送的片段序列,而无需解析mpd或诉诸其他信息,从而解决了t-push推送策略中服务器负载重的问题,实现了媒体服务器对dash透明,有效支持了dash最初的轻服务器设计理念。其中,压缩后的参数值列表运用了差值压缩机制,有效的减少了片段请求消息的负载。

图12是根据本发明实施例的fdh-dash系统架构122的示意图。fdh-dash系统122包括一个或多个媒体客户端124,媒体客户端124包括用户设备或上述包括接收器、发送器、处理器的装置,如机顶盒(set-top-box,简称为stb)、台式电脑、笔记本电脑、平板电脑、智能手机或任意其它类型的移动或个人设备,媒体客户端124支持全双工超文本传输协议。fdh-dash系统架构122包括一个或多个媒体服务器126,该媒体服务器126可以是任何合适类型的网络服务器,如内容分发网络(contentdeliverynetwork,简称为cdn)的一个节点、代理服务器、web服务器、或这些项的组合等等,媒体服务器126支持全双工超文本传输协议。媒体客户端122可以通过任意接入网128与媒体服务器126建立fdh连接,接入网128包括互联网、无线局域网(wirelesslocalareanetworks,简称为wlan)、wifi网络或热点、蜂窝网、线缆架构、光纤骨干网或接入网、或这些项的组合等等。媒体客户端124与媒体服务器126通过fdh连接,交换请求/响应消息,发送/接收媒体内容。

图13是根据本发明实施例的fdh媒体客户端的实施例的示意图。如图13所示,媒体客户端124包括fdh-dash控制引擎132、生成引擎134、fdh访问引擎136和媒体引擎138。

fdh-dash控制引擎132,可以解析mpd,获得关于媒体内容的信息,如内容时序、内容或媒体可用性、媒体类型、分辨率、最小及最大带宽、媒体内容在网络中的位置及其它内 容特征,如媒体呈现时间线、媒体片段列表等;可以根据用户设备的处理能力、显示能力和客户端缓存变化趋势、可用带宽的变化趋势,决定所需下载/推送的片段序列,例如,在可用带宽大时可选择高质量的片段序列;可以生成推送指令(push_directive)和片段url(segment_uri)等。

生成引擎134,根据t-push参数(t&segment_uri)和媒体呈现时间线、媒体片段列表等信息生成push-template类型推送指令,其中,push-template类型推送指令由包含一个或多个待参数化变量的url模板和压缩后的参数值列表组成,url模板对应于ietfrfc6570uritemplatelevel1,变量包含于“{}”,表达式类型为字符串扩展模式。

fdh访问引擎136,发起并建立fdh连接通道;生成并发送mpd请求消息,接收并解析mpd响应消息,获取mpd数据;根据参数segment_uri和push-template类型推送指令生成并发生片段请求消息,接收并解析片段响应消息,获取参数segment_uri对应的媒体片段;接收被推送的片段序列。

媒体引擎138,负载解码媒体片段,呈现媒体流。

图14是根据本发明实施例的fdh媒体服务器的示意图。如图14所示,媒体服务器126包括fdh服务模块142、解析引擎144、媒体内容146和媒体准备单元148。

媒体内容146可以由媒体准备单元148生成或准备,媒体准备单元148可以位于媒体服务器126上或在其他地方(如,位于内容提供者中)。媒体内容146可以是任何可行的形式,如视频、音频、文本及其组合。媒体内容146可以包括媒体呈现描述(mpd)141和多个片段资源,mpd141为描述媒体内容的xml文档,包含媒体片段资源的描述信息,如媒体片段的起始呈现时间、码率、帧率、空间分辨率、统一资源定位符、以及所在的时段、适配集、表述等等信息。mpd141还可以包括片段资源的url信息和呈现时间信息(如,起始呈现时间、呈现时长等)等,其中,url信息可通过片段模板(segmenttemplate)或片段列表(segmentlist)提供,片段资源的呈现时间信息可通过片段时间线(segmenttimeline)或多片段基信息(multiplesegmentbaseinformation)等给出。片段的起始呈现时间是该媒体片段的第一帧数据对应的呈现时间,相对于该媒体片段所在时段(period)的时段起始时间(periodstarttime)。mpd141可以与媒体内容146的片段资源位于相同的网络位置,也可以位于其他位置。媒体内容146可以包括一个或多个时段,且每个时段可以包括一个或多个适配集,且每个适配集可以包括一个或多个表述。例如,在第一时段143内,适配集145可以包含多个表述,表述147可以包含多个片段。

fdh服务模块142,接收fdh连接请求,建立fdh连接通道;接收并解析mpd请求消息;生成并发送mpd响应消息,该mpd响应消息包含mpd数据;接收并解析片段请求消息,获取segment_uri和push-template类型推送指令;生成并发送片段响应消息,该片段响应消息包含segment_uri对应的片段数据;推送push-template类型推送指令中所指定的片段序列。

解析引擎144,负责解析push-template类型推送指令,获取片段序列。

在一实施例中,片段请求消息可以包括一个segment_uri和一个push-template类型推送指令,其中,该push-template类型推送指令由包含一个或多个待参数化变量的url模板和压缩后的参数值列表组成,url模板对应于ietfrfc6570uritemplatelevel1,变量包含于“{}”,表达式类型为字符串扩展模式。参数值列表为数值序列,根据mpd的类型,代表不同的物理意义。

本发明实施例提出了一种新的参数值列表压缩格式,定义为:"s,d1:r1,d2:r2,…,di:ri,…,dn:rn",且其中,s指定起始参数值;d指定两个连续参数值间的差值;r指定相同差值的持续次数;k为参数个数,亦即为媒体客户端期待推送的片段序列的片段个数,n为正整数。

图15是根据本发明实施例的媒体流传输方法的流程图一,如图15所示,该方法是可以由用户端设备(如,媒体客户端124)实现,该流程包括以下步骤:

步骤1502,根据t-push参数(t&segment_uri)和mpd信息生成push-template类型推送指令,其中,push-template类型推送指令携带一个或多个待参数化变量的url模板和压缩后的参数值列表,url模板对应于ietfrfc6570uritemplatelevel1,变量包含于“{}”,表达式类型为字符串扩展模式;

步骤1504,向媒体服务器126发送片段请求消息,其中,片段请求消息携带上述segment_uri参数和生成的push-template类型推送指令;

步骤1506,从媒体服务器126接收片段响应消息的一个或多个片段。

在步骤1502中,mpd包含媒体片段的呈现时间信息和url信息,其中,呈现时间信息可以通过片段模板/片段列表/片段时间线给出,url信息可通过片段模板和/或片段列表给出;参数segment_uri根据mpd的媒体片段的url信息构造,可以为普通类型或字节范围类型url,其中,字节范围可通过查询字段给出;参数值列表为数值序列,根据mpd的类型,代表不同的物理意义,如起始呈现时间、片段编号、字节范围的起始/结束字节等;用户端设备在push-template类型推送指令指定的片段序列与t-push参数(segment_uri&t)所指定的片段序列一致。步骤1502具体包括step1-step8:

step1,根据时间参数t和segment_uri对应的起始媒体片段,确定起始媒体片段所在的表示(representation)或时段(period)的呈现时间线,获得本次推送会话所需推送的媒体片段序列对应的url列表;

step2,若segment_uri为字节范围类型,则生成包含两个变量标识分别为{first}(即上述第一变量标识)和{last}(即上述第二变量标识)的url模板—字符串类型变量urltemplate,变量{first}和{last}分别对应字节范围的起始字节数值和结束字节数值。依次从url列表中字节范围的首字节数值序列和尾字节数值序列,加入整形变量类型的参数值数组的队列parmeterarrque,并跳转至step5;

step3,若segment_uri为普通的url类型,且segment_uri对应片段名包含起始呈现时间 信息,则生成包含一个变量标识为{time}(即上述时间变量标识)的url模板—字符串类型变量urltemplate,变量{time}对应于媒体片段名中的数值,物理意义为该媒体片段的起始呈现时间。依次从url列表中提取{time}对应的数值列表,并加入整型类型的参数值数组队列parmeterarrque;

step4,若segment_uri为普通的url类型,则生成包含一个变量标识为{number}(即上述数值变量标识)的url模板—字符串类型变量urltemplate,变量{number}对应于媒体片段名中的数值,物理意义为该媒体片段的数值编号。依次从url列表中提取{number}对应的数值列表,并加入整型类型的参数值数组队列parmeterarrque;

step5,若parmeterarrque为空,则跳转至step6;否则,弹出parmeterarrque队首,得到参数值列表parmeterarray,并生成上述定义的参数值列表格式的字符串类型值,推入参数队列的字符串类型数组变量strparmeterarr,并跳转至step5;

step6,生成字符串类型的推送模板,并赋值为:

pushtemplate="\""+urltemplate+"\""

,并跳转至step6;

step7,遍历列表strparmeterarr的每个元素(i-th):

pushtemplate+=";{"+strparmeterarr[i]+"}"

step8,返回pushtemplate。

其中,在步骤1504中,片段请求消息具体可通过且不限于以下形式发送:http/2请求报文的扩展首部的键值对形式、websocket的帧中的json键值对形式等。

其中,在步骤1506中,参数segment_uri对应的片段作为片段响应信息的一部分被媒体服务器发送,push-template类型推送指令中指定的片段序列被媒体服务器依次推送。

基于以上步骤,媒体客户端通过生成push-template类型推送指令,即可明确指定期待媒体服务器推送的片段序列,控制fdh-dash流媒体会话;通过使用参数列表压缩格式,减少了片段请求消息的大小,降低了请求负载。图15所示的流程为示例性实施例,可以对图15所示的流程中的步骤进行替代性修改,且可以根据需要合并和/或附加步骤。

图16是根据本发明实施例的媒体流传输方法的流程图二,如图16所示,该方法是可以由网络服务器(如,媒体服务器126)实现,该流程包括如下步骤:

步骤1602,从媒体客户端124接收片段请求消息,其中,该片段请求消息包含segment_uri参数和push-template类型推送指令;

步骤1604,向媒体客户端124发送片段响应消息,其中,该片段响应消息包含segment_uri参数对应的片段;

步骤1606,根据push-template类型推送指令,确定客户端124期望推送的片段序列;

步骤1608,向客户端124推送上述片段序列。

其中,步骤1606具体包括step1-step7:

step1,利用";"分割字符串pushtemplate,将获得的子字符串依次推入字符串队列strqueue;弹出队列strqueue队首,并去除首尾的"\""后赋值予urltemplate;

step2,依次弹出队列strqueue队首,并去除首尾的"{"和"}"后加入列表strargslist;

step3,初始化整型变量i=0,整型变量l=strarglist.size(),以及整型参数队列列表argsquelist为空;

step4,若i<l,令队列argsque为空,解析字符串strargslist[i],获得整型参数值序列并依次推入队列argsque,并将队列argsque推入整型参数值队列列表argsquelist,并跳转至step5;否则,跳转至step6;

step5,令整型变量i=i+1,并跳转至step4;

step6,若列表argsquelist为空,或列表argsquelist中任一队列元素为空,则跳转至step7;否则,遍历队列列表argsquelist的每个元素(i-th),依次弹出第i-th队列的队首元素并替代urltemplate中的第i-th待参数化标识,获得参数化后的segmenturl,将之推入队列segmenturllist,并跳转至step6;

step7,返回segmenturllist。

基于以上步骤,媒体服务器只需根据push-template类型推送指令,即可获取媒体客户端所需推送的片段序列,无需解析mpd,减轻了服务器负载,实现了fdh-dash对媒体服务器的透明,支持了dash轻服务器的设计理念。图16所示的流程为示例性实施例,可以根据需要进行修改或添加各个步骤。

下面是一些示例性实施例,用以说明在此介绍的媒体流传输方法和参数值列表压缩格式,及其在一些用例中的潜在应用。

图17a是根据本发明实施例的mpd400的示意图。如图17a所示,时段401为mpd400的第一个时段,包括了适配集402。适配集402包括了表述405和表述406,并通过片段模板403给出表述405和表述406的片段列表信息,通过片段时间线404给出片段列表的呈现时间信息。由片段模板403可知,时段401的呈现时长为600s,片段时长均为2s。

图17b是根据本发明实施例的片段请求消息410的示意图。如图17b所示,片段请求消息410包括了segment_uri411和push-time类型t-push推送指令412。segment_uri411指定了表述405中第11个片段,起始呈现时间为20s。t-push推送指令412指定参数t为40s,因此推送指令412表征媒体客户端期待推送的片段序列为表述405中起始呈现时间在(20s,40s]之间的片段序列,对应于表述405中的第12个到第21个片段,亦即片段1980.mp4v 起始的10个连续片段序列。

图17c是根据本发明实施例的片段请求消息420的示意图。如图17c所示,片段请求消息420包括了segment_uri421和push-template类型t-push推送指令422。segment_uri421指定了表述405中第11个片段,起始呈现时间为20s。与片段请求消息410的t-push推送指令412一致,t-push推送指令422指定参数t为40s,因此推送指令422表征媒体客户端期待推送的片段序列为表述405中起始呈现时间在(20s,40s]之间的片段序列,对应于表述405中的第12个到第21个片段,亦即片段1980.mp4v起始的10个连续片段序列。

图17d是根据本发明实施例的片段请求消息430的示意图。如图17d所示,片段请求消息430包括了segment_uri431和push-template类型推送指令432。segment_uri431与片段请求消息410的segment_uri411一致,指定了表述405中第11个片段,起始呈现时间为20s。push-template类型推送指令432包括了含有一个{time}变量的url模板,和压缩的参数值列表。push-template类型推送指令432根据片段请求消息410的参数segment_uri和参数t生成,指定了表述405中片段1980.mp4v到片段3600.mp4v等10个连续片段序列,对应于片段请求消息410的t-push推送指令指定的表述405中起始呈现时间在(20s,40s]之间的片段序列,即片段1980.mp4v起始的10个连续片段序列。

图17e是根据本发明实施例的媒体客户端124与媒体服务器126的交互流程图一。如图17e所示,该交互流程包括:

步骤s1702,媒体客户端124通过fdh访问引擎136向媒体服务器126发送mpd请求消息,请求mpd400。

步骤s1704,媒体服务器126接收到mpd请求消息后,通过fdh服务模块142向媒体客户端124发送mpd响应消息,其中,mpd响应消息包含mpd400。

步骤s1706,媒体客户端124的生成引擎134根据t-push参数(segment_uri参数411/421和参数t=40)和mpd信息生成push-template类型推送指令432,t-push参数由fdh-dash控制引擎132生成。

步骤s1708,媒体客户端124通过fdh访问引擎136向媒体服务器126发送片段请求消息,其中,片段请求消息包含segment_uri431和push-template类型推送指令432。

步骤s1710,媒体服务器126通过fdh服务模块142生成并发送片段响应消息,其中,该片段响应消息包含segment_uri431对应的片段。

步骤s1712,媒体服务器通过解析引擎132解析push-template类型推送指令432的推送模板,确定媒体客户端124期望推送的片段序列。

步骤s1714,媒体服务器126通过fdh服务模块142依次推送解析引擎132获得的片段序列。

图18a是根据本发明实施例的mpd500的示意图。如图18a所示,时段501为mpd500 的第一个时段,包括了适配集502。适配集502包括了表述504和表述505,并通过片段模板503给出表述504和表述505的片段列表信息及其呈现时间信息。由片段模板503可知,时段501的呈现时长为600s,片段时长均为4s,即表述504和表述505中分别含有150个媒体片段。

图18b是根据本发明实施例的片段请求消息510的示意图。如图18b所示,片段请求消息510包括了segment_uri511和t-push推送指令512。segment_uri311指定了表述505中第9个片段,起始呈现时间为32s。t-push推送指令512指定参数t为79s,因此推送指令512表征媒体客户端期待推送的片段序列为表述505中起始呈现时间在(32s,79s]之间的片段序列,对应于表述505中的第10个到第20个片段,亦即片段010.ts起始的11个连续片段序列。

图18c是根据本发明实施例的片段请求消息520的示意图。如图18c所示,片段请求消息520包括了segment_uri521和push-template类型推送指令522。segment_uri521与片段请求消息510的segment_uri511一致,指定了表述505中第9个片段,起始呈现时间为32s。push-template类型推送指令522包括了含有一个{number%03d}变量的url模板,和压缩的参数值列表。push-template类型推送指令522根据片段请求消息510的参数segment_uri和参数t生成,指定了表述505中片段010.ts到片段020.ts等11个连续片段序列,对应于片段请求消息510的t-push推送指令指定的表述505中起始呈现时间在(32s,79s]之间的片段序列,即片段010.ts起始的11个连续片段序列。

图18d是根据本发明实施例的媒体客户端124与媒体服务器126的交互流程图二。如图18d所示,该交互流程包括:

步骤s1802,媒体客户端124通过fdh访问引擎136向媒体服务器126发送mpd请求消息,请求mpd500。

步骤s1804,媒体服务器126接收到mpd请求消息后,通过fdh服务模块142向媒体客户端124发送mpd响应消息,该mpd响应消息包含mpd500。

步骤s1806,媒体客户端124的生成引擎134根据t-push参数(segment_uri参数511和参数t=79)和mpd500信息生成push-template类型推送指令522,t-push参数由fdh-dash控制引擎132生成。

步骤s1808,媒体客户端124通过fdh访问引擎136向媒体服务器126发送片段请求消息,其中,该片段请求消息包含segment_uri521和push-template类型推送指令522。

步骤s1810,媒体服务器126通过fdh服务模块142生成并发送片段响应消息,片段响应消息包含segment_uri521对应的片段。

步骤s1812,媒体服务器通过解析引擎132解析push-template类型推送指令522的推送模板,确定媒体客户端124期望推送的片段序列。

步骤s1814,媒体服务器126通过fdh服务模块依次推送解析引擎132获得的片段序列。

图19a是根据本发明实施例的mpd600的示意图。如图19a所示,时段601为mpd600的第一个时段,包括了适配集602。适配集602包括了表述603和表述605。片段列表604描述了表述603的片段列表信息及其呈现时间信息,媒体片段时长均为10s,包括了9个媒体片段和9个索引片段;片段列表606描述了表述605的片段列表信息及其呈现时间信息,媒体片段时长均为10s,包括了9个媒体片段和9个索引片段。

图19b是根据本发明实施例的片段请求消息610的示意图。如图19b所示,片段请求消息610包括了segment_uri611和t-push推送指令612。segment_uri611指定了表述603中第3个片段,起始呈现时间为20s。t-push推送指令612指定参数t为75s,因此推送指令612表征媒体客户端期待推送的片段序列为表述603中起始呈现时间在(20s,75s]之间的媒体片段序列,对应于表述603中的第4个到第8个媒体片段,亦即字节范围为827922-1071870的媒体片段起始的5个连续片段序列。

图19c是根据本发明实施例的片段请求消息620的示意图。如图19c所示,片段请求消息620包括了segment_uri621和push-template类型推送指令622。segment_uri621与片段请求消息610的segment_uri611一致,指定了表述603中第3个片段,起始呈现时间为第20s。push-template类型推送指令622包括了含有两个变量{first}和{last}的url模板,和两个压缩的参数值列表,分别对应变量{first}和{last}。push-template类型推送指令622根据片段请求消息610的参数segment_uri和参数t生成,指定了表述603中字节范围为827922-1071870的媒体片段到字节范围为1797839-2039904的媒体片段等5个连续片段序列,对应于片段请求消息610的t-push推送指令指定的表述603中起始呈现时间在(20s,75s]之间的片段序列,即字节范围为827922-1071870的媒体片段起始的5个连续片段序列。

图19d是根据本发明实施例的片段请求消息630的示意图。如图19d所示,片段请求消息630包括了segment_uri631和t-push推送指令632。segment_uri631是片段请求消息610中segment_uri611的一种等价形式,segment_uri631通过查询字段给出字节范围参数,指定了表述603中第3个片段,起始呈现时间为20s。t-push推送指令632指定参数t为75s,因此推送指令632表征媒体客户端期待推送的片段序列为表述603中起始呈现时间在(20s,75s]之间的媒体片段序列,对应于表述603中的第4个到第8个媒体片段,亦即字节范围为827922-1071870的媒体片段起始的5个连续片段序列。

图19e是根据本发明实施例的片段请求消息640的示意图。如图19e所示,片段请求消息640包括了segment_uri641和push-template类型推送指令642。segment_uri641与片段请求消息630的segment_uri631一致,指定了表述603中第3个片段,起始呈现时间为第20s。push-template类型推送指令642包括了含有两个变量{first}和{last}的url模板,和两个压缩的参数值列表,分别对应变量{first}和{last},变量{first}和{last}处于url模板的查询字段。push-template类型推送指令642根据片段请求消息630的参数segment_uri和参数t生成,指定了表述603中字节范围为827922-1071870的媒体片段到字节范围为1797839-2039904的媒体片段等5个连续片段序列,对应于片段请求消息630的t-push推送指令指定的表述603中起始呈现时间在(20s,75s]之间的片段序列,即字节范围为827922-1071870的媒体片段起始 的5个连续片段序列。

图19f是根据本发明实施例的媒体客户端124与媒体服务器126的交互流程三。如图19f所示,该交互流程包括:

步骤s1902,媒体客户端124通过fdh访问引擎136向媒体服务器126发送mpd请求消息,请求mpd600。

步骤s1904,媒体服务器126接收到mpd请求消息后,通过fdh服务模块142向媒体客户端124发送mpd响应消息,mpd响应消息包含mpd600。

步骤s1906,媒体客户端124的生成引擎134根据t-push参数(segment_uri参数611和参数t=75)和mpd600信息生成push-template类型推送指令622,t-push参数由fdh-dash控制引擎132生成。

步骤s1908,媒体客户端124通过fdh访问引擎136向媒体服务器126发送片段请求消息,其中,该片段请求消息包含segment_uri621和push-template类型推送指令622。

步骤s1910,媒体服务器126通过fdh服务模块142生成并发送片段响应消息,片段响应消息包含segment_uri621对应的片段。

步骤s1912,媒体服务器通过解析引擎132解析push-template类型推送指令622的推送模板,确定媒体客户端124期望推送的片段序列。

步骤s1914,媒体服务器126通过fdh服务模块142依次推送解析引擎132获得的片段序列。

图20是根据本发明实施例的计算机系统或网络设备700的实施例的示意图。网络设备700可以为任意合适的设备予以实现,如,网络服务器、媒体服务器(如,媒体服务器126)或用户端设备(如,媒体客户端124)等等。网络设备700能够接收、处理和发送去向以及来自网络的片段请求消息/片段响应消息/片段等消息。网络设备700可以包括与接收器711连接的一个或多个入口端710,其中,接收器711可用于通过fdh通道从其他网络节点接收mpd和/或片段。网络设备700还可以包括与发送器731连接的一个或多个出口端730,其中,发送器731可以通过fdh通道向其他网络节点发送mpd和/或片段。网络设备700还可以包括处理器720,其中,处理器720与接收器711链接,用于处理片段或者确定向那个网络节点发送片段。

处理器720可以通过硬件、软件及其组合来实现。处理器720可用一个或多个cpu芯片、可编程门阵列、专用集成电路和/或数字信号处理器予以实现。处理720可用于实现在此描述的任意功能模块或单元,例如,fdh-dash控制引擎132、fdh访问引擎136、媒体引擎122、fdh服务模块142、解析引擎132、媒体播放器721或者本领域普通技术人员熟知的其他任何功能组件,或者其任何组合。媒体播放器721可以为在处理器720上运行的应用程序,用于解码播放媒体片段。

网络设备700还可以包括至少一个存储器722。存储器722可用于存储mpd723和片段724。mpd723和片段724可以通过以上的各种形式进行存储和打包。例如,mpd723可以为mpd400、500和600中的任意一个。如图20所示,片段724和mpd723可以作为单独的文件进行存储,也可以将其存储在单个文件中。

在实践中,可能存在网络设备700处理的双向流量,因此,一些端口可既接收也发送报文。在这种情况下,入口端710和出口端730可以是共设在一起的或者可以认识始于收发器连接的相同端口的不同功能。处理器720、存储器722、接收器711和发送器731中的一个或多个也可以用于至少部分实现或支持上文描述的任意方法和实现方式,比如图15、图16所示的方法流程等。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述模块分别位于多个处理器中。

本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的程序代码:

s11,发送第一媒体数据获取请求至服务器,该请求中携带基于url模板的推送指令,该推送指令用于请求服务器推送第二媒体数据;

s12,接收服务器返回的第一媒体数据以及服务器根据推送指令推送的第二媒体数据。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:

s21,接收客户端发送的第一媒体数据获取请求,请求中携带基于url模板的推送指令,推送指令用于请求推送第二媒体数据;

s22,返回第一媒体数据至客户端,并根据推送指令推送第二媒体数据至客户端。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(read-onlymemory,简称为rom)、随机存取存储器(randomaccessmemory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行上述s11-s12。

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行上述s21-s22。

可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算 装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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