首页> 中国专利> 一种在动态HTTP流传输方案中支持时移回看的方法和装置

一种在动态HTTP流传输方案中支持时移回看的方法和装置

摘要

本发明公开了一种在动态HTTP流传输方案中支持时移回看和直播点播无缝切换的方法、装置和系统,采用向媒体服务器发送直播MPD请求消息;接收媒体服务器返回的包含当前时间段的MPD的响应消息,所述MPD中还包含其它时间段的媒体展现信息;确定当前需要请求媒体分片的时刻超出所述MPD所对应的时间范围,根据所述其它时间段的媒体展现信息,确定当前需要请求媒体分片对应的媒体展现信息;根据所述当前需要请求的媒体分片对应的媒体展现信息,获取对应的MPD,并根据所述获取到的对应的MPD,向媒体服务器请求当前需要请求的媒体分片,使得客户端支持更长时间范围的时移和回看,同时可将MPD的大小保持在可接受的范围内。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-10-09

    授权

    授权

  • 2011-08-31

    实质审查的生效 IPC(主分类):H04L29/08 申请日:20100817

    实质审查的生效

  • 2011-07-20

    公开

    公开

说明书

技术领域

本发明涉及通信技术领域,尤其涉及一种在动态HTTP流传输方案中支持时移回看的方法的方法和装置。

背景技术

用户使用终端设备获取多媒体内容并进行播放的方式有多种,典型的有通过HTTP文件下载或者P2P文件下载到本地磁盘后播放、传统的流媒体方式(数据传输的RTP/RTCP和播放控制RTSP)、P2P流媒体方式的在线直播/点播、HTT渐进式下载(HTTP Progressive Download)等等。在HTTP渐进式下载的基础上,又发展了一种增强型的基于HTTP协议的流化媒体传输的方式,称之为HTTP流(HTTP Streaming)传输方案。由于该方案支持动态码率适配,即在播放的过程中可实时根据客户端到服务器之间可用带宽(Bandwidth)的大小,动态地选择与可用带宽相匹配码率的媒体分片,以提供给用户尽可能高质量的播放体验,因此也有把这种方案称作HTTP动态流(HTTP Adaptive Streaming,HAS)或动态HTTP流(Adaptive HTTP Streaming)的。在3GPP SA4R9标准中,HTTP动态流方案又可根据内容准备模式(Content-Preparation Modes)进一步划分为静态模式(Static Mode)和动态模式(Dynamic Mode)两种:静态内容准备(content preparation)模式:将通过HTTP传输的媒体内容作为静态内容,HTTP服务器不需要以任何方式准备内容,相反,内容准备是提前完成的;动态内容服务模式:HTTP流服务器基于客户端的请求动态地为客户端裁剪(tailor)流内容。

在直播的过程中,由于后面时间的媒体分片还没有产生,因此在媒体展现描述(MPD,Media Presentation Description)或playlist(为简单起见,后续只提及MPD,但也同样适用于playlist)中无法包括后面时间段的媒体分片获取信息如URL等。但如果知道这段时间内媒体分片的相关信息如内容编码格式、封装格式、分辨率、码率和语言等等信息,并且能提前为后面一小段时间的媒体分片分配对应的获取URL地址,也是有可能适当提前一些时间给出未来一段时间媒体分片的描述信息。但由于后续可能需要在直播中插播其他来源的内容、以及可能无法得知直播的确切结束时间,因此也无法提供未来太久时间段的媒体展现描述信息。这就带来一个问题:直播媒体展现未来时间段的媒体展现描述信息很可能无法像点播内容那样在客户端接入时一次性全部提供,而是需要随着时间的推移逐步向MPD中添加后续时间段的媒体展现描述信息,这样客户端需要不断去获取更新后的MPD,以便取得后续时间段的媒体展现描述信息,进而才能有相应的URL去获取媒体分片并播放。

MPD的更新可以有两种不同的方式:(a)在MPD中包括从直播开始以来所有时间段(time-line)的媒体展现描述信息,但这种方式带来的一个问题就是随着时间的推移,MPD中包括的时间段越来越长,相应地,MPD包括的描述信息也就越来越多,MPD的大小将逐渐增加,而且客户端每次请求更新的MPD时都需要获取比前一次更大的MPD。因此这种方式较适合那些时长较短的直播媒体展现;(b)采用滑动窗(Sliding window)方式更新:每次在更新的MPD中只包括当前时间点附近的时间段的媒体分片的描述信息,例如典型的可以只包括最近10分钟到1小时节目的媒体展现描述信息,超过这个时间段的媒体展现描述信息将不再被包括在更新后的MPD中。在这种方式下,如果客户端从直播开始时就已接入,那么可以在本地创建一个播放列表,将不同MPD中所包括的时间段依次添加到本地播放列表中,同样能得到一份从直播开始到当前MPD中包括时间段的完整播放列表,这将达到与上述方式(a)等同的效果。对于上述方式(b),如果客户端是在直播开始以后某个时间才接入的话,其获取到的更新MPD中只包括接入时间点附近时间段的媒体展现描述信息,可能并不包括直播开始部分时间段的媒体展现描述信息。那么当客户端想拖动(seek back)到较早时间时(如时移或回看功能),将无法实现。这样,HTTP流服务器在提供MPD时,就需要权衡在MPD中究竟应该包括多长时间段媒体描述信息:MPD中包括的时间段总长将会影响到直播会话中客户端做播放/暂停和Seek操作的行为。时间总长越长,包括的列表将越长,客户端能够暂停且不丢失它在直播列表中的位置的时间就越长,客户端能够Seek的时间范围就越大。但权衡就是包括更长时间段总长的MPD将带来更大网络负担,由于客户端需要经常更新MPD,因此尽管每个MPD文件一般很小,但每次更新累加起来也非常可观。

发明内容

一种在动态HTTP流传输方案中支持时移回看方法,包括,向媒体服务器发送直播媒体展现描述MPD请求消息;接收媒体服务器返回的包含当前时间段的MPD的响应消息,所述MPD中还包含其它时间段的媒体展现信息;确定当前需要请求媒体分片的时刻超出所述MPD所对应的时间范围,根据所述其他时间段的媒体展现信息,确定当前需要请求媒体分片对应的媒体展现信息;根据所述当前需要请求的媒体分片对应的媒体展现信息,获取对应的MPD,并根据所述获取到的MPD,向媒体服务器请求当前需要请求的媒体分片。

一种在动态HTTP流传输方案中支持时移回看的方法,包括,接收客户端发送的直播MPD请求消息;向所述客户端发送包含当前时间段的MPD的响应消息,所述MPD中包含其它时间段的媒体展现信息;接收所述客户端发送超出所述MPD对应时间段的其他时间段MPD请求消息;根据所述媒体展现信息,将所述媒体展现信息对应的MPD发送给客户端,以便于客户端根据所述媒体展现信息对应的MPD获取相应的媒体分片。

一种客户端,包括,发送模块,用于向媒体服务器发送MPD请求消息;接收模块,用于接收媒体服务器返回的包含当前时间段的MPD的响应消息,所述MPD中还包含其它时间段的媒体展现信息;确定模块,用于确定当前需要请求媒体分片的时刻超出所述MPD所对应的时间范围,根据所述其它时间段的媒体展现信息,确定当前需要请求媒体分片对应的媒体展现信息;获取模块,用于根据所述当前需要请求的媒体分片对应的媒体展现信息,获取对应的MPD,并根据所述获取到的MPD,向媒体服务器请求当前需要请求的媒体分片。

一种媒体服务器,包括,所述媒体服务器包括,接收所述客户端发送的MPD信息请求消息;接收模块,用于接收客户端发送的MPD请求消息;发送模块,用于向所述客户端发送包含当前时间段的MPD的响应消息,所述响应消息中包含其它时间段的媒体展现信息;根据所述媒体展现消息,将与所述媒体展现消息对应的MPD发送给客户端,以便于客户端根据所述对应的MPD获取相应的媒体分片。

本发明实施例采用向媒体服务器发送直播MPD请求信息;接收服务器返回的包含当前时间段的MPD的响应消息,所述MPD中还包含其它时间段的媒体展现信息;确定当前需要请求的媒体分片超出所述MPD所对应的时间范围,根据所述其它时间段的MPD信息,确定当前需要请求的媒体分片对应的媒体展现信息;根据所述当前需要请求的媒体分片对应的媒体展现信息,其中包含所需MPD的URL地址,获取对应的MPD,并根据所述获取到的对应的MPD,向媒体服务器请求当前需要请求的媒体分片,使得客户端支持更长时间范围的时移和回看,同时可将MPD的大小保持在可接受的范围内。

附图说明

图1为本发明实施例提供的一种在动态HTTP流传输方案中支持时移回看的方法的流程图;

图2为本发明实施例提供的一种在动态HTTP流传输方案中支持时移回看的方法的流程图;

图3为本发明实施例提供的一种客户端的基本框图;

图4为本发明实施例提供的一种媒体服务器的基本框图;

图5为本发明实施例提供的一种在动态HTTP流传输方案中支持时移回看的方法的具体实现流程图;

图6为本发明实施例提供的一种在动态HTTP流传输方案中超出时移范围时支持时移回看的方法的具体实现流程图;

图7为本发明实施例提供的一种在动态HTTP流传输方案中直播点播无缝切换的方法的具体实现流程图;

图8为本发明实施例提供的一种在动态HTTP流传输方案中直播点播无缝切换的方法的具体实现流程图。

具体实施方式

实施例一:

参阅图1,本发明实施例一提供的一种在动态HTTP流传输方案中支持时移回看或直播点播无缝切换的方法,该方法包括:

A1、向媒体服务器发送直播媒体展现描述MPD请求消息;

客户端请求获取直播MPD,例如根据直播MPD的URL获取地址。由于该MPD经常需更新,此步骤根据需要可重复多次。该客户端,可以设置于移动终端,或者机顶盒,以及其他接收媒体流的用户终端等。

A2、接收媒体服务器返回的包含当前时间段的MPD的响应消息,所述MPD中还包含其它时间段的媒体展现信息;

假定当前时间段为时间区间[a,b],媒体服务器返回当前最新的MPD,客户端处理MPD得到相应的播放列表及获取媒体分片的URL地址,同时MPD中还包括其它时间段的媒体展现信息,这里其它时间段可以细分为两种情况:

(1)客户端完全基于当前获取的最新MPD来创建本地播放列表,那么当前MPD所包括的时间区间[a,b]之外的其他时间段,例如对直播一般为时间点a之前;

(2)客户端创建的本地播放列表除了基于当前获取的最新的MPD,还能基于前面所获取的MPD中包括的时间段。对于一个在直播开始以后才接入的客户端,它最多只能创建从其接收到的第一个MPD到当前最新的MPD所包括的所有时间段范围内的播放列表,假设为时间区间[a’,b](其中a’≤a),那么对于超出区间[a’,b]之外的其它时间段(例如<a’)。又或者,虽然一个直播客户端在直播开始就已经接入,但其维护的本地播放列表有总时长限制(如LocalListDuration),那么其维护的时间区间为[b-LocalListDuration,b],这个区间之外的其他时间都属于其它时间段。

A3、确定当前需要请求的媒体分片的时刻超出所述MPD所对应的时间范围,根据所述其它时间段的媒体展现信息,确定当前需要请求媒体分片对应的媒体展现信息。

客户端首先判断请求媒体分片的时刻是否已超出当前时间范围,例如,客户端维护的播放列表的时间范围是[a,b],若请求的媒体分片开始时间为c(c<a),则超出时间范围;若请求的媒体分片开始时间为d(a≤d≤b),则没有超出时间范围。判断MPD中是否提供了包括请求媒体分片时间的时间段所对应的媒体展现信息,例如对于一个超出时间范围的时间c,若存在一个媒体展现信息覆盖的时间范围[e,f],并满足条件e≤c≤f,则认为存在这样的媒体展现信息。实际应用的实例中进一步可包括,判断MPD中是否存在多个满足包括请求媒体分片时刻的时间段所对应的媒体展现信息,若存在多个,客户端可以根据选择策略从多个MPD获取信息中选择一个。实际应用的实例中,该选择策略可以包括以下情况之一或者组合:(1)如果MPD信息中还包括可访问时间(如availablilityStart,availabilityEnd可选),则当前时间需满足可访问时间的要求;(2)如果媒体展现信息包括的时间段存在重复,则可以选择媒体展现信息中MPD时间段与客户端维护的本地播放列表时间段重合度最小的一个;(3)如果几个MPD与本地播放列表时间段都没有重合或者重合度都一样,则可以随机选择一个,例如满足条件的第一个,或开始时间最接近请求媒体分片时间的,或距离当前时间最远的,等等;(4)其他可能的选择策略。

A4、根据所述当前需要请求的媒体分片所对应的媒体展现信息,获取对应的MPD,并根据所述获取到的MPD,向媒体服务器请求当前需要请求的媒体分片。

客户端从媒体展现信息中获取MPD的URL地址,向服务器请求所述相应时间段的MPD;服务器返回对应的MPD。客户端处理获取到的MPD,得到相应的播放列表及媒体分片的URL地址,并把得到的播放列表添加到(或者替换)本地维护的播放列表中,客户端请求MPD对应的媒体分片,构造媒体分片请求并发送给服务器。进一步可以包括:客户端接收服务器返回的与请求对应的媒体分片;客户端接着该媒体分片依次请求后续的媒体分片,直到遇到用户其他播放控制操作或者播放列表中的媒体分片全部请求并播放完成或者遇到MPD更新。

实施例一采用向媒体服务器发送直播MPD请求信息;接收服务器返回的包含当前时间段的MPD的响应消息,所述MPD中还包含其它时间段的媒体展现信息;确定当前需要请求的媒体分片超出所述MPD所对应的时间范围,根据所述其它时间段的MPD信息,确定当前需要请求的媒体分片对应的媒体展现信息;根据所述当前需要请求的媒体分片对应的媒体展现信息,其中包含所需MPD的URL地址,获取对应的MPD,并根据所述获取到的对应的MPD,向媒体服务器请求当前需要请求的媒体分片。

使得客户端支持更长时间范围的时移和回看,同时可将MPD的大小保持在可接受的范围内。

实施例二:

参阅图2,本发明实施例二提供一种在动态HTTP流传输方案中支持时移回看或直播点播无缝切换的方法,该方法包括:

B1、接收客户端发送的直播MPD请求消息;

由于MPD经常需更新,此步骤根据需要可重复多次。

B2、向所述客户端发送包含当前时间段的MPD的响应消息,所述MPD中包含其它时间段的媒体展现信息;

此步骤已在A2详细描述,这里不在赘述。

B3、接收所述客户端发送的超出时间范围的MPD请求消息;

客户端从媒体展现信息中获取MPD的URL地址,向服务器请求相应时间段的MPD;

B4、根据所述客户端MPD请求消息,将对应的MPD发送给客户端,以便于客户端根据所述对应的MPD获取所需要的媒体分片。

此步骤已在A4详细描述,这里不在赘述。

实施例二采用接收客户端发送的直播MPD请求消息;向所述客户端发送包含当前时间段的MPD的响应消息,所述MPD中还包含其它时间段的媒体展现信息;接收所述客户端发送的超出时间范围的MPD请求消息;根据所述客户端MPD请求消息,将对应的MPD发送给客户端,以便于客户端根据所述对应的MPD获取所需要的媒体分片,使得客户端支持更长时间范围的时移和回看,同时可将MPD的大小保持在可接受的范围内。

实施例三:

参阅图3,本发明实施例三提供一种客户端,该客户端可以设置在用户终端(例如,可以包括移动终端,固定终端机顶盒等)设备中;该客户端包括:

发送模块301,用于向媒体服务器发送直播MPD请求消息;客户端请求获取直播MPD,例如根据直播MPD的URL获取地址。由于MPD经常需更新,此步骤根据需要可重复多次。

接收模块302,用于接收媒体服务器返回的包含当前时间段的MPD的响应消息,所述MPD中还包含其它时间段所对应的媒体展现信息;此步骤已在A2详细描述,这里不在赘述。

确定模块303,用于确定当前需要请求媒体分片的时刻超出所述MPD所对应的时间范围,根据所述其它时间段的媒体展现信息,确定当前需要请求媒体分片对应的媒体展现信息;此步骤已在A3详细描述,这里不在赘述。

获取模块304,用于根据所述当前需要请求的媒体分片对应的媒体展现信息,获取对应的MPD,并根据所述获取到的对应的MPD,向媒体服务器请求当前需要请求的媒体分片。此步骤已在A4详细描述,这里不在赘述。

在实际应用的实例中所述客户端还可以进一步包括:选择模块305用于判断MPD中是否存在多个满足包括请求媒体分片时刻的时间段所对应的媒体展现信息,若存在多个,客户端可以根据选择策略从多个媒体展现信息中选择一个;具体的选择策略可以包括下述之一或其组合:如媒体展现信息中包括可访问时间,则所述当前时刻需满足可访问时间要求;如媒体展现信息对应的时间段存在重复,则可以选择MPD中时间段与客户端维护的本地播放列表时间段重合度最小的一个;如存在几个MPD与本地播放列表时间段都没有重合或者重合度一样,则随机选择一个。

实施例三采用发送模块301向媒体服务器发送直播MPD请求消息;接收模块302接收服务器返回的包含当前时间段的MPD的响应消息;确定模块303确定当前需要请求的媒体分片的时刻超出所述MPD所对应的时间范围,根据所述其它时间段的媒体展现信息,确定当前需要请求媒体分片对应的媒体展现信息;获取模块304根据所述当前需要请求的媒体分片对应的媒体展现信息,获取对应的MPD,并根据所述获取到的对应的MPD,向媒体服务器请求当前需要请求的媒体分片。这使得客户端支持更长时间范围的时移和回看,同时可将MPD的大小保持在可接受的范围内。

实施例四:

参阅图4,本发明实施例二提供一种媒体服务器,该媒体服务器包括:

接收模块401,用于接收客户端发送的直播媒体展现描述MPD请求消息;由于MPD经常需更新,此步骤根据需要可重复多次。所述接收模块还用于接收所述客户端发送的MPD请求消息;当客户端从服务器返回的MPD信息中获取MPD的URL地址并保存,所述接收模块接收相应时间段的MPD请求;

发送模块402,用于向所述客户端发送包含当前时间段的MPD的响应消息,所述MPD中还包含其它时间段的媒体展现信息;此步骤已在A2详细描述,这里不在赘述,所述发送模块402还用于根据客户端发来的MPD请求消息,将所述MPD请求消息对应的MPD发送给客户端,以便于客户端根据所述MPD获取相应的媒体内容,此步骤已在A4详细描述,这里不在赘述。

实施例四采用接收模块401接收客户端发送的直播媒体展现描述信息MPD请求消息;发送模块402向所述客户端发送包含当前时间段的MPD的响应消息,所述响应消息中包含其它时间段的媒体展现信息;接收模块401接收所述客户端发送的MPD媒体展现信息请求消息;发送模块402根据所述MPD请求消息,将所述MPD请求消息对应的MPD发送给客户端,以便于客户端根据所述MPD获取相应的媒体内容,使得客户端支持更长时间范围的时移和回看,同时可将MPD的大小保持在可接受的范围内。

实施例五:

参阅图5,本发明实施例提供一种在动态HTTP流传输方案中更有效支持时移的方法,包括客户端和媒体服务器,具体步骤为:

501、客户端向媒体服务器发送直播MPD请求消息;

客户端请求获取直播MPD,例如根据直播MPD的URL地址构造请求消息;向媒体服务器发送构造后的MPD请求消息。

502、服务器返回当前最新的MPD;

同时在MPD中还包括其它时间段的媒体展现信息,这里其它时间段可以细分为两种情况:

(1)客户端完全基于当前获取的最新MPD来创建本地播放列表,那么当前MPD所包括的时间区间[a,b]之外的其他时间段其它时间段,例如对直播一般为时间点a之前;(2)客户端创建的本地播放列表除了基于当前获取的最新的MPD,还能基于前面所获取的MPD中包括的时间段。对于一个在直播开始以后才接入的客户端,它最多只能创建从其接收到的第一个MPD到当前最新的MPD所包括的所有时间段范围内的播放列表,假设为时间区间[a’,b](其中a’≤a),那么对于超出区间[a’,b]之外的其他时间其它时间段(例如<a’)。又或者,虽然一个直播客户端在直播开始就已经接入,但其维护的本地播放列表有总时长限制(如LocalListDuration),那么其维护的时间区间为[b-LocalListDuration,b],这个区间之外的其他时间都属于其它时间段。

503、客户端向服务器请求媒体分片;

客户端处理MPD得到相应的播放列表及获取媒体分片的URL地址;并根据URL地址向服务器请求媒体分片。

504、服务器向客户端返回与请求对应的媒体分片;

这里501和502,503和504可根据实施情况重复多次。

505、客户端请求时移范围内、但当前MPD不包括的媒体分片,根据其它时间段的媒体展现信息,确定当前需要请求媒体分片对应的媒体展现信息;

如图6所示,当客户端请求直播服务器支持时移范围内、但当前最新MPD中并不包括时间段的其他时间段中媒体分片时,例如,在当前MPD中只包括了最近10分钟的媒体展现描述信息,但客户端却想从距离现在20分钟的地方开始时移观看,而对于只根据当前MPD创建播放列表的客户端,或者虽可根据所有接收到的MPD创建播放列表但刚刚接入直播的客户端,现有技术方案就无法实现。

601:客户端判断请求媒体分片是否包括在当前MPD中(对于本地播放列表不只根据当前更新的MPD创建的情况,可改为判断请求的媒体分片是否包括在本地播放列表中)。例如,客户端维护的播放列表的时间范围是[a,b],若请求的媒体分片开始时间为c(c<a),则超出时间范围;若请求的媒体分片开始时间为d(a≤d≤b),则没有超出时间范围。

602:判断MPD中是否提供时移范围内除当前MPD中包括时间段之外的其他时间段MPD的媒体展现信息。例如对于一个超出当前MPD时间范围的时间c,若存在一个媒体展现信息覆盖的时间范围[e,f],并满足条件e≤c≤f,则认为在MPD中提供了这样的媒体展现信息,继续下面的处理流程,否则认为没有提供满足条件的MPD信息,客户端提示用户无法支持所述请求时间的媒体分片606。

603:判断MPD中是否存在多个满足包括请求媒体分片时刻的时间段对应的媒体展现信息,若存在多个,客户端根据选择策略从多个MPD信息中选择一个604。这可能要区分多种情况:(1)如果MPD信息中还包括可访问时间(如availablilityStart,availabilityEnd可选),则当前时间需满足可访问时间的要求;(2)如果MPD之间存在时间段的重复,则可以选择MPD中时间段与客户端维护的本地播放列表时间段重合度最小的一个;(3)如果几个MPD与本地播放列表时间段都没有重合或者重合度都一样,则可以随机选择一个,例如满足条件的第一个,或开始时间最接近请求媒体分片时间的,或距离当前时间最远的,等等;(4)其他可能的选择策略。

例如,当前最新的MPD中包括距离直播开始50~60分钟共10分钟的媒体展现描述信息,直播服务器时移支持时长为30分钟,则MPD中所包括的附加MPD信息用XML元素<previousMPD>提供,提供距离直播开始时间30~50分钟其他时间段的媒体展现信息的一个示例如下:

<previousMPD>

<MPDInfo>

<interval>

<startTime>PT30M</startTime>

<endTime>PT50M</endTime>

</interval>

<MPDAddress>http://www.movie.com/Experience/exampleLive preMPD URL.mpd</MPDAd

dress>

</MPDInfo>

</previousMPD>

或者先前时间段的每个MPD中只包括10分钟时间段的媒体展现描述信息,则需要包括两个前面MPD的信息,示例如下:

<previousMPD>

<MPDInfo>

<interval>

<startTime>PT30M</startTime>

<endTime>PT40M</endTime>

</interval>

<MPDAddress>http://www.movie.com/Experience/exampleLive preMPD1 URL.mpd</MPDA

ddress>

</MPDInfo>

<MPDInfo>

<interval>

<startTime>PT40M</startTime>

<endTime>PT50M</endTime>

</interval>

<MPDAddress>http://www.movie.com/Experience/exampleLive preMPD2 URL.mpd</MPDA

ddress>

</MPDInfo>

</previousMPD>

605:客户端根据媒体展现信息获取对应MPD的URL地址。

506、客户端根据上述步骤505所得到的MPD的URL地址,向服务器请求相应时间段的MPD;

客户端根据从上述步骤505中得到的MPD的URL地址,并向服务器请求相应时间段的MPD;

507、服务器向客户端返回与请求相应的MPD;

客户端处理接收的MPD,得到相应的播放列表及获取媒体分片的URL地址,并把得到的播放列表添加到本地维护的播放列表中(或替换本地维护的播放列表)。

508、客户端向服务器请求媒体分片;

客户端首先根据步骤505时所需要请求媒体分片的时刻,构造相应媒体分片请求并发送给服务器。

509、服务器向客户端返回对应的媒体分片。

服务器返回与请求对应的媒体分片。

然后客户端可接着该媒体分片依次请求后续的媒体分片,直到遇到用户其他播放控制操作或者本地播放列表中的媒体分片全部请求并播放完成或者遇到MPD更新等,步骤508和509可根据实施重复多次。

实施例五采用向媒体服务器发送直播MPD请求信息;接收服务器返回的包含当前时间段的MPD的响应消息,所述MPD中还包含时移范围内其它时间段的媒体展现信息;确定当前需要请求的媒体分片的时刻超出所述MPD所对应的时间范围,根据所述其它时间段的媒体展现信息,确定当前需要请求的媒体分片对应的媒体展现信息;根据所述当前需要请求的媒体分片对应的媒体展现信息,获取对应的MPD,并根据所述获取到的对应的MPD,向媒体服务器请求当前需要请求的媒体分片。使得直播服务器提供较长时间段的时移支持,但在MPD中只需包括一小部分时间段的媒体展现描述信息,而将包括其他时间段的媒体分片描述信息的MPD获取等信息包括在媒体展现信息中。在客户端需要时,可以通过这些的媒体展现信息去获取对应时间段的MPD。使得既能支持更长时间范围的时移和回看,同时又将MPD的大小保持在可接受的范围内。

上述实施例给出在MPD提供直播时移范围内、当前最新MPD不包括的时间段的其他时间段的媒体展现信息,这样直播服务器提供的MPD即可支持较大时间范围的时移,同时又不必在MPD中包括时移时长内所有时间段的媒体展现描述信息,实现了支持更大时间范围的时移、同时不显著增加MPD大小和客户端处理的网络开销,例如,减小客户端更新处理MPD的网络负担。在该实施例中,可以由直播服务器来提供所需的先前时间段的MPD以及相应的媒体分片,内容准备服务器在更新的MPD中提供这些附加的MPD信息。

实施例七:

对于客户端回看超过服务器时移范围的时间段的媒体内容,直播服务器可能已无法再提供其维护的时移范围之外的媒体内容,需要由点播(VoD,Video on Demand)服务器来提供超出时移范围的媒体分片。另外,由于这时直播尚未完全结束,因此暂时还无法提供相应媒体展现的完整点播服务,在这种情况下,可以将已经播出的部分,按照时长进行划分,提供几个不同的点播节目,并将点播节目的MPD获取信息包括在MPD中,客户端可根据这些点播节目的MPD获取信息从直播无缝切换到点播。

参阅图7,本发明实施例提供一种在动态HTTP流传输方案中直播点播无缝切换的方法,包括客户端,直播服务器和点播服务器,具体步骤为:

701、客户端向直播服务器发送直播MPD请求消息;

客户端请求获取直播MPD,例如根据直播MPD的URL获取地址构造MPD请求消息;

702、直播服务器返回当前最新的MPD;

同时MPD中还包括其它时间段的MPD信息,这里其它时间段可以细分为两种情况:

(1)客户端完全基于当前获取的最新MPD来创建本地播放列表,那么当前MPD所包括的时间区间[a,b]之外的其他时间段其它时间段,例如对直播一般为时间点a之前;(2)客户端创建的本地播放列表除了基于当前获取的最新的MPD,还能基于前面所获取的MPD中包括的时间段。对于一个在直播开始以后才接入的客户端,它最多只能创建从其接收到的第一个MPD到当前最新的MPD所包括的所有时间段范围内的播放列表,假设为时间区间[a’,b](其中a’≤a),那么对于超出区间[a’,b]之外的其他时间其它时间段(例如<a’)。又或者,虽然一个直播客户端在直播开始就已经接入,但其维护的本地播放列表有总时长限制(如LocalListDuration),那么其维护的时间区间为[b-LocalListDuration,b],这个区间之外的其他时间都属于其它时间段。

703、客户端向直播服务器请求媒体分片;

客户端处理直播MPD得到相应的播放列表及获取媒体分片的URL地址;并根据URL地址请求媒体分片。

704、直播服务器向客户端返回媒体分片;

这里701和702,703和704可以根据实施情况重复多次。

705、客户端请求超出直播服务器支持时移时长范围的媒体分片时,根据MPD中提供时移范围之外、包括需要请求媒体分片时刻的其他时间段点播MPD的媒体展现信息,确定当前需要请求媒体分片对应的媒体展现信息;当客户端需回看超过直播时移范围的其他时间段的媒体分片,直播服务器可能已无法再提供其维护的时移范围之外的媒体分片,需要由相应的点播服务器来提供超出直播时移范围的媒体分片。但由于这时直播尚未完全结束,因此暂时还无法提供相应媒体展现的完整点播服务,在这种情况下,可以将已经播出的部分,按照时长进行划分,作为几个不同的点播节目提供,并将所述点播节目的媒体展现信息包括在直播MPD中,客户端可根据这些点播节目的媒体展现信息从直播无缝切换到点播。

客户端判断MPD中是否提供时移范围之外、包括需要请求媒体分片时刻的其他时间段点播MPD的媒体展现信息,如果没有提供满足条件的媒体展现信息,则提示用户无法支持所述请求时间的媒体分片;如有符合条件的媒体展现信息,则判断直播MPD中是否存在多个满足条件的媒体展现信息,若存在多个满足条件的媒体展现信息则客户端根据选择策略从多个媒体展现信息中选择一个,这可能要区分多种情况:(1)如果在媒体展现信息中还包括可访问时间(如availablilityStart,availabilityEnd可选),则当前时间需满足可访问时间要求(例如包括完整节目的点播展现在直播没有结束时就无法提供,因此其可访问时间目前无法满足要求);(2)如果多个媒体展现信息所对应的时间段存在重复,则可以选择媒体展现信息对应时间段与客户端维护的本地播放列表时间段重合度最小的一个;(3)如果几个媒体展现信息所对应的时间段与本地播放列表时间段都没有重合或者重合度一样,则可以随机选择一个,例如满足条件的第一个,或开始时间最接近请求媒体分片时间的,或距离当前时间最远的,等等;(4)其他可能的选择策略;

客户端获取该点播MPD的相应URL地址,利用获取的URL,客户端可以进一步获取到与之相应的点播MPD。

一个实施例中,假如直播服务器提供30分钟时移时长,如果30分钟时移时长之前时间段的内容也有相应的点播提供,则包括的附加媒体展现信息可用XML元素<relatedVoD>提供,在直播进行了90分钟之后,提供距直播开始时间到60分钟时间段的点播媒体展现信息的一个示例如下:

<relatedVoD>

<MPDInfo>

<interval>

<startTime>PT0S</startTime>

<endTime>PT60M</endTime>

</interval>

<MPDAddress>http://www.movie.com/Experience/exampleVoDpreMPD URL.mpd</MPDAdd

ress>

</MPDInfo>

</relatedVoD>

或者在每个点播MPD中只包括30分钟时间段的媒体展现描述信息,则需要包括两个前面时间段的媒体展现信息,示例如下:

<relatedVoD>

<MPDInfo>

<interval>

<startTime>PT0S</startTime>

<endTime>PT30M</endTime>

</interval>

<MPDAddress>http://www.movie.com/Experience/exampleVoD preMPD1 URL.mpd</MPDAd

dress>

</MPDInfo>

<MPDInfo>

<interval>

<startTime>PT30M</startTime>

<endTime>PT60M</endTime>

</interval>

<MPDAddress>http://www.movie.com/Experience/exampleVoD preMPD2 URL.mpd</MPDAd

dress>

</MPDInfo>

</relatedVoD>

假设直播媒体展现的总时长为4小时(其开始时间为″2010-05-01T18:00:00Z″),也可同时提供包括整个直播媒体展现相应的点播媒体展现信息,但需要包括可访问时间,一个示例如下:

<relatedVoD>

<MPDInfo>

<interval>

<startTime>PT0S</startTime>

<endTime>PT60M</endTime>

</interval>

<MPDAddress>http://www.movie.com/Experience/exampleVoDpreMPD URL.mpd</MPDAdd

ress

</MPDInfo>

<MPDInfo availablilityStart=″2010-05-01T22:00:00Z″>

<interval>

<startTime>PT0S</startTime>

<endTime>PT4H</endTime>

</interval>

<MPDAddress>http://www.movie.com/Experience/exampleCompleteVoD MPD URL.mpd</MP

DAddress>

</MPDInfo>

</relatedVoD>

直播服务器和点播服务器可根据需要分开部署,但也可部署在同一台服务器上。

706、客户端向点播服务器请求相应时间段的MPD;

707、点播服务器向客户端返回与请求相应的MPD;

客户端处理接收的点播MPD,得到相应的播放列表及获取媒体分片的URL地址,并把得到的播放列表添加到本地维护的播放列表中(或替换更新本地维护的播放列表)。

708、客户端向点播服务器请求媒体分片;

客户端首先根据步骤705时所需要请求媒体分片的时刻,构造相应媒体分片请求并发送给点播服务器。

709、点播服务器向客户端返回与请求对应的媒体分片。

点播服务器返回与请求对应的媒体分片。

然后客户端可接着该媒体分片依次请求后续的媒体分片,直到遇到用户其他播放控制操作或者播放列表中的媒体分片全部请求并播放完成或者遇到MPD更新等,因此步骤708和709可根据实施情况重复多次。

实施例七采用向直播服务器发送直播MPD请求信息;接收直播服务器返回的包含当前时间段的MPD的响应消息,所述MPD中还包含其它时间段的点播媒体展现信息;确定当前需要请求的媒体分片的时刻超出所述直播MPD所对应的时间范围,根据所述其它时间段的点播媒体展现信息,确定当前需要请求的媒体分片对应的媒体展现信息;根据所述当前需要请求的媒体分片对应的媒体展现信息,获取相应的点播MPD,并根据所述获取到的对应的MPD,向点播服务器请求当前需要请求的媒体分片。使得客户端支持更长时间范围的回看,同时可将MPD的大小保持在可接受的范围内。

另一个实施例八a为,在MPD中既提供直播时移范围内、当前最新MPD不包括的时间段的其他时间段的直播媒体展现信息,也能提供包括时移范围之外、与直播媒体展现相应的前面时间段的点播媒体展现信息(即在MPD中同时包括<previousMPD>元素和<relatedVoD>),客户端可以根据需要请求媒体分片对应的时刻,来选择满足时间段要求的媒体展现信息,获取相应MPD,请求并播放相应的媒体分片。实施例的流程可综合上述实施例六和实施例7,这里不再冗述。

实施例八:

在另外一个实际应用过程中,例如,在直播过程中,用户由于暂停或者时移等操作,等到恢复观看时,已经超出了直播服务器提供业务的截止时间,直播服务器已无法继续提供服务,这时,通过在MPD中包括相关点播媒体展现信息,客户端可以切换到点播服务继续观看。具体请参看下述实施例描述。

参阅图8,本发明实施例提供一种在动态HTTP流传输方案中直播点播无缝切换的方法,包括客户端,直播服务器和点播服务器,具体步骤为:

801、客户端向直播服务器发送直播MPD请求消息;

客户端请求获取直播MPD,例如根据直播MPD的URL地址构造MPD请求消息;

802、直播服务器返回当前最新的MPD;

同时MPD中还包括其它时间段的点播媒体展现信息,这里其它时间段可以细分为两种情况:

(1)客户端完全基于当前获取的最新MPD来创建本地播放列表,那么当前MPD所包括的时间区间[a,b]之外的其他时间段其它时间段,例如对直播一般为时间点a之前;(2)客户端创建的本地播放列表除了基于当前获取的最新的MPD,还能基于前面所获取的MPD中包括的时间段。对于一个在直播开始以后才接入的客户端,它最多只能创建从其接收到的第一个MPD到当前最新的MPD所包括的所有时间段范围内的播放列表,假设为时间区间[a’,b](其中a’≤a),那么对于超出区间[a’,b]之外的其他时间其它时间段(例如≤a’)。又或者,虽然一个直播客户端在直播开始就已经接入,但其维护的本地播放列表有总时长限制(如LocalListDuration),那么其维护的时间区间为[b-LocalListDuration,b],这个区间之外的其他时间都属于其它时间段。

803、客户端向直播服务器请求媒体分片;

客户端处理直播MPD得到相应的播放列表及获取媒体分片的URL地址;根据URL地址请求媒体分片。

804、直播服务器向客户端返回媒体分片;

这里801和802,803和804可以根据实施情况重复多次。

805、客户端暂停或时移后,再次请求媒体分片时超出直播服务的截止时间,根据MPD中提供其他时间段MPD的媒体展现信息,确定当前需要请求媒体分片对应的媒体展现信息;

其详细处理步骤与上述图7中的步骤705非常类似,区别之处为:

(1)客户端的媒体分片请求不再与直播进度直接相关(因为直播已经结束),媒体分片请求将与媒体展现直接相关,即距离该媒体展现开始时间的偏移时间值;(2)如果在MPD中包括了完整媒体展现的点播媒体展现信息,现在已有完整的媒体展现可供使用。

806、客户端向点播服务器请求相应时间段的点播MPD;

807、点播服务器向客户端返回与请求相应的MPD;

客户端处理接收的点播MPD,得到相应的播放列表及获取媒体分片的URL地址,并把得到的播放列表添加到本地维护的播放列表中(或替换更新本地维护的播放列表)。

808、客户端向点播服务器请求媒体分片;

客户端首先根据步骤805时所需要请求媒体分片的时刻,构造相应媒体分片请求并发送给点播服务器。

809、点播服务器向客户端返回与请求对应的媒体分片。

点播服务器返回与请求对应的媒体分片。

然后客户端可接着该媒体分片依次请求后续的媒体分片,直到遇到用户其他播放控制操作或者播放列表中的媒体分片全部请求并播放完成或者遇到MPD更新等。步骤808和809可根据实施情况重复多次。

实施例八采用向直播媒体服务器发送直播MPD请求消息;接收直播服务器返回的包含当前时间段的MPD的响应消息,所述MPD中还包含其它时间段的点播媒体展现信息;确定当前需要请求媒体分片时已超出所述MPD所对应的直播服务截止时间,根据所述其它时间段的点播媒体展现信息,确定当前需要请求的媒体分片对应的媒体展现信息;根据所述当前需要请求的媒体分片对应的媒体展现信息,获取对应的点播MPD,并根据所述获取到的对应的MPD,向媒体服务器请求当前需要请求的媒体分片。使得客户端由于暂停或时移等操作,在超出直播服务器提供服务的截止时间后,能从直播无缝切换到点播,仍可继续提供媒体服务。

通过以上的实施方式的描述,本领域普通技术人员可以理解:实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,包括如上述方法实施例的步骤,所述的存储介质,如:ROM/RAM、磁碟、光盘等。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号