CN117596232A - 流媒体快速启动方法、装置和系统 - Google Patents
流媒体快速启动方法、装置和系统 Download PDFInfo
- Publication number
- CN117596232A CN117596232A CN202310749348.XA CN202310749348A CN117596232A CN 117596232 A CN117596232 A CN 117596232A CN 202310749348 A CN202310749348 A CN 202310749348A CN 117596232 A CN117596232 A CN 117596232A
- Authority
- CN
- China
- Prior art keywords
- media
- push
- client
- mpd
- media server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 121
- 239000012634 fragment Substances 0.000 claims abstract description 309
- 238000012790 confirmation Methods 0.000 claims abstract description 230
- 230000004044 response Effects 0.000 claims description 168
- 230000000977 initiatory effect Effects 0.000 claims description 24
- 238000004891 communication Methods 0.000 claims description 6
- 230000000694 effects Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 19
- 230000006978 adaptation Effects 0.000 description 9
- 238000004458 analytical method Methods 0.000 description 9
- 230000002452 interceptive effect Effects 0.000 description 8
- 230000003044 adaptive effect Effects 0.000 description 7
- 230000003993 interaction Effects 0.000 description 7
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 206010028980 Neoplasm Diseases 0.000 description 4
- 201000011510 cancer Diseases 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 201000004569 Blindness Diseases 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000011177 media preparation Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 239000000872 buffer Substances 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/25—Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
- H04N21/262—Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
- H04N21/65—Transmission of management data between client and server
- H04N21/654—Transmission by server directed to the client
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
- H04N21/65—Transmission of management data between client and server
- H04N21/658—Transmission by the client directed to the server
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/83—Generation or processing of protective or descriptive data associated with content; Content structuring
- H04N21/84—Generation or processing of descriptive data, e.g. content descriptors
Abstract
本发明提供了一种流媒体快速启动方法、装置和系统。其中,该方法包括:客户端向媒体服务器发送快速启动类型推送指令,其中,快速启动类型推送指令用于指示媒体服务器推送初始化片段序列和/或媒体片段序列;客户端接收媒体服务器返回的快速启动类型推送确认指令;客户端根据快速启动类型推送确认指令获取媒体服务器将要推送的初始化片段和/或媒体片段序列的信息。通过本发明,解决了媒体客户端与媒体服务器端之间没有达到很好的协商同步的问题,进而达到了媒体客户端可以判断自己期望的资源是否在推送列表,以便尽早做出下一步决策,实现更好的快速启动的效果。
Description
本申请是对申请号为:201610355474.7,申请日为:2016年05月25日,发明名称为《流媒体快速启动方法、装置和系统》的原申请的分案申请。
技术领域
本发明涉及流媒体领域,具体而言,涉及一种流媒体快速启动方法、装置和系统。
背景技术
随着网络的发展和HTTP流媒体技术的普及,越来越多的媒体内容提供者采用HTTP动态自适应流媒体系统为用户提供高质量的流媒体服务,媒体内容可为音频、视频、文本及其组合等。HTTP动态自适应流媒体(DASH)系统不仅可以支持多种编码、解码技术及标准,还可以支持不同的媒体格式和媒体播放器,同时还可以提供多种视角、码率、帧率、空间分辨率及其组合等的流媒体资源。
在HTTP动态自适应流媒体(DASH)系统中,媒体内容可包括媒体呈现描述文件(MPD-Media Presentation Description)和媒体片段(Segments)资源。媒体呈现描述文件是描述媒体内容的可扩展标记语言(XML-Extensible Markup Language)文档,其中包含媒体片段资源的描述信息,比如媒体片段的呈现时间、码率、帧率、空间分辨率、统一资源定位符、以及所在的时段、适配集、表述等信息。媒体内容可以分为多个层级,包括时段(Period)、适配集(AdaptationSet)、表述(Representation)以及片段(Segment)。
在HTTP动态自适应流媒体系统中,客户端通过向服务器端请求媒体呈现描述文件来开启一个流媒体会话(Streaming Session)。当收到媒体呈现描述文件之后,客户端会分析媒体呈现描述文件文件,选择一个适合客户端环境的适配集,然后在该适配集中选择一个适合客户端带宽、解码和展示的表述。最后,客户端会在选定的表述中向服务器请求适合客户端环境的初始化片段,并通过MPD文件的对应描述信息来依次请求初始化片段对应的片段序列,然后展示媒体资源。需要注意的是,客户端会在真正开始展示前请求并缓存一定数量的媒体数据。而每个资源文件的请求/响应(Requests/Responses)和缓存的填充等都会为流媒体会话引入启动延迟(Startup Delay)。一方面,这给用户带来了不好的观看体验,比如在一个直播中,存在很大的直播延迟,影响观看体验。另一方面,给媒体内容提供者带来了流失客户的风险,比如客户在还没有观看媒体内容提供者提供的资源时,就离开了媒体内容提供者提供的服务。所述启动延迟(Startup Delay)指的是从发送媒体呈现描述文件请求到展示第一个资源画面,比如第一个视频帧,之间的时间消耗值,它与网络回环(Round-trip)、缓存大小和媒体资源片段的大小等因素有关。
全双工HTTP动态自适应流媒体(FDH-DASH)通过利用FDH服务器推送(ServerPush)技术,可以在客户端请求媒体呈现描述文件的同时,用来推送初始化片段和/或起始媒体片段。相比于传统的依赖于解析媒体呈现描述文件的方式,采用FDH服务器推送策略将允许客户端通过减少回环(Round-trip)时间,来尽早的展示媒体资源。所述片段请求/响应消息可通过WebSocket或HTTP/2等全双工HTTP协议发送。基于这种思想很多公司提出了自己的快速启动(Fast Start)方案。
一种快速启动(Fast Start)策略是通过客户端向服务器发送带有快速启动指令(fast-start directive)的媒体呈现描述文件的请求(request)消息,告诉服务器客户端希望在获取媒体呈现描述文件的同时,获取一些或者全部可用的初始化片段(Initialization Segments)。所述fast-start directive不带参数,仅由快速启动信息(fast-start)组成。服务器收到上述消息后,首先发送包含不带参数的快速启动指令的对应媒体呈现描述文件请求(request)的响应消息(response),以此来告诉客户端服务器接收快速启动的请求,并且会推送一些或者全部可用的初始化片段给客户端。然后,服务器给客户端发送一些或者全部可用的初始化片段。
另一种快速启动(Fast Start)策略通过客户端向服务器发送带有快速启动指令(push fast-start directive)的媒体呈现描述文件的请求消息,告诉服务器客户端希望在获取媒体呈现描述文件的同时,获取一些或者全部可用的初始化片段(InitializationSegments),或者一些或者全部可用的初始化片段和指定类型(Video或Audio)、指定数量L(亦可不指定)的媒体片段,或者一些或者全部可用的初始化片段、指定数量M(亦可不指定)的Video媒体片段和指定数量N(亦可不指定)的Audio媒体片段等,在指定的同时还可指定语言(Language),比如’lang=ja’。所述push-fast-start directive由快速启动信息(fast-start)和推送参数组成。所述推送参数有多种,可以为video=M、audio=N、init-only或者他们相互组合(video、audio数目亦可不指定)。服务器收到上述消息后,首先发送包含快速启动指令的对应媒体呈现描述文件请求(request)的响应消息(response),以此来告诉客户端服务器接收快速启动的请求,并且会推送一些或者全部可用的初始化片段和快速启动指令指定数量中,服务器可以推送的媒体片段给客户端。然后,服务器给客户端发送初始化片段和快速启动指令指定数量中服务器可以推送的片段序列。
在DASH P6标准(Information Technology–Dynamic adaptive streaming overHTTP(DASH)–Part 6:DASH with Server Push and WebSockets)CD中,采用的快速启动(Fast Start)策略是通过客户端向服务器发送带有快速启动指令(push-fast-startdirective)的媒体呈现描述文件的请求(request)消息,告诉服务器客户端希望在获取媒体呈现描述文件的同时,获取一些或者全部可用的初始化片段(InitializationSegments)。所述push-fast-start directive不带参数,仅由快速启动信息(push-fast-start)组成。服务器收到上述消息后,首先发送包含不带参数的快速启动指令的对应媒体呈现描述文件请求(request)的响应消息(response),以此来告诉客户端服务器接收快速启动的请求,并且会推送一些或者全部可用的初始化片段给客户端。然后,服务器给客户端发送一些或者全部可用的初始化片段。该CD中的定义类似于以上所述的第一种方案,区别仅在指令的命名。
上述的第一种、第二种与第三种快速启动(Fast Start)策略,客户端不知道服务器会确切的推送多少个初始化片段,也不知道何时会结束推送,这造成了客户端和服务器之间,时间资源的浪费,与快速启动策略的设计理念相悖。而上述的第二种快速启动策略,定义了很多消息参数,虽然比较详细,但是有些累赘,比如如果MPD描述文件中根本不存在audio资源,客户端盲目指定会造成请求头部资源的开销,这与DASH的设计理念相悖,而且,该策略为客户端驱动的快速启动策略,服务器根据客户端的偏好,决定所推送的初始化片段,这显然与客户端需要在MPD文件请求时发送推送偏好信息相悖,首先,快速启动时客户端不知道MPD文件具体描述信息,其次即使根据经验,也还是会有命中失败(Miss)的情况发生。如果快速启动策略完全由服务器驱动,正如上述第一种和第三种快速启动策略,不仅客户端不知道服务器推送哪些内容,更不知道何时推送结束,媒体客户端与媒体服务器端之间没有达到很好的协商同步。
发明内容
本发明提供了一种流媒体快速启动方法、装置及系统,以至少解决相关技术中媒体客户端与媒体服务器端之间没有达到很好的协商同步的问题。
根据本发明的一个方面,提供了一种流媒体快速启动方法,包括:客户端向媒体服务器发送快速启动类型推送指令,其中,快速启动类型推送指令用于指示媒体服务器推送初始化片段序列和/或媒体片段序列;客户端接收媒体服务器返回的快速启动类型推送确认指令;客户端根据快速启动类型推送确认指令获取媒体服务器将要推送的初始化片段和/或媒体片段序列的信息。
根据本发明的另一个方面,还提供了一种流媒体快速启动方法,包括:媒体服务器接收客户端发送的快速启动类型推送指令,其中,快速启动类型推送指令用于指示媒体服务器推送初始化片段序列和/或媒体片段序列;媒体服务器根据将要推送的初始化片段和/或媒体片段序列,生成快速启动类型推送确认指令;媒体服务器向客户端发送快速启动类型推送确认指令。
根据本发明的又一方面,提供了一种流媒体快速启动装置,包括:访问引擎模块,用于客户端向媒体服务器发送快速启动类型推送指令,其中,快速启动类型推送指令用于指示媒体服务器推送初始化片段序列和/或媒体片段序列;第一接收模块,用于客户端接收媒体服务器返回的快速启动类型推送确认指令;控制引擎模块,用于客户端根据快速启动类型推送确认指令获取媒体服务器将要推送的初始化片段和/或媒体片段序列的信息。
根据本发明的再一方面,还提供了一种流媒体快速启动装置,包括:服务模块,用于媒体服务器接收客户端发送的用于获取媒体呈现描述文件MPD的请求消息,其中,请求信息至少包括:快速启动推送指令和MPD请求指令;生成引擎模块,媒体服务器根据请求消息生成响应信息,其中,响应消息包括:确定客户端需要快速启动的推送确认指令、响应MPD请求指令得到的MPD数据;解析引擎模块,用于在媒体服务器生成预测的片段消息之后,媒体服务器将预测的片段消息和响应信息推送至客户端,使得客户端根据预测的片段消息和MPD数据,获取客户端需要的媒体内容,其中,预测的片段消息为媒体服务器主动推送的与推送确认指令对应的片段消息。
根据本发明的第五个方面,还提供了一种流媒体快速启动系统,包括:客户端,生成快速启动推动指令,并向媒体服务器发送用于获取媒体呈现描述文件MPD的请求消息至媒体服务器,在获取到预测的片段消息之后,根据预测的片段消息和MPD数据,获取需要的媒体内容,其中,请求信息至少包括:快速启动推送指令和MPD请求指令,预测的片段消息为媒体服务器主动推送的与推送确认指令对应的片段消息。媒体服务器,与客户端通信,用于接收客户端发送的用于获取媒体呈现描述文件MPD的请求消息,并根据请求消息生成响应信息,在生成预测的片段消息之后,将预测的片段消息和响应信息推送至客户端。
通过本发明,采用客户端通过生成所述fast-start类型推送指令,即可告诉媒体服务器,客户端期待媒体服务器推送片段序列,以快速启动;通过使用从所述媒体服务器接收服务器推送的K个片段的片段消息,减少了客户端盲目等待的时间,降低了启动延迟,解决了媒体客户端与媒体服务器端之间没有达到很好的协商同步的问题,进而达到了媒体客户端可以判断自己期望的资源是否在推送列表,以便尽早做出下一步决策,实现更好的快速启动的效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种流媒体快速启动方法的流程图;
图2是FDH-DASH系统架构100的一个实施例的示意图;
图3示出了一个FDH媒体客户端的实施例的示意图;
图4示出了一个FDH媒体服务器的实施例的示意图;
图5A-D示出了推送参数为NUMBER媒体呈现MPD与其请求响应,以及媒体客户端与媒体服务器是实施例交互流程示意图;
图6是由用户端设备实现的推送参数为NUMBER实施例的流程图;
图7A-D示出了推送参数为NUMBER媒体呈现MPD与其请求响应,以及媒体客户端与媒体服务器是实施例交互流程示意图;
图8是根据本发明实施例的一种流媒体快速启动方法的流程图;
图9A-D示出了推送参数为URL_LIST方法媒体呈现MPD与其请求响应,以及媒体客户端与媒体服务器是实施例交互流程示意图;
图10A-D示出了推送参数为URL_TEMPLATE方法媒体呈现MPD与其请求响应,以及媒体客户端与媒体服务器是实施例交互流程示意图;
图11是根据本发明实施例的一种流媒体快速启动方法的流程图;
图12是根据本发明实施例的一种流媒体快速启动方法的流程图;
图13是计算机系统或网络设备1200的实施例的示意图;
图14是根据本发明实施例的一种流媒体快速启动方法的流程图;
图15是根据本申请实施例的一种可选的流媒体快速启动方法;
图16是根据本发明实施例的一种流媒体快速启动方法的流程图;
图17是根据本发明实施例的一种流媒体快速启动装置的示意图;
图18是根据本发明实施例的另一种流媒体快速启动装置的示意图;
图19是根据本发明实施例的另一种流媒体快速启动系统的示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
还需要说明的是,该发明可用于DASH网络,特别是FDH-DASH网络,且不限于上述领域。
下面对于实施例中出现的专业术语进行解释:
FDH(Full Duplex HTTP-compatible protocols)是指与HTTP 1.1标准兼容,且支持全双工通信的协议,比如WebSocket和HTTP/2等协议的全双工超文本协议。
DASH(Dynamic Adaptive Streaming over HTTP)是基于HTTP的媒体内容流传输的通信标准。FDH-DASH(DASH over Full Duplex HTTP compatible protocols)即基于全双工超文本协议的DASH技术标准。
在本实施例中提供了一种流媒体快速启动方法,图1是根据本发明实施例的一种流媒体快速启动的流程图,如图1所示,该流程包括如下步骤:
步骤S102,客户端向媒体服务器发送快速启动类型推送指令,其中,所述快速启动类型推送指令用于指示所述媒体服务器推送初始化片段序列和/或媒体片段序列。
步骤S104,所述客户端接收所述媒体服务器返回的快速启动类型推送确认指令。
步骤S106,所述客户端根据所述快速启动类型推送确认指令获取所述媒体服务器将要推送的初始化片段和/或媒体片段序列的信息。
在一种可选的实施例中,客户端生成快速启动类型推送指令push-fast-startdirective,向媒体服务器发送所述快速启动类型推送指令,其中,所述快速启动类型推送指令用于通知所述媒体服务器推送初始化片段序列和/或媒体片段序列,所述客户端获取快速启动类型推送确认指令push-fast-start acknowledge,所述客户端根据所述快速启动类型推送确认指令获取所述服务器将要推送的初始化片段和媒体片段序列的信息。
在一种可选的实施例中,上述流媒体快速启动方法开可以包括如下步骤:
客户端生成快速启动推动指令。
客户端发送用于获取媒体呈现描述文件MPD的请求消息至媒体服务器,其中,请求信息至少包括:快速启动推送指令和MPD请求指令。
在上述步骤中,请求消息可以为MPD片段请求消息,客户端生成快速启动推送指令push-fast-start directive,向媒体服务器发送媒体呈现描述文件(MPD)的请求消息,其中,所述媒体呈现描述文件的请求由上述快速启动推送指令push-fast-start directive和请求内容组成。
客户端接收媒体服务器根据请求消息返回的响应消息,其中,响应消息包括:确定客户端需要快速启动的推送确认指令、响应MPD请求指令得到的MPD数据。
步骤S108,在客户端获取到预测的片段消息之后,根据预测的片段消息和MPD数据,获取客户端需要的媒体内容,其中,预测的片段消息为媒体服务器主动推送的与推送确认指令对应的片段消息。
在上述步骤中,客户端从所述媒体服务器接收响应所述片段消息的响应,以及媒体服务器主动推送的初始化片段和/或片段序列,其中,所述快速启动推送指令push-fast-start directive由快速启动消息和一系列参数组成。流媒体客户端通过解析接收到的响应信息快速启动推送指令push-fast-start directive确认指令中的参数,并对参数列表进行解析,根据下一步所需内容是否在媒体服务器推送片段列表,来快速决定下一步媒体客户端要做的具体操作,如果媒体服务器推送命中失败(Miss),亦即所需内容不再推送列表中,可以立即发送对应所需消息的请求,也可以取消(Cancel)媒体服务器的推送,否则直接获取所需内容。
通过本发明,采用客户端通过生成所述push-fast-start directive,即可告诉媒体服务器,客户端期待媒体服务器推送片段序列,以快速启动;通过使用从所述媒体服务器接收服务器推送的K个片段的片段消息,减少了客户端盲目等待的时间,降低了启动延迟,解决了媒体客户端与媒体服务器端之间没有达到很好的协商同步的问题,进而达到了媒体客户端可以判断自己期望的资源是否在推送列表,以便尽早做出下一步决策,实现更好的快速启动的效果。
通过以上步骤,媒体服务器只需根据片段请求消息中的快速启动(fast-start)信息,通过媒体服务器向媒体客户端发送推送确认指令,并主动推送由服务器驱动决策的一系列预测片段给媒体客户端,媒体客户端在收到媒体呈现描述文件的响应消息之后,会解析媒体响应消息的头部信息,通过对该消息中的推送确认指令的解析,获取媒体服务器推送数目K和要推送的K个片段的内容信息,比如URL等信息。通过这些信息,媒体客户端可以判断自己期望的资源是否在推送列表,以便尽早做出下一步决策,实现更好的快速启动,支持快速启动(Fast Start)低延迟的设计理念。
在本发明介绍的实施例中,媒体客户端根据是否需要快速启动和MPD信息生成push-fast-start directive,其中的push-fast-start directive可以不包含任何参数,也可以包含一些表示客户端偏好的参数,比如加入客户端偏好的码率,偏好的媒体片段类型,偏好的媒体片段个数等或这些的组合等,媒体服务器根据收到的MPD文件请求中是否包含push-fast-start directive确定客户端需要快速启动,然后媒体服务器通过本地决策(或者通过结合媒体客户端推送的push-fast-start directive参数,亦即客户端偏好来决策)推送的片段数目,并决策要推送的具体片段。并通过MPD响应消息push-fast-startacknowledge来通知媒体客户端,其中push-fast-start acknowledge由快速启动信息(fast-start)和参数组成,同时在发送MPD文件的同时,推送决策生成的片段序列。媒体客户端在收到push-fast-start acknowledge后,解析获取所请求的MPD文件响应头部信息中是否含有push-fast-start acknowledge,并获取其中的参数,通过查询媒体服务器发送过来的片段序列是否符合媒体客户端的需求,来快速进行下一步决策。命中失败(Miss)时,可以立即发送对应所需消息的请求,也可以取消(Cancel)媒体服务器的推送,立即请求媒体客户端需要的文件,命中时,直接获取所需的文件。
需要明白的一点是,所有快速启动策略均在媒体客户端请求MPD文件时进行,命中失败(Miss)的情形均可能发生。本发明所提快速启动策略,相比于已经提出的与FDH标准CD中的快速启动策略,实现了媒体客户端对于推送文件的透明性,亦即媒体客户端可以通过媒体服务器发送的push-fast-start acknowledge中的参数与媒体服务器发送的片段序列明确媒体服务器是否命中,以及是否该继续等待媒体服务器推送内容的到达,从一定程度上,减少了媒体客户端盲目等待时间,有效的支持快速启动策略设计理念。
图2是FDH-DASH系统架构100的一个实施例的示意图。FDH-DASH系统100包括一个或多个媒体客户端110,所述媒体客户端110包括用户设备或装置,如机顶盒(STB)、台式电脑、笔记本电脑、平板电脑、智能手机、任意其它类型的移动设备、个人设备或这些设备的组合等,所述媒体客户端110支持全双工超文本传输协议(FDH)。FDH-DASH架构100包括一个或多个媒体服务器120,所述媒体服务器可以是任何合适类型的网络服务器,如内容分发网络(CDN)的一个节点、代理服务器、Web服务器、或这些服务器的组合等,所述媒体服务器120支持全双工超文本传输协议(FDH)。所述媒体客户端110可以通过任意接入网130与所述媒体服务器120建立FDH连接,所述接入网130包括互联网、无线局域网(WLAN)、WiFi网络或热点、蜂窝网、线缆架构、光纤骨干网、接入网或这些网络的组合等。所述媒体客户端110与所述媒体服务器120通过FDH连接,它们之间可以交换请求/响应消息,发送/接收媒体内容。
图3示出了一个FDH媒体客户端的实施例的示意图。如图3所示,所述媒体客户端110包括FDH-DASH控制引擎111、生成引擎112、FDH访问引擎113和媒体引擎114。
FDH-DASH控制引擎111,可以解析MPD,获得关于所述媒体内容的信息,如内容时序、内容或媒体可用性、媒体类型、分辨率、最小及最大带宽、媒体内容在网络中的位置及其它内容特征,如媒体呈现时间线、媒体片段列表等;可以根据用户设备的处理能力、显示能力和客户端缓存变化趋势、可用带宽的变化趋势,决定所需下载/推送的片段序列,例如,在可用带宽大时可选择高质量的片段序列;可以根据服务器端发送的push-fast-startacknowledge中的参数和服务器推送的片段信息决定是否命中失败(Miss),如果命中失败,可以直接忽略服务器推送的片段,也可以直接取消(Cancel)服务器推送,启动新的片段请求,否则等待获取所需内容。
生成引擎112,根据客户端是否需要快速启动生成push-fast-start directive,其中,所述push-fast-start directive可以不包含任何参数,也可以包含一些表示客户端偏好的参数,比如加入客户端偏好的码率,偏好的媒体片段类型,偏好的媒体片段个数等或这些的组合等;生成push-template类型推送指令等,所述push-template类型推送指令用于正常片段请求,具体描述可见FDH标准定义。
FDH访问引擎113,发起并建立FDH连接通道;根据客户端是否需要快速启动生成的push-fast-start directive生成并发送MPD请求消息,接收并解析MPD响应消息,获取MPD数据;根据MPD请求的响应消息获取服务器端发送的push-fast-start acknowledge以及该指令中的参数;接收被推送的片段序列。
媒体引擎114,负载解码媒体片段,呈现流媒体。
图4示出了一个FDH媒体服务器的实施例的示意图。如图4所示,所述媒体服务器120包括FDH服务模块121、解析引擎122、媒体内容130和媒体准备单元140。所述媒体内容130可以由媒体准备单元140生成或准备,所述媒体准备单元140可以位于所述媒体服务器上或在其他地方(如,位于内容提供者中)。所述媒体内容130可以是任何可行的形式,如视频、音频、文本及其组合等。所述媒体内容130可以包括媒体呈现描述(MPD)131和多个片段资源,所述MPD 131为描述媒体内容的XML文档,包含媒体片段资源的描述信息,如媒体片段的起始呈现时间、码率、帧率、空间分辨率、统一资源定位符、以及所在的时段、适配集、表述等等信息。所述MPD还可以包括片段资源的URL信息和呈现时间信息(如,起始呈现时间、呈现时长等)等,其中,所述URL信息可通过片段模板(SegmentTemplate)或片段列表(SegmentList)提供,所述片段资源的呈现时间信息可通过片段时间线(SegmentTimeline)或多片段基信息(MultipleSegmentBaseInformation)等给出。所述片段的起始呈现时间是该媒体片段的第一帧数据对应的呈现时间,相对于该媒体片段所在时段(Period)的时段起始时间(PeriodStart time)。所述MPD 131可以与所述媒体内容130的片段资源位于相同的网络位置,也可以位于其他位置。所述媒体内容130可以包括一个或多个时段,且每个时段可以包括一个或多个适配集,且每个适配集可以包括一个或多个表述。例如,在第一时段132内,适配集133可以包含多个表述,表述134可以包含多个时段。
FDH服务模块121,接收FDH连接请求,建立FDH连接通道;接收并解析MPD请求消息,获取媒体客户端是否需要快速启动的指令;生成并发送MPD响应消息,所述MPD响应消息包含MPD数据,push-fast-start acknowledge,以及push-fast-start acknowledge中的参数;接收并解析片段请求消息;生成并发送片段响应消息;推送媒体服务器主动预测的片段序列。
解析引擎122,负责解析MPD请求消息,获取媒体客户端是否需要快速启动的指令,当媒体客户端包含push-fast-start directive时,计算媒体服务端要推送的片段多少,获取push-fast-start acknowledge中所指定数目的片段序列;解析客户端的推送指令,获取客户端需要的片段序列。
可选的,根据本申请上述实施例,所述MPD请求消息还包括:至少一个请求参数的情况下,所述媒体服务器将要推送的初始化片段和媒体片段序列的信息包括所述MPD请求消息的片段的属性;所述客户端通过如下任意一种或多种方式从所述媒体服务器获取到所述MPD响应消息:HTTP/2的MPD响应报文方式和WebSocket中DASH子协议的new_mpd消息,其中,HTTP/2的MPD响应报文通过Push-Policy首部携带快速启动类型推送确认指令;WebSocketsDASH子协议的new_mpd消息通过JSON键值对形式携带快速启动类型推送确认指令。
可选的,在本申请上述实施例中,所述客户端接收所述媒体服务器返回的MPD响应消息,以及所述快速启动类型推送确认指令,进一步包括:
通过HTTP/2报文方式接收所述MPD响应消息,其中,所述HTTP/2报文的Accept-Push-Policy首部携带快速启动类型推送确认指令;或者,
通过WebSocket中DASH子协议的new_mpd消息接收所述MPD响应消息,其中,所述new_mpd消息的JSON键值对携带快速启动类型推送确认指令。
可选的,在本申请上述实施例中,所述客户端向所述媒体服务器发送MPD请求消息,以及所述快速启动类型推送指令,进一步包括:
通过HTTP/2报文方式发送所述MPD请求消息,其中,所述HTTP/2报文的Accept-Push-Policy首部携带快速启动类型推送指令;或者,
通过WebSocket中DASH子协议的get_mpd消息发送所述MPD请求消息,其中,所述get_mpd消息的JSON键值对携带快速启动类型推送确认指令。
在一种可选的实施例中,所述客户端通过如下任意一种或多种方式发送所述MPD请求消息:HTTP/2请求报文方式和WebSocket中DASH子协议的get_mpd消息,其中,HTTP/2请求报文通过Accept-Push-Policy首部携带快速启动类型推送指令;WebSockets中DASH子协议的get_mpd消息通过JSON键值对形式携带快速启动类型推送指令。
在另一种可选的实施例中,在所述MPD请求消息还包括:至少一个请求参数的情况下,所述服务器将要推送的初始化片段和媒体片段序列的信息包括所述MPD请求消息的片段的属性;所述客户端通过如下任意一种或多种方式从所述媒体服务器获取到所述服务器将要推送的初始化片段和媒体片段序列的信息:HTTP/2中的推送告知方式和WebSocket中的推送内容告知方式;所述客户端通过如下任意一种或多种方式发送所述MPD请求消息:HTTP/2请求报文的扩展首部的键值对形式和WebSocket的帧中的JSON键值对形式。
在又一种可选的实施例中,所述请求信息还包括:至少一个请求参数的情况下,所述预测的片段消息包括请求参数所请求的片段的属性;所述客户端通过如下任意一种或多种方式从所述媒体服务器获取到所述预测的片段消息:HTTP/2中的推送告知方式和WebSocket中的推送内容告知方式;所述客户端通过如下任意一种或多种方式发送所述请求消息:HTTP/2请求报文的扩展首部的键值对形式和WebSocket的帧中的JSON键值对形式。
可选的,根据本申请上述实施例,所述客户端通过MPD请求消息向所述媒体服务器发送所述快速启动类型推送指令。
在一种可选的实施例中,向媒体服务器发送快速启动类型推送指令包括:通过MPD请求消息向所述媒体服务器发送所述快速启动类型推送指令,其中,所述MPD请求消息用于请求所述媒体服务器发送MPD响应消息,所述MPD响应消息至少应包含MPD数据和快速启动类型推送确认指令。
可选的,根据本申请上述实施例,所述客户端获取所述快速启动类型推送确认指令包括:所述客户端接收所述快速启动类型推送确认指令包括:所述客户端接收所述媒体服务器返回的MPD响应消息,所述MPD响应消息至少包含MPD数据,以及所述快速启动类型推送确认指令。
在一种可选的实施例中,通过获取并解析MPD响应消息获取所述快速启动类型推送确认指令,所述MPD响应消息至少包含MPD数据和快速启动类型推送确认指令。
可选的,根据本申请上述实施例,所述客户端根据所述快速启动类型推送确认指令获取所述服务器将要推送的初始化片段和/或媒体片段序列的信息,包括:
步骤S1061,所述快速启动类型推送确认指令中携带URL模板类型的推送参数。
步骤S1063,所述客户端解析URL模板推送参数,获取所述媒体服务器将要推送的初始化片段序列和/或媒体片段序列的信息。
可选的,根据本申请上述实施例,所述客户端根据所述快速启动类型推送确认指令获取所述服务器将要推送的初始化片段和/或媒体片段序列的信息,包括:
步骤S1065,所述快速启动类型推送确认指令中携带数值类型的推送参数。
步骤S1067,所述客户端解析数值推送参数K,并接收后续的K个推送承诺PUSH_PROMISE帧,获取所述媒体服务器将要推送的初始化片段序列和/或媒体片段序列的信息。
可选的,根据本申请上述实施例,所述客户端根据所述快速启动类型推送确认指令获取所述服务器将要推送的初始化片段和/或媒体片段序列的信息,包括:
步骤S1069,所述快速启动类型推送确认指令中携带URL列表类型的推送参数;
步骤S1071,所述客户端解析URL列表推送参数,获取所述媒体服务器将要推送的初始化片段序列和/或媒体片段序列的信息。
在一种可选的实施例中,所述客户端根据所述快速启动类型推送确认指令获取所述服务器将要推送的初始化片段和媒体片段序列的信息的步骤包括:
在所述快速启动类型推送指令的推送参数PUSH_PARAMS为URL模板URL_TEMPLATE类型的情况下,所述客户端解析URL模板,获取媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息。
在所述快速启动类型推送指令的推送参数PUSH_PARAMS为数值NUMBER类型的情况下,所述客户端通过解析数值K和后续的K个推送承诺PUSH_PROMISE帧,获取媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息。
在所述快速启动类型推送指令的推送参数PUSH_PARAMS为URL列表URL_LIST类型的情况下,所述客户端解析URL列表,获取媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息。
可选的,根据本申请上述实施例,上述方法还包括:
步骤S108,所述客户端解析所述MPD数据,确定需要所述媒体服务器推送的初始化片段和/或媒体片段序列的信息。
步骤S1010,若所述获取的媒体服务器将要推送的初始化片段和/或媒体片段序列的信息等同于所述确定的需要媒体服务器推送的初始化片段和/或媒体片段序列的信息,所述客户端接收所述媒体服务器推送的初始化片段序列和/或媒体片段序列。
可选的,根据本申请上述实施例,上述方法还包括:
步骤S1012,所述客户端解析所述MPD数据,确定需要所述媒体服务器推送的初始化片段和/或媒体片段序列的信息。
步骤所述客户端向所述媒体服务器发送获取所述确定需要所述媒体服务器推送的初始化片段和/或媒体片段序列的请求。
所述客户端向所述媒体服务器发送获取所述确定需要所述媒体服务器推送的初始化片段和/或媒体片段序列的请求。
所述客户端向所述媒体服务器发送获取所述确定需要所述媒体服务器推送的初始化片段和/或媒体片段序列的请求。
S1014,若所述获取的媒体服务器将要推送的初始化片段和/或媒体片段序列的信息不同于所述确定的需要媒体服务器推送的初始化片段和/或媒体片段序列的信息,所述客户端取消所述媒体服务器推送的初始化片段序列和/或媒体片段序列。
可选的,在本申请上述实施例中,上述方法还包括所述客户端向所述媒体服务器发送获取所述确定需要所述媒体服务器推送的初始化片段和/或媒体片段序列的请求。
在一种可选的实施例中,本申请还提供了如图5所示的一种流媒体快速启动方法,该方法包括:
步骤161,根据客户端是否需要快速启动和呈现描述MPD,生成push-fast-startdirective;
步骤162,向媒体服务器发送MPD片段请求消息,其中,所述MPD片段请求下拍戏由上述push-fast-start directive与MPD请求消息指令组成;
步骤163,从所述媒体服务器接收响应MPD片段请求消息的MPD片段,并解析响应消息头部信息中push-fast-start directive中的参数;
步骤164,分析判断所需内容是否命中。
在一种可选的实施例中,在所述快速启动类型推送指令的推送参数PUSH_PARAMS为数值NUMBER类型的情况下,所述客户端通过解析数值K和后续的K个推送承诺PUSH_PROMISE帧,获取媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息,包括:
步骤S1081,所述客户端从所述快速启动类型推送指令中解析得到所述参数值K,并接收所述媒体服务器推送的与所述参数值K对应的K个片段消息。
步骤S1083,所述客户端解析所述MPD数据,得到所述客户端需要的媒体内容的媒体信息。
步骤S1085,所述客户端检测所述K个片段消息中是否命中所述媒体信息,所述片段消息为URL地址。
步骤S1087,如果在所述K个片段消息中命中所述媒体消息成功,所述客户端获取所述媒体服务器将要推送的初始化片段和媒体片段序列的信息。
在一种可选的实施例中,在所述推送确认指令中携带所述媒体服务器预测的参数值K的情况下,所述客户端获取到预测的片段消息可以包括如下步骤:
所述客户端从所述推送确认指令中解析得到所述参数值K,并接收所述媒体服务器推送的与所述参数值K对应的K个片段消息。
在一种可选的实施例中,根据所述预测的片段消息和所述MPD数据,获取所述客户端需要的媒体内容,包括,
所述客户端解析所述MPD数据,得到所述客户端需要的媒体内容的媒体信息。
所述客户端检测所述K个片段消息中是否命中所述媒体信息,所述片段消息为URL地址。
如果在所述K个片段消息中命中所述媒体消息成功,所述客户端获取所述媒体服务器推送的与所述预测的片段消息所对应的片段序列,其中,所述片段序列为所述客户端需要的媒体内容。
可选的,根据本申请上述实施例提供的方法,如果在所述K个片段消息中命中所述媒体消息失败,所述客户端发起获取所述需要的媒体内容的请求,或取消所述媒体服务器推送媒体内容的会话。
提供的带参数K的快速启动推送确认指令参数格式,可以定义为:fast_start指示推送确认指令,由参数K指定推送确认指令的类型,由K值组成带参数K的快速启动确认指令。具体示例结合如图5B至图5C所示。
在一种可选的实施例中,所述push-fast-start acknowledge参数可以由快速启动信息(fast-start)和一个参数K组成,除此以外,媒体服务器在推送预测片段序列的同时会先推送片段序列的消息,如URL等信息(该事先推送的片段序列信息的方式可以为HTTP/2中的push promise等方式,所述push promise指的是由媒体服务器发送,用来通知媒体客户端要推送的内容信息,比如URL信息等),给媒体客户端,以便于媒体客户端通过push-fast-start acknowledge参数K和推送片段序列的信息来尽早决策媒体服务器端是否命中失败(Miss)。
本发明实施例提供了一种流媒体快速启动方法,图6是根据本发明实施例的一种流媒体快速启动方法的流程图,图6是根据本发明实施例的一种可以由用户端设备(如,媒体客户端110)实现的流媒体快速启动方法200的流程示意图,如图6所示,该流程包括以下步骤:
步骤201,根据客户端是否需要快速启动和呈现描述MPD,生成push-fast-startdirective,其中,所述push-fast-start directive可以不包含任何参数,也可以包含一些表示客户端偏好的参数,比如加入客户端偏好的码率,偏好的媒体片段类型,偏好的媒体片段个数等或这些的组合等;
步骤202,向媒体服务器发送MPD片段请求消息,其中,所述MPD片段请求消息由上述push-fast-start directive与MPD请求消息指令组成;
步骤203,从所述媒体服务器接收响应MPD片段请求消息的MPD片段,并解析响应消息头部信息中push-fast-start directive中的参数值K;
步骤204,从所述媒体服务器接收服务器推送的K个片段的片段消息,判断所需内容是否命中,命中的话等待获取内容,命中失败的话,可以立即发送对应所需消息的请求,也可以取消(Cancel)媒体服务器的推送,直接开始请求所需片段序列。
所述步骤202中,所述片段请求消息具体可通过且不限于以下形式发送:HTTP/2请求报文的扩展首部的键值对形式、WebSocket的帧中的JSON键值对形式等。
所述步骤204中,所述参数K对应的片段序列的消息被媒体服务器同步推送,所述参数K对应的片段序列被媒体服务器同步推送(或者其他更加快速,公平的方法推送)。
基于以上步骤,媒体客户端通过生成所述push-fast-start directive,即可告诉媒体服务器,客户端期待媒体服务器推送片段序列,以快速启动;通过使用从所述媒体服务器接收服务器推送的K个片段的片段消息,减少了客户端盲目等待的时间,降低了启动延迟。
所述方法200为示例性实施例,可以对所述方法200进行替代性修改,且可以根据需要合并和/或附加步骤。
下文是一个示例性实施例,用以说明在此介绍的流媒体快速启动方法和参数值K,及其在一些用例中的潜在应用。
图7A示出了示例性MPD 400。该MPD取自2016ICME Grand Challenge竞赛组委会提供的示例文件(MPD文件亦可以是其他标准类型的DASH MPD文件)。
图7B示出了示例性片段请求消息410。片段请求消息410包括了mpd_uri 411和fast_start推送指令412,不含参数。
图7B-1示出了示例性片段请求消息410-1。片段请求消息410-1包括了mpd_uri411-1和fast_start推送指令412-1,该指令由快速启动信息(fast-start)和推送参数组成。所述推送参数有多种,可以为video=V、audio=A、init-only、biterate=B或者它们相互组合(video、audio、biterate数值或者范围亦可不指定)。
图7C示出了示例性片段响应消息420。片段响应消息420包括了mpd_content 421和fast_start推送确认指令412,包含参数值K,亦即媒体服务器欲推送片段的个数。
图7D示出了媒体客户端110与媒体服务器120的示例性交互流程。交互流程起始于步骤431,媒体客户端110通过FDH访问引擎113向所述媒体服务器120发送MPD请求消息,请求MPD400,并告诉媒体服务器需要快速启动。在步骤432中,媒体服务器120接收到MPD请求消息后,通过FDH服务模块121获取预测片段的数目以及具体内容,向媒体客户端110发送MPD响应消息,所述MPD响应消息包含MPD400与push-fast-start acknowledge422。在步骤433中,媒体服务器120服务模块121根据本地预测和MPD信息生成预测片段信息,并生成要推送的片段序列。同时向媒体客户端并行发送要推送片段的信息(URL等信息,不包含具体数据)。在步骤434中,所述媒体客户端110通过FDH-DASH控制引擎111解析,所需片段是否在服务器推送的片段消息中,如果在等待获取文件内容,否则,立马请求所需片段。媒体服务器在步骤435中,通过服务模块121向所述媒体客户端110并行发送片段请求消息。在步骤436中,所述媒体客户端110正常发送片段请求。步骤434和步骤435可以同时进行,以便于媒体客户端尽早决策。
可选的,根据本申请上述实施例,在所述推送确认指令中携带所述媒体服务器预测的推送片段列表的情况下,所述推送片段列表为从所述推送确认指令这种解析得到的所述预测的片段消息,其中,根据所述预测的片段消息和所述MPD数据,获取所述客户端需要的媒体内容,包括,
步骤S1067,所述客户端解析所述MPD数据,得到所述客户端需要的媒体内容的媒体信息;
步骤S1069,所述客户端检测所述推送片段列表中是否命中所述媒体信息;
步骤S1071,如果在所述推送片段列表中命中所述媒体消息成功,所述客户端获取所述媒体服务器推送的与所述推送片段列表所对应的片段序列,其中,所述片段序列为所述客户端需要的媒体内容。
可选的,根据本申请上述实施例,如果在所述K个片段消息中命中所述媒体消息失败,所述客户端发起获取所述需要的媒体内容的请求并取消所述媒体服务器推送媒体内容的会话,或所述客户端发起获取所述需要的媒体内容的请求并存储所述媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息。
在一种可选的实施例中,如果在所述推送片段列表中命中所述媒体消息失败,所述客户端发起获取所述需要的媒体内容的请求,或取消所述媒体服务器推送媒体内容的会话。
可选的,根据本申请上述实施例,所述推送片段列表为所述媒体服务器预测的片段序列的URL组成。
本发明介绍一种新的URL_LIST快速启动推送确认指令参数格式,可以定义为:
ATTRIBUTES=ATTRIBUTE_LIST/ATTRIBUTE_ITEM
ATTRIBUTE_LIST=ATTRIBUTE_ITEM”;”ATTRIBUTE_LIST/ATTRIBUTE_ITEMATTRIBUTE_ITEM可以为初始化片段,媒体类型,语言,比特率等,值可以为数目,码率,范围等。
fast_start指示推送确认指令,由参数segment-list指定推送确认指令的类型,然后跟上所有片段的URL,URL由符号“;”分割组成URL_LIST快速启动确认指令。
可选的,根据本申请上述实施例,在所述快速启动类型推送指令的推送参数PUSH_PARAMS为URL列表URL_LIST类型的情况下,所述客户端解析URL列表,获取媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息,包括,
步骤S1091,所述客户端解析所述MPD数据,得到所述客户端需要的媒体内容的媒体信息。
步骤S1093,所述客户端检测所述媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息是否命中所述媒体信息。
步骤S1095,如果在所述媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息命中所述媒体消息成功,获取媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息。
在一种可选的实施例中,所述push-fast-start acknowledge参数可以由快速启动信息(fast-start)和即将推送片段列表(URL_LIST)组成,所述URL_LIST由一系列媒体服务器预测的片段序列的URL组成,这些URL列表可以由分号“;”分割(或者其他表现形式),交给媒体客户端解析。媒体客户端可以通过MPD请求响应消息头中的push-fast-startdirective参数,解析获取服务器推送片段的多少,以及具体推送的内容,通过这种方式,媒体客户端可以尽早的做出决策。
本发明实施例提供了一种流媒体快速启动方法,图8是根据本发明实施例的一种流媒体快速启动方法的流程图,图8是根据本发明实施例的一种可以由用户端设备(如,媒体客户端110)实现的流媒体快速启动方法500的流程示意图,如图8所示,该流程包括以下步骤:
步骤501,根据客户端是否需要快速启动和呈现描述MPD,生成push-fast-startdirective,其中,所述push-fast-start directive可以不包含任何参数,也可以包含一些表示客户端偏好的参数,比如加入客户端偏好的码率,偏好的媒体片段类型,偏好的媒体片段个数等或这些的组合等;
步骤502,向媒体服务器发送MPD片段请求消息,其中,所述MPD片段请求消息由上述push-fast-start directive与MPD请求消息指令组成;
步骤503,从所述媒体服务器接收响应MPD片段请求消息的MPD片段,并解析响应消息头部信息中push-fast-start directive中的URL_LIST参数列表。判断媒体客户端需要的片段是否存在于参数列表,存在的话则等待获取媒体服务器推送的内容,不存在的话(Miss),直接请求所需片段序列。
所述步骤502中,所述片段请求消息具体可通过且不限于以下形式发送:HTTP/2请求报文的扩展首部的键值对形式、WebSocket的帧中的JSON键值对形式等。
所述步骤504中,所述参数URL_LIST参数列表由媒体服务器生成,该列表可以根据多数媒体客户端的命中情况来预测,或者实现指定配置文件,或者通过结合媒体客户端push-fast-start directive中的参数情况等。
基于以上步骤,媒体客户端通过生成所述push-fast-start directive,即可告诉媒体服务器,客户端期待媒体服务器推送片段序列,以快速启动;通过使用从所述媒体服务器接收服务器推送的push-fast-start acknowledge中的URL_LIST参数列表,减少了客户端盲目等待的时间,降低了启动延迟。所述方法500为示例性实施例,可以对所述方法500进行替代性修改,且可以根据需要合并和/或附加步骤。
下文是一个示例性实施例,用以说明在此介绍的流媒体快速启动方法和参数URL_LIST,及其在一些用例中的潜在应用。
图9A示出了示例性MPD 700。该MPD取自2016ICME Grand Challenge竞赛组委会提供的示例文件(MPD文件亦可以是其他标准类型的DASH MPD文件)。
图9B示出了示例性片段请求消息710。片段请求消息710包括了mpd_uri 711和fast_start推送指令712,不含参数。
图9B-1示出了示例性片段请求消息710-1。片段请求消息710-1包括了mpd_uri711-1和fast_start推送指令712-1,该指令由快速启动信息(fast-start)和推送参数组成。所述推送参数有多种,可以为video=V、audio=A、init-only、biterate=B或者它们相互组合(video、audio、biterate数值或者范围亦可不指定)。
图9C示出了示例性片段响应消息720。片段响应消息720包括了mpd_content 721和fast_start推送确认指令712,包含参数URL_LIST,亦即媒体服务器欲推送片段的信息列表(URL等,不包含具体数据)。
图9D示出了媒体客户端110与媒体服务器120的示例性交互流程。交互流程起始于步骤731,媒体客户端110通过FDH访问引擎113向所述媒体服务器120发送MPD请求消息,请求MPD700,并告诉媒体服务器需要快速启动。在步骤732中,媒体服务器120接收到MPD请求消息后,通过FDH服务模块121获取预测片段的数目以及具体内容,向媒体客户端110发送MPD响应消息,所述MPD响应消息包含MPD400与push-fast-start acknowledge722。在步骤733中,所述媒体客户端110通过FDH-DASH控制引擎111解析,所需片段是否在服务器推送的片段列表中,如果在等待获取文件内容,否则,立马请求所需片段。媒体服务器在步骤734中,通过服务模块121向所述媒体客户端110并行发送片段请求消息。在步骤735中,所述媒体客户端110正常发送片段请求。步骤733和步骤734可以同时进行,以便于媒体客户端尽早决策。
可选的,根据本申请上述实施例,在所述快速启动类型推送指令的推送参数PUSH_PARAMS为URL模板URL_TEMPLATE类型的情况下,所述客户端解析URL模板,获取媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息,包括:
步骤S1073,所述客户端解析所述MPD数据,得到所述客户端需要的媒体内容的媒体信息。
步骤S1075,所述客户端检测所述媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息是否命中所述媒体信息。
步骤S1077,如果在所述媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息命中所述媒体消息成功,获取媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息。
在一种可选的实施例中,在所述推送确认指令中携带所述媒体服务器预测的推送片段信息的情况下,所述推送片段信息为从所述推送确认指令这种解析得到的所述预测的片段消息,其中,根据所述预测的片段消息和所述MPD数据,获取所述客户端需要的媒体内容,包括,
所述客户端解析所述MPD数据,得到所述客户端需要的媒体内容的媒体信息;
所述客户端检测所述推送片段消息中是否命中所述媒体信息;
如果在所述推送片段消息中命中所述媒体消息成功,所述客户端获取所述媒体服务器推送的与所述推送片段消息所对应的片段序列,其中,所述片段序列为所述客户端需要的媒体内容。
可选的,根据本申请上述实施例,如果在所述媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息命中所述媒体消息失败,所述客户端发起获取所述需要的媒体内容的请求并取消所述媒体服务器推送媒体内容的会话,或所述客户端发起获取所述需要的媒体内容的请求并存储所述媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息。
在一种可选的实施例中,如果在所述推送片段消息中命中所述媒体消息失败,所述客户端发起获取所述需要的媒体内容的请求,或取消所述媒体服务器推送媒体内容的会话。
可选的,根据本申请上述实施例,所述推送片段列消息为所述媒体服务器预测的一个或多个带参数化遍历的URL模板和压缩后的参数列表组成。
本发明介绍一种新的URL_TEMPLATE快速启动推送确认指令参数格式,可以定义为:
ATTRIBUTES=ATTRIBUTE_LIST/ATTRIBUTE_ITEM
ATTRIBUTE_LIST=ATTRIBUTE_ITEM”;”ATTRIBUTE_LIST/ATTRIBUTE_ITEMATTRIBUTE_ITEM可以为初始化片段,媒体类型,语言,比特率等,值可以为数目,码率,范围等。
fast_start指示推送确认指令,由参数push-template指定推送确认指令的类型,然后跟上标准push-template以及上述描述的一些参数组成URL_TEMPLATE快速启动确认指令。具体示例如图10B至图10C所示。
在一实施例中,所述push-fast-start acknowledge参数可以由快速启动信息(fast-start)和即将推送片段信息(URL_TEMPLATE)组成,所述URL_TEMPLATE由包含一个或多个待参数化变量的URL模板和压缩后的参数列表组成,所述URL模板对应于IETF RFC6570URI template Level 1,变量包含于“{}”,表达式类型为字符串扩展模式(详见FDHURL_TEMPLATE定义),交给媒体客户端解析。媒体客户端可以通过MPD请求响应消息头中的push-fast-start directive参数,解析获取服务器推送片段的多少,以及具体推送的内容,通过这种方式,媒体客户端可以尽早的做出决策。
本发明实施例提供了一种流媒体快速启动方法,图11是根据本发明实施例的一种流媒体快速启动方法的流程图,图11是根据本发明实施例的一种可以由用户端设备(如,媒体客户端110)实现的流媒体快速启动方法800的流程示意图,如图11所示,该流程包括以下步骤:
步骤801,根据客户端是否需要快速启动和呈现描述MPD,生成push-fast-startdirective,其中,所述push-fast-start directive可以不包含任何参数,也可以包含一些表示客户端偏好的参数,比如加入客户端偏好的码率,偏好的媒体片段类型,偏好的媒体片段个数等或这些的组合等;
步骤802,向媒体服务器发送MPD片段请求消息,其中,所述MPD片段请求消息由上述push-fast-start directive与MPD请求消息指令组成;
步骤803,从所述媒体服务器接收响应MPD片段请求消息的MPD片段,并解析响应消息头部信息中push-fast-start directive中的URL_TEMPLATE参数。判断媒体客户端需要的片段是否存在于参数列表,存在的话则等待获取媒体服务器推送的内容,不存在的话(Miss),直接请求所需片段序列。
所述步骤802中,所述片段请求消息具体可通过且不限于以下形式发送:HTTP/2请求报文的扩展首部的键值对形式、WebSocket的帧中的JSON键值对形式等。
所述步骤804中,所述参数URL_TEMPLATE参数列表由媒体服务器生成,该列表可以根据多数媒体客户端的命中情况来预测,或者实现指定配置文件等。
基于以上步骤,媒体客户端通过生成所述push-fast-start directive,即可告诉媒体服务器,客户端期待媒体服务器推送片段序列,以快速启动;通过使用从所述媒体服务器接收服务器推送的push-fast-start acknowledge中的URL_TEMPLATE参数列表,减少了客户端盲目等待的时间,降低了启动延迟,并且对于push-fast-start acknowledge进行了更加合理的压缩传输。所述方法800为示例性实施例,可以对所述方法800进行替代性修改,且可以根据需要合并和/或附加步骤。
下文是一个示例性实施例,用以说明在此介绍的流媒体快速启动方法和参数URL_TEMPLATE,及其在一些用例中的潜在应用。
图10A示出了示例性MPD 1000。该MPD取自2016ICME Grand Challenge竞赛组委会提供的示例文件(MPD文件亦可以是其他标准类型的DASH MPD文件)。
图10B示出了示例性片段请求消息1010。片段请求消息1010包括了mpd_uri 1011和fast_start推送指令1012,不含参数。
图10B-1示出了示例性片段请求消息1010-1。片段请求消息1010-1包括了mpd_uri1011-1和fast_start推送指令1012-1,该指令由快速启动信息(fast-start)和推送参数组成。所述推送参数有多种,可以为video=V、audio=A、init-only、biterate=B或者它们相互组合(video、audio、biterate数值或者范围亦可不指定)。
图10C示出了示例性片段响应消息1020。片段响应消息1020包括了mpd_content1021和fast_start推送确认指令1012,包含参数URL_TEMPLATE,亦即媒体服务器欲推送片段的信息列表压缩形式(此处可以为FDH-DASH标准中的定义格式等)。
图10D示出了媒体客户端110与媒体服务器120的示例性交互流程。交互流程起始于步骤1031,媒体客户端110通过FDH访问引擎113向所述媒体服务器120发送MPD请求消息,请求MPD1000,并告诉媒体服务器需要快速启动。在步骤1032中,媒体服务器120接收到MPD请求消息后,通过FDH服务模块121获取预测片段的数目以及具体内容,向媒体客户端110发送MPD响应消息,所述MPD响应消息包含MPD400与push-fast-start acknowledge1022。在步骤1033中,所述媒体客户端110通过FDH-DASH控制引擎111解析,所需片段是否在服务器推送的片段列表中,如果在等待获取文件内容,否则,立马请求所需片段。媒体服务器在步骤1034中,通过服务模块121向所述媒体客户端110并行发送片段请求消息。在步骤1035中,所述媒体客户端110正常发送片段请求。步骤1033和步骤1034可以同时进行,以便于媒体客户端尽早决策。
图13是计算机系统或网络设备1200的实施例的示意图。所述网络设备1200可以为任意合适的设备予以实现,如,网络服务器、媒体服务器(如,媒体服务器120)或用户端设备(如,媒体客户端110)等等。所述网络设备1200能够接收、处理和发送去向以及来自网络的片段请求消息/片段响应消息/片段等消息。所述网络设备1200可以包括与接收器1211连接的一个或多个入口端1210,其中,所述接收器1211可用于通过FDH通道从其他网络节点接收MPD和/或片段。所述网络设备1200还可以包括与发送器1231连接的一个或多个出口端1230,其中,所述发送器1231可以通过FDH通道向其他网络节点发送MPD和/或片段。所述网络设备1200还可以包括处理器1220,其中,所述处理器1220与所述接收器1211链接,用于处理所述片段或者确定向那个网络节点发送所述片段。
所述处理器1220可以通过硬件、软件及其组合来实现。所述处理器1220可用一个或多个CPU芯片、可编程门阵列、专用集成电路和/或数字信号处理器予以实现。所述处理1220可用于实现在此描述的任意功能模块或单元,例如,FDH-DASH控制引擎111、FDH访问引擎113、媒体引擎112、FDH服务模块121、解析引擎122、媒体播放器1221或者本领域普通技术人员熟知的其他任何功能组件,或者其任何组合。所述媒体播放器1221可以为在所述处理器1220上运行的应用程序,用于解码播放所述媒体片段。
所述网络设备1200还可以包括至少一个存储器1222。所述存储器1222可用于存储MPD1223和片段1224。所述MPD1223和所述片段1224可以通过以上所述的各种形式进行存储和打包。例如,所述MPD1223可以为所述MPD300(或者其他在MPEG-DASH中定义的标准MPD文件)。如图13所示,所述片段1224和所述MPD1223可以作为单独的文件进行存储,也可以将其存储在单个文件中。
在实践中,可能存在所述网络设备1200处理的双向流量,因此,一些端口可既接收也发送报文。在这种情况下,所述入口端1210和出口端1230可以是共设在一起的或者可以认识始于收发器连接的相同端口的不同功能。所述处理器1220、所述存储器1222、所述接收器1211和所述发送器1231中的一个或多个也可以用于至少部分实现或支持上文描述的任意方法和实现方式。
在本实施例中还提供了另一种流媒体快速启动方法,图14是根据本发明实施例的一种流媒体快速启动方法的流程图,如图14所示,该流程包括如下步骤:
步骤S1401,媒体服务器接收客户端发送的快速启动类型推送指令,其中,所述快速启动类型推送指令用于指示所述媒体服务器推送初始化片段序列和/或媒体片段序列。
步骤S1403,所述媒体服务器根据将要推送的初始化片段和/或媒体片段序列,生成快速启动类型推送确认指令。
步骤S1405,所述媒体服务器向所述客户端发送所述快速启动类型推送确认指令。
在一种可选的实施例中,上述流媒体快速启动方法的步骤可以包括:
媒体服务器获取快速启动类型推送指令push-fast-start directive;所述媒体服务器生成快速启动类型推送确认指令push-fast-start acknowledge,其中,所述快速启动类型推送确认指令用于通知客户端将要推送的推送初始化片段序列和/或媒体片段序列;向所述客户端发送所述快速启动类型推送确认指令,向所述客户端推送初始化片段序列和/或媒体片段序列。
可选的,在本申请上述实施例中,所述媒体服务器接收所述客户端发送的MPD请求消息,所述MPD请求消息中包含所述快速启动类型推送指令。
可选的,在本申请上述实施例中,媒体服务器接收快速启动类型推送指令包括:所述媒体服务器接收所述客户端发送的MPD请求消息,所述MPD请求消息中包含所述快速启动类型推送指令。
可选的,在本申请上述实施例中,所述媒体服务器生成快速启动类型推送确认指令,包括:
步骤S14031,所述媒体服务器根据将要推送的初始化片段序列和/或媒体片段序列,生成URL模板类型的推送参数。
步骤S14033,所述快速启动类型推送确认指令中携带所述URL模板类型的推送参数。
可选的,在本申请上述实施例中,所述媒体服务器生成快速启动类型推送确认指令,包括:
步骤S14035,所述媒体服务器根据将要推送的初始化片段序列和/或媒体片段序列,生成数值类型的推送参数。
步骤S14037,所述快速启动类型推送确认指令中携带所述数值类型的推送参数。
可选的,在本申请上述实施例中,所述媒体服务器生成快速启动类型推送确认指令,包括:
步骤S14039,所述媒体服务器根据将要推送的初始化片段序列和/或媒体片段序列,生成URL列表类型的推送参数。
步骤S14040,所述快速启动类型推送确认指令中携带所述URL列表类型的推送参数。
可选的,在本申请上述实施例中,发送所述快速启动类型推送确认指令包括:
所述媒体服务器通过MPD响应消息向所述客户端发送所述快速启动类型推送确认指令,其中,所述MPD响应消息至少包含MPD数据,以及所述快速启动类型推送确认指令。
可选的,在本申请上述实施例中,所述媒体服务器生成快速启动类型推送确认指令,包括:
所述媒体服务器根据所述客户端的预定数量和/或所述客户端的历史访问结果,确定所述快速启动类型推送确认指令中携带的推送参数。
可选的,在本申请上述实施例中,所述媒体服务器向所述客户端发送所述快速启动类型推送确认指令之后,上述方法还包括:
所述媒体服务器向所述客户端推送所述快速启动类型推送确认指令指示的片段序列初始化片段和/或媒体片段序列。
可选的,在本申请上述实施例中,所述MPD请求消息还包括:所述MPD请求消息中携带的快速启动推送指令包含偏好参数信息,所述偏好参数包括如下任意一种或多种属性:分辨率范围、码率范围、媒体属性和语言。
在一种可选的实施例中,所述MPD请求消息还包括:至少一个请求参数的情况下,所述初始化片段和媒体片段序列的信息包括请求参数所请求的片段的属性。
可选的,在本申请上述实施例中,所述媒体服务器接收所述客户端发送的MPD请求消息,以及所述快速启动类型推送指令,进一步包括:
通过HTTP/2报文方式接收所述MPD请求消息,其中,所述HTTP/2报文的Accept-Push-Policy首部携带快速启动类型推送指令;或者,
通过WebSocket中DASH子协议的get_mpd消息接收所述MPD请求消息,其中,所述get_mpd消息的JSON键值对携带快速启动类型推送确认指令。
可选的,在本申请上述实施例中,所述媒体服务器向所述客户端发送MPD响应消息,以及所述快速启动类型推送确认指令,进一步包括:
通过HTTP/2报文方式发送所述MPD响应消息,其中,所述HTTP/2报文的Accept-Push-Policy首部携带快速启动类型推送确认指令;或者,
通过WebSocket中DASH子协议的new_mpd消息发送所述MPD响应消息,其中,所述new_mpd消息的JSON键值对携带快速启动类型推送确认指令。
在一种可选的实施例中,所述媒体服务器通过如下任意一种或多种方式推送初始化片段和媒体片段序列的信息:HTTP/2的MPD响应报文方式和WebSocket中DASH子协议的new_mpd消息,其中,HTTP/2的MPD响应报文通过Push-Policy首部携带快速启动类型推送确认指令;WebSockets中DASH子协议的new_mpd消息通过JSON键值对形式携带快速启动类型推送确认指令。
在一种可选的实施例中,媒体服务器获取快速启动类型推送指令push-fast-start directive包括:通过获取并解析MPD请求消息获取所述快速启动类型推送指令,所述MPD请求消息至少包含MPD URI和快速启动类型推送指令;所述媒体服务器生成快速启动类型推送确认指令push-fast-start acknowledge。
在一种可选的实施例中,所述媒体服务器根据将要推送的初始化片段序列和/或媒体片段序列,生成快速启动类型推送确认指令,其中,所述快速启动类型推送确认指令的推送参数可为URL模板URL_TEMPLATE类型,和/或数值NUMBER类型,和/或URL列表URL_LIST类型。
在一种可选的实施例中,向所述客户端发送所述快速启动类型推送确认指令包括:通过MPD响应消息向所述客户端发送所述快速启动类型推送确认指令,其中,所述MPD响应消息用于响应所述客户端发送MPD请求消息,所述MPD响应消息至少包含MPD数据和所述快速启动类型推送确认指令。
在一种可选的实施例中,上述流媒体快速启动方法包括:
媒体服务器接收客户端发送的用于获取媒体呈现描述文件MPD的请求消息,其中,请求信息至少包括:快速启动推送指令和MPD请求指令;
媒体服务器根据请求消息生成响应信息,其中,响应消息包括:确定客户端需要快速启动的推送确认指令、响应MPD请求指令得到的MPD数据;
在媒体服务器生成预测的片段消息之后,媒体服务器将预测的片段消息和响应信息推送至客户端,使得客户端根据预测的片段消息和MPD数据,获取客户端需要的媒体内容,其中,预测的片段消息为媒体服务器主动推送的与推送确认指令对应的片段消息。
图15是根据本申请实施例的一种可选的流媒体快速启动方法,结合图15所示,该方法包括:
步骤171,从所述媒体客户端接收MPD片段请求消息,其中,所述片段请求消息包含MPD请求消息和push-fast-start directive。
步骤172,根据服务器的预测,生成push-fast-start acknowledge参数,向所述媒体客户端发送MPD片段相应消息,其中,所述片段相应消息包含push-fast-startdirective和MPD片段。
步骤173,根据所述push-fast-start acknowledge参数,确定所述媒体客户端可能期望的片段序列。
步骤174,向所述媒体客户端推送预测片段序列。
下文是一个示例性实施例,用以说明在此介绍的流媒体快速启动方法和参数URL_LIST,及其在一些用例中的潜在应用。
图9A示出了示例性MPD 700。该MPD取自2016ICME Grand Challenge竞赛组委会提供的示例文件(MPD文件亦可以是其他标准类型的DASH MPD文件)。
图9B示出了示例性片段请求消息710。片段请求消息710包括了mpd_uri 711和fast_start推送指令712,不含参数。
图9B-1示出了示例性片段请求消息710-1。片段请求消息710-1包括了mpd_uri711-1和fast_start推送指令712-1,该指令由快速启动信息(fast-start)和推送参数组成。所述推送参数有多种,可以为video=V、audio=A、init-only、biterate=B或者它们相互组合(video、audio、biterate数值或者范围亦可不指定)。
图9C示出了示例性片段响应消息720。片段响应消息720包括了mpd_content 721和fast_start推送确认指令712,包含参数URL_LIST,亦即媒体服务器欲推送片段的信息列表(URL等,不包含具体数据)。
图9D示出了媒体客户端110与媒体服务器120的示例性交互流程。交互流程起始于步骤731,媒体客户端110通过FDH访问引擎113向所述媒体服务器120发送MPD请求消息,请求MPD700,并告诉媒体服务器需要快速启动。在步骤732中,媒体服务器120接收到MPD请求消息后,通过FDH服务模块121获取预测片段的数目以及具体内容,向媒体客户端110发送MPD响应消息,所述MPD响应消息包含MPD400与push-fast-start acknowledge722。在步骤733中,所述媒体客户端110通过FDH-DASH控制引擎111解析,所需片段是否在服务器推送的片段列表中,如果在等待获取文件内容,否则,立马请求所需片段。媒体服务器在步骤734中,通过服务模块121向所述媒体客户端110并行发送片段请求消息。在步骤735中,所述媒体客户端110正常发送片段请求。步骤733和步骤734可以同时进行,以便于媒体客户端尽早决策。
可选的,根据本申请上述实施例,在所述快速启动类型推送确认指令的推送参数为数值NUMBER类型的情况下,根据将要推送的初始化片段序列和/或媒体片段序列,生成快速启动类型推送确认指令,包括:
所述媒体服务器结合预定数量的媒体客户端和/或所述客户端的历史访问结果确定数值K,并确定与所述数值K对应的K个片段消息。
所述媒体服务器将所述数值K加载至所述快速启动类型推送确认指令,
其中,所述媒体服务器将所述初始化片段序列和/或媒体片段序列推送至所述客户端包括:所述媒体服务器将所述数值K以及与所述数值K对应的K个片段消息推送至所述客户端。
可选的,在一种可选的实施例中,在所述推送确认指令中携带所述媒体服务器预测的参数值K的情况下,所述预测的片段消息为K个片段消息,其中,所述媒体服务器根据所述请求消息生成响应信息,包括:
所述媒体服务器结合预定数量的媒体客户端和/或所述客户端的历史访问结果确定预测的参数值K,并确定与所述参数值K对应的K个片段消息;
所述媒体服务器将所述预测的参数值K加载至所述推送确认指令之后,得到所述响应信息;
其中,所述媒体服务器将所述预测的片段消息和所述响应信息推送至所述客户端包括:所述媒体服务器将所述参数值K以及与所述参数值K对应的K个片段消息推送至所述客户端。
本发明实施例中提供了一种流媒体快速启动方法,图16是根据本发明实施例的一种流媒体快速启动方法的流程图,图16是根据本发明实施例的一种可以由网络服务器(如,媒体服务器120)实现的流媒体快速启动方法300的流程示意图,如图16所示,该流程包括如下步骤:
步骤301,从所述媒体客户端接收MPD片段请求消息,其中,所述片段请求消息包含MPD请求信息和push-fast-start directive;
步骤302,根据服务器端的预测,生成push-fast-start acknowledge参数值K,向所述媒体客户端发送MPD片段响应消息,其中,所述片段响应消息包含push-fast-startacknowledge和MPD片段;
步骤303,根据所述push-fast-start acknowledge参数值K,确定所述媒体客户端可能期望推送的K个片段序列;
步骤304,向所述媒体客户端推送上述K个片段序列的片段消息和片段序列。
所述步骤302中,所述push-fast-start acknowledge参数值K可以根据服务器所有客户端预测结果来进行预测,如果大部分预测成功,适当降低阈值,如果大部分预测失败,适当提高阈值,否则不变(亦可以通过初始化指定且不限于所介绍的K值生成方法,或者结合媒体客户端push-fast-start directive中的参数决策等)。
所述步骤303中,所述push-fast-start acknowledge保证的参数值K个片段序列可以根据服务器所有客户端预测结果来进行预测(亦可以通过初始化指定且不限于所介绍的K个片段序列指定方法)。
所述步骤304中,所述K个片段序列的片段消息,用来通知客户端要推送的片段消息,比如片段URL等(或者可以通过其他告知方式,比如HTTP/2中的推送告知方式——pushpromise和WebSocket中的推送内容告知方式等)。
基于以上步骤,媒体服务器只需根据所述push-fast-start directive,在服务器指定推送个数K以及K个片段序列,仅需通过push-fast-start acknowledge和K个片段序列的消息,即可让客户端快速决策,减少了服务器驱动的盲目性,客户端驱动的不合理性,实现了FDH-DASH对媒体客户端的透明性,很好的达到了快速启动的目的。所述方法300为示例性实施例,可以根据需要进行修改。
下文是一个示例性实施例,用以说明在此介绍的流媒体快速启动方法和参数值K,及其在一些用例中的潜在应用。
图7A示出了示例性MPD 400。该MPD取自2016ICME Grand Challenge竞赛组委会提供的示例文件(MPD文件亦可以是其他标准类型的DASH MPD文件)。
图7B示出了示例性片段请求消息410。片段请求消息410包括了mpd_uri 411和fast_start推送指令412,不含参数。
图7B-1示出了示例性片段请求消息410-1。片段请求消息410-1包括了mpd_uri411-1和fast_start推送指令412-1,该指令由快速启动信息(fast-start)和推送参数组成。所述推送参数有多种,可以为video=V、audio=A、init-only、biterate=B或者它们相互组合(video、audio、biterate数值或者范围亦可不指定)。
图7C示出了示例性片段响应消息420。片段响应消息420包括了mpd_content 421和fast_start推送确认指令412,包含参数值K,亦即媒体服务器欲推送片段的个数。
图7D示出了媒体客户端110与媒体服务器120的示例性交互流程。交互流程起始于步骤431,媒体客户端110通过FDH访问引擎113向所述媒体服务器120发送MPD请求消息,请求MPD400,并告诉媒体服务器需要快速启动。在步骤432中,媒体服务器120接收到MPD请求消息后,通过FDH服务模块121获取预测片段的数目以及具体内容,向媒体客户端110发送MPD响应消息,所述MPD响应消息包含MPD400与push-fast-start acknowledge422。在步骤433中,媒体服务器120服务模块121根据本地预测和MPD信息生成预测片段信息,并生成要推送的片段序列。同时向媒体客户端并行发送要推送片段的信息(URL等信息,不包含具体数据)。在步骤434中,所述媒体客户端110通过FDH-DASH控制引擎111解析,所需片段是否在服务器推送的片段消息中,如果在等待获取文件内容,否则,立马请求所需片段。媒体服务器在步骤435中,通过服务模块121向所述媒体客户端110并行发送片段请求消息。在步骤436中,所述媒体客户端110正常发送片段请求。步骤434和步骤435可以同时进行,以便于媒体客户端尽早决策。
可选的,根据本申请上述实施例,在所述快速启动类型推送确认指令的推送参数为URL模板的情况下,根据将要推送的初始化片段序列和/或媒体片段序列,生成快速启动类型推送确认指令,包括:
所述媒体服务器结合预定数量的媒体客户端和/或所述客户端的历史访问结果确定初始化片段序列和/或媒体片段序列。
所述媒体服务器将所述初始化片段序列和/或媒体片段序列加载至所述快速启动类型推送确认指令;
其中,所述媒体服务器将所述初始化片段序列和/或媒体片段序列推送至所述客户端包括:所述媒体服务器将所述快速启动类型推送确认指令推送至所述客户端。
在一种可选的实施例中,在所述推送确认指令中携带所述媒体服务器预测的推送片段列表的情况下,所述推送片段列表为从所述推送确认指令这种解析得到的所述预测的片段消息,其中,所述媒体服务器根据所述请求消息生成响应信息,包括,
所述媒体服务器结合预定数量的媒体客户端和/或所述客户端的历史访问结果确定预测的推送片段列表;
所述媒体服务器将所述推送片段列表加载至所述推送确认指令之后,得到所述响应信息;
其中,所述媒体服务器将所述预测的片段消息和所述响应信息推送至所述客户端包括:所述媒体服务器将所述推送片段列表推送至所述客户端。
可选的,根据本申请上述实施例,在所述快速启动类型推送确认指令的推送参数为URL列表的情况下,根据将要推送的初始化片段序列和/或媒体片段序列,生成快速启动类型推送确认指令,包括:
所述媒体服务器结合预定数量的媒体客户端和/或所述客户端的历史访问结果确定初始化片段序列和/或媒体片段序列。
所述媒体服务器将所述初始化片段序列和/或媒体片段序列加载至所述快速启动类型推送确认指令;
其中,所述媒体服务器将所述初始化片段序列和/或媒体片段序列推送至所述客户端包括:所述媒体服务器将快速启动类型推送确认指令推送至所述客户端。
可选的,根据本申请上述实施例,在所述媒体服务器将所述初始化片段和媒体片段序列的信息推送至所述客户端之后,所述方法还包括:
所述媒体服务器将继续将所述初始化片段和媒体片段序列的信息对应的片段序列推送至所述客户端,其中,所述片段序列为所述客户端需要的媒体内容。
可选的,根据本申请上述实施例,在所述MPD请求消息还包括:至少一个请求参数的情况下,所述初始化片段和媒体片段序列的信息包括请求参数所请求的片段的属性。
可选的,根据本申请上述实施例,所述媒体服务器通过如下任意一种或多种方式推送初始化片段和媒体片段序列的信息:HTTP/2中的推送告知方式和WebSocket中的推送内容告知方式。
在一种可选的实施例中,所述推送片段列表为所述媒体服务器预测的片段序列的URL组成。
在一种可选的实施例中,在所述推送确认指令中携带所述媒体服务器预测的推送片段信息的情况下,所述推送片段信息为从所述推送确认指令这种解析得到的所述预测的片段消息,其中,所述媒体服务器根据所述请求消息生成响应信息,包括:
所述媒体服务器结合预定数量的媒体客户端和/或所述客户端的历史访问结果确定预测的推送片段信息;
所述媒体服务器将所述推送片段信息加载至所述推送确认指令之后,得到所述响应信息;
其中,所述媒体服务器将所述预测的片段消息和所述响应信息推送至所述客户端包括:所述媒体服务器将所述推送片段信息推送至所述客户端。
在一种可选的实施例中,所述推送片段列消息为所述媒体服务器预测的一个或多个带参数化遍历的URL模板和压缩后的参数列表组成。
在一种可选的实施例中,在所述媒体服务器将所述预测的片段消息和所述响应信息推送至所述客户端之后,所述方法还包括,
所述媒体服务器将继续将所述片段消息对应的片段序列推送至所述客户端,其中,所述片段序列为所述客户端需要的媒体内容。
在一种可选的实施例中,在所述请求信息还包括:至少一个请求参数的情况下,所述预测的片段消息包括请求参数所请求的片段的属性。
在一种可选的实施例中,所述媒体服务器通过如下任意一种或多种方式推送所述预测的片段消息至所述媒体服务器:HTTP/2中的推送告知方式和WebSocket中的推送内容告知方式。
本发明实施例中提供了一种流媒体快速启动方法,图15是根据本发明实施例的一种流媒体快速启动方法的流程图,图15是根据本发明实施例的一种可以由网络服务器(如,媒体服务器120)实现的流媒体快速启动方法600的流程示意图,如图15所示,该流程包括如下步骤:
步骤601,从所述媒体客户端接收MPD片段请求消息,其中,所述片段请求消息包含MPD请求信息和push-fast-start directive;
步骤602,根据服务器端的预测,生成push-fast-start acknowledge参数sement_list,向所述媒体客户端发送MPD片段响应消息,其中,所述片段响应消息包含push-fast-start acknowledge和MPD片段;
步骤603,向所述媒体客户端推送上述预测的片段序列。
所述步骤602中,所述push-fast-start acknowledge参数URL_LIST可以根据服务器所有客户端预测结果来进行预测(亦可以通过初始化指定且不限于所介绍的片段序列指定方法)。
基于以上步骤,媒体服务器只需根据所述push-fast-start directive,在媒体服务器指定推送片段序列,仅需通过push-fast-start acknowledge中的参数URL_LIST列表,即可让客户端快速决策,减少了服务器驱动的盲目性,客户端驱动的不合理性,实现了FDH-DASH对媒体客户端的透明性,很好的达到了快速启动的目的。所述方法600为示例性实施例,可以根据需要进行修改。
本发明实施例中提供了一种流媒体快速启动方法,图12是根据本发明实施例的一种流媒体快速启动方法的流程图,图12是根据本发明实施例的一种可以由网络服务器(如,媒体服务器120)实现的流媒体快速启动方法900的流程示意图,如图12所示,该流程包括如下步骤:
步骤901,从所述媒体客户端接收MPD片段请求消息,其中,所述片段请求消息包含MPD请求信息和push-fast-start directive;
步骤902,根据服务器端的预测(或者通过结合媒体客户端推送的push-fast-start directive参数,亦即客户端偏好来决策),生成push-fast-start acknowledge参数URL_TEMPLATE,向所述媒体客户端发送MPD片段响应消息,其中,所述片段响应消息包含push-fast-start acknowledge和MPD片段;
步骤903,向所述媒体客户端推送上述预测的片段序列。
所述步骤902中,所述push-fast-start acknowledge参数URL_TEMPLATE可以根据服务器所有客户端预测结果来进行预测(亦可以通过初始化指定且不限于所介绍的片段序列指定方法)。
基于以上步骤,媒体服务器只需根据所述push-fast-start directive,在媒体服务器指定推送片段序列,仅需通过push-fast-start acknowledge中的参数URL_TEMPLATE列表,即可让客户端快速决策,减少了服务器驱动的盲目性,客户端驱动的不合理性,实现了FDH-DASH对媒体客户端的透明性,很好的达到了快速启动的目的,同时对于push-fast-start acknowledge进行了更加合理的压缩传输,使得传输参数更加符合规范
·。所述方法900为示例性实施例,可以根据需要进行修改。
下文是一个示例性实施例,用以说明在此介绍的流媒体快速启动方法和参数URL_TEMPLATE,及其在一些用例中的潜在应用。
图9A示出了示例性MPD 1000。该MPD取自2016ICME Grand Challenge竞赛组委会提供的示例文件(MPD文件亦可以是其他标准类型的DASH MPD文件)。
图9B示出了示例性片段请求消息1010。片段请求消息1010包括了mpd_uri 1011和fast_start推送指令1012,不含参数。
图9B-1示出了示例性片段请求消息1010-1。片段请求消息1010-1包括了mpd_uri1011-1和fast_start推送指令1012-1,该指令由快速启动信息(fast-start)和推送参数组成。所述推送参数有多种,可以为video=V、audio=A、init-only、biterate=B或者它们相互组合(video、audio、biterate数值或者范围亦可不指定)。
图9C示出了示例性片段响应消息1020。片段响应消息1020包括了mpd_content1021和fast_start推送确认指令1012,包含参数URL_TEMPLATE,亦即媒体服务器欲推送片段的信息列表压缩形式(此处可以为FDH-DASH标准中的定义格式等)。
图9D示出了媒体客户端110与媒体服务器120的示例性交互流程。交互流程起始于步骤1031,媒体客户端110通过FDH访问引擎113向所述媒体服务器120发送MPD请求消息,请求MPD1000,并告诉媒体服务器需要快速启动。在步骤1032中,媒体服务器120接收到MPD请求消息后,通过FDH服务模块121获取预测片段的数目以及具体内容,向媒体客户端110发送MPD响应消息,所述MPD响应消息包含MPD400与push-fast-start acknowledge1022。在步骤1033中,所述媒体客户端110通过FDH-DASH控制引擎111解析,所需片段是否在服务器推送的片段列表中,如果在等待获取文件内容,否则,立马请求所需片段。媒体服务器在步骤1034中,通过服务模块121向所述媒体客户端110并行发送片段请求消息。在步骤1035中,所述媒体客户端110正常发送片段请求。步骤1033和步骤1034可以同时进行,以便于媒体客户端尽早决策。
图13是计算机系统或网络设备1200的实施例的示意图。所述网络设备1200可以为任意合适的设备予以实现,如,网络服务器、媒体服务器(如,媒体服务器120)或用户端设备(如,媒体客户端110)等等。所述网络设备1200能够接收、处理和发送去向以及来自网络的片段请求消息/片段响应消息/片段等消息。所述网络设备1200可以包括与接收器1211连接的一个或多个入口端1210,其中,所述接收器1211可用于通过FDH通道从其他网络节点接收MPD和/或片段。所述网络设备1200还可以包括与发送器1231连接的一个或多个出口端1230,其中,所述发送器1231可以通过FDH通道向其他网络节点发送MPD和/或片段。所述网络设备1200还可以包括处理器1220,其中,所述处理器1220与所述接收器1211链接,用于处理所述片段或者确定向那个网络节点发送所述片段。
所述处理器1220可以通过硬件、软件及其组合来实现。所述处理器1220可用一个或多个CPU芯片、可编程门阵列、专用集成电路和/或数字信号处理器予以实现。所述处理1220可用于实现在此描述的任意功能模块或单元,例如,FDH-DASH控制引擎111、FDH访问引擎113、媒体引擎112、FDH服务模块121、解析引擎122、媒体播放器1221或者本领域普通技术人员熟知的其他任何功能组件,或者其任何组合。所述媒体播放器1221可以为在所述处理器1220上运行的应用程序,用于解码播放所述媒体片段。
所述网络设备1200还可以包括至少一个存储器1222。所述存储器1222可用于存储MPD1223和片段1224。所述MPD1223和所述片段1224可以通过以上所述的各种形式进行存储和打包。例如,所述MPD1223可以为所述MPD300(或者其他在MPEG-DASH中定义的标准MPD文件)。如图15所示,所述片段1224和所述MPD1223可以作为单独的文件进行存储,也可以将其存储在单个文件中。
在实践中,可能存在所述网络设备1200处理的双向流量,因此,一些端口可既接收也发送报文。在这种情况下,所述入口端1210和出口端1230可以是共设在一起的或者可以认识始于收发器连接的相同端口的不同功能。所述处理器1220、所述存储器1222、所述接收器1211和所述发送器1231中的一个或多个也可以用于至少部分实现或支持上文描述的任意方法和实现方式。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
在本实施例中还提供了一种流媒体快速启动装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图17是根据本发明实施例的流媒体快速启动装置的结构框图,如图17所示,该装置包括:
访问引擎模块170,用于客户端向媒体服务器发送快速启动类型推送指令,其中,所述快速启动类型推送指令用于指示所述媒体服务器推送初始化片段序列和/或媒体片段序列。
第一接收模块172,用于所述客户端接收所述媒体服务器返回的快速启动类型推送确认指令。
控制引擎模块174,用于所述客户端根据所述快速启动类型推送确认指令获取所述媒体服务器将要推送的初始化片段和/或媒体片段序列的信息。
在一种可选的实施例中,上述流媒体快速启动装置包括:生成引擎模块,用于客户端生成快速启动类型推送指令push-fast-start directive;访问引擎模块,用于向媒体服务器发送所述快速启动类型推送指令,其中,所述快速启动类型推送指令用于通知所述媒体服务器推送初始化片段序列和/或媒体片段序列;第一接收模块,用于所述客户端获取快速启动类型推送确认指令push-fast-start acknowledge。控制引擎模块,用于所述客户端根据所述快速启动类型推送确认指令获取所述服务器将要推送的初始化片段和媒体片段序列的信息。
在另一种可选的实施例中,上述流媒体快速启动装置包括:生成引擎模,用于客户端生成快速启动推动指令:访问引擎模块,用于客户端发送用于获取媒体呈现描述文件MPD的请求消息至媒体服务器,其中,所述请求信息至少包括:快速启动推送指令和MPD请求指令;接收模块,用于所述客户端接收所述媒体服务器根据所述请求消息返回的响应消息,其中,所述响应消息包括:确定所述客户端需要快速启动的推送确认指令、响应所述MPD请求指令得到的MPD数据;控制引擎模块,用于在所述客户端获取到预测的片段消息之后,根据所述预测的片段消息和所述MPD数据,获取所述客户端需要的媒体内容,其中,所述预测的片段消息为所述媒体服务器主动推送的与所述推送确认指令对应的片段消息。
其中,上述生成引擎模块可以是方法实施例中的生成引擎,访问引擎模块可以是方法实施例中的访问引擎模块,控制引擎模块可以是方法实施例中的控制引擎。
可选的,根据本申请上述实施例,上述第一接收模块还包括:
第一接收子模块,用于所述客户端接收所述媒体服务器返回的MPD响应消息,所述MPD响应消息至少包含MPD数据,以及所述快速启动类型推送确认指令。
可选的,根据本申请上述实施例,所述控制引擎模块包括:
第一确认模块,用于所述快速启动类型推送确认指令中携带URL模板URL_TEMPLATE类型的推送参数;
第一获取模块,用于所述客户端解析URL模板推送参数,获取所述媒体服务器将要推送的初始化片段序列和/或媒体片段序列的信息。
可选的,根据本申请上述实施例,其特征在于,所述控制引擎模块包括:
第二确认模块,用于所述快速启动类型推送确认指令中携带数值NUMBER类型的推送参数;
第二获取模块,用于所述客户端解析数值推送参数K,并接收后续的K个推送承诺PUSH_PROMISE帧,获取所述媒体服务器将要推送的初始化片段序列和/或媒体片段序列的信息。
可选的,根据本申请上述实施例,所述控制引擎模块包括:
第三确认模块,用于所述快速启动类型推送确认指令中携带URL列表URL_LIST类型的推送参数;
第三获取模块,用于所述客户端解析URL列表推送参数,获取所述媒体服务器将要推送的初始化片段序列和/或媒体片段序列的信息。
可选的,根据本申请上述实施例,所述装置还包括:
第四确认模块,用于所述客户端解析所述MPD数据,确定需要所述媒体服务器推送的初始化片段和/或媒体片段序列的信息;
第二接收模块,用于若所述获取的媒体服务器将要推送的初始化片段和/或媒体片段序列的信息等同于所述确定的需要媒体服务器推送的初始化片段和/或媒体片段序列的信息,所述客户端接收所述媒体服务器推送的初始化片段序列和/或媒体片段序列。
在一种可选的实施例中,该装置除包括图17所示的所有模块外,控制引擎模块包括:
发送模块,用于通过MPD请求消息向所述媒体服务器发送所述快速启动类型推送指令,其中,所述MPD请求消息用于请求所述媒体服务器发送MPD响应消息,所述MPD响应消息至少应包含MPD数据和快速启动类型推送确认指令。
在一种可选的实施例中,上述引擎模块包括:确认模块,用于在所述推送确认指令中携带所述媒体服务器预测的参数值K的情况下,所述客户端从所述推送确认指令中解析得到所述参数值K,并接收所述媒体服务器推送的与所述参数值K对应的K个片段消息。
在一种可选的实施例中,上述第一接收模块还包括:第一获取模块,用于通过获取并解析MPD响应消息获取所述快速启动类型推送确认指令,所述MPD响应消息至少包含MPD数据和快速启动类型推送确认指令。
在一种可选的实施例中,根据本申请上述实施例,上述控制引擎模块包括:
初始化模块,用于初始化片段序列和/或媒体片段序列的信息;
第二获取模块,用于在所述快速启动类型推送指令的推送参数PUSH_PARAMS为数值NUMBER类型的情况下,所述客户端通过解析数值K和后续的K个推送承诺PUSH_PROMISE帧,获取媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息;
第三获取模块,用于在所述快速启动类型推送指令的推送参数PUSH_PARAMS为URL列表URL_LIST类型的情况下,所述客户端解析URL列表,获取媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息。
第一获取模块,用于通过获取并解析MPD响应消息获取所述快速启动类型推送确认指令,所述MPD响应消息至少包含MPD数据和快速启动类型推送确认指令
在一种可选的实施例中,该装置除包括图17所示的所有模块外,控制引擎模块还包括:
第一解析引擎模块,用于所述客户端解析所述MPD数据,得到所述客户端需要的媒体内容的媒体信息;
第一检测模块,用于所述客户端检测所述K个片段消息中是否命中所述媒体信息,所述片段消息为URL地址;
第一获取模块,用于如果在所述K个片段消息中命中所述媒体消息成功,所述客户端获取所述媒体服务器推送的与所述预测的片段消息所对应的片段序列,其中,所述片段序列为所述客户端需要的媒体内容。
在一种可选的实施例中,根据本申请上述实施例,上述第二获取模块包括:
第二接收模块,用于所述客户端从所述快速启动类型推送指令中解析得到所述参数值K,并接收所述媒体服务器推送的与所述参数值K对应的K个片段消息;
第二解析引擎模块,用于所述客户端解析所述MPD数据,得到所述客户端需要的媒体内容的媒体信息;
第二检测模块,用于所述客户端检测所述K个片段消息中是否命中所述媒体信息,所述片段消息为URL地址;
第四获取模块,用于如果在所述K个片段消息中命中所述媒体消息成功,所述客户端获取所述媒体服务器将要推送的初始化片段和媒体片段序列的信息。
在一种可选的实施例中,如果在所述K个片段消息中命中所述媒体消息失败,所述客户端发起获取所述需要的媒体内容的请求,或取消所述媒体服务器推送媒体内容的会话。
在一种可选的实施例中,在所述推送确认指令中携带所述媒体服务器预测的推送片段列表的情况下,所述推送片段列表为从所述推送确认指令这种解析得到的所述预测的片段消息,其中,控制引擎模块包括:
第二解析引擎模块,所述客户端解析所述MPD数据,得到所述客户端需要的媒体内容的媒体信息;
第二检测模块,用于所述客户端检测所述推送片段列表中是否命中所述媒体信息;
第二获取模块,用于如果在所述推送片段列表中命中所述媒体消息成功,所述客户端获取所述媒体服务器推送的与所述推送片段列表所对应的片段序列,其中,所述片段序列为所述客户端需要的媒体内容。
图18是根据本发明实施例的流媒体快速启动装置的结构框图,如图18所示,该装置包括:
服务模块180,用于媒体服务器接收客户端发送的快速启动类型推送指令。
生成引擎模块182,用于所述媒体服务器根据将要推送的初始化片段和/或媒体片段序列,生成快速启动类型推送确认指令。
第一推送模块184,用于所述媒体服务器向所述客户端发送所述快速启动类型推送确认指令。
在一种可选的实施例中,该装置包括:服务模块,用于媒体服务器获取快速启动类型推送指令push-fast-start directive;生成引擎模块,用于所述媒体服务器生成快速启动类型推送确认指令push-fast-start acknowledge,其中,所述快速启动类型推送确认指令用于通知客户端将要推送的推送初始化片段序列和/或媒体片段序列;第一推送模块,用于向所述客户端发送所述快速启动类型推送确认指令。
在一种可选的实施例中,上述流媒体快速启动装置可以包括:服务模块,用于媒体服务器接收客户端发送的用于获取媒体呈现描述文件MPD的请求消息,其中,所述请求信息至少包括:快速启动推送指令和MPD请求指令;生成引擎模块,所述所述媒体服务器根据所述请求消息生成响应信息,其中,所述响应消息包括:确定所述客户端需要快速启动的推送确认指令、响应所述MPD请求指令得到的MPD数据;解析引擎模块,用于在所述媒体服务器生成预测的片段消息之后,所述媒体服务器将所述预测的片段消息和所述响应信息推送至所述客户端,使得所述客户端根据所述预测的片段消息和所述MPD数据,获取所述客户端需要的媒体内容,其中,所述预测的片段消息为所述媒体服务器主动推送的与所述推送确认指令对应的片段消息。
其中,上述服务模块可以是方法实施例中的服务模块,上述生成引擎模块可以是方法实施例中的生成引擎,上述解析引擎模块可以是方法实施例中的解析引擎。
在本实施例中还提供了一种流媒体快速启动系统,该系统用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。
图19是根据本发明实施例的流媒体快速启动系统的结构框图,如图19所示,该系统包括:
客户端190,用于向媒体服务器发送所述快速启动类型推送指令,并接收媒体服务器返回的快速启动类型推送确认指令,根据所述快速启动类型推送确认指令获取所述服务器将要推送的初始化片段和/或媒体片段序列的信息,其中,所述快速启动类型推送指令用于指示所述媒体服务器推送初始化片段序列和/或媒体片段序列;
所述媒体服务器192,与所述客户端通信,用于接收所述客户端发送的所述快速启动类型推送指令,生成快速启动类型推送确认指令,向所述客户端发送所述快速启动类型推送确认指令,并向所述客户端推送所述初始化片段序列和/或所述媒体片段序列。
在一种可选的实施例中,上述系统包括:客户端,用于生成快速启动类型推送指令push-fast-start directive,并向媒体服务器发送所述快速启动类型推送指令,在获取到快速启动类型推送确认指令push-fast-start acknowledge之后,根据所述快速启动类型推送确认指令获取所述服务器将要推送的初始化片段和媒体片段序列的信息,其中,所述快速启动类型推送指令用于通知所述媒体服务器推送初始化片段序列和/或媒体片段序列;所述媒体服务器,与所述客户端通信,用于接收所述客户端发送的所述快速启动类型推送指令,向所述客户端发送所述快速启动类型推送确认指令,并向所述客户端推送所述初始化片段序列和/或所述媒体片段序列。
在另一种可选的实施例中,上述流媒体快速启动系统包括:客户端,生成快速启动推动指令,并向媒体服务器发送用于获取媒体呈现描述文件MPD的请求消息至媒体服务器,在获取到预测的片段消息之后,根据所述预测的片段消息和所述MPD数据,获取需要的媒体内容,其中,所述请求信息至少包括:快速启动推送指令和MPD请求指令,所述预测的片段消息为所述媒体服务器主动推送的与所述推送确认指令对应的片段消息。媒体服务器,与所述客户端通信,用于接收客户端发送的用于获取媒体呈现描述文件MPD的请求消息,并根据所述请求消息生成响应信息,在生成预测的片段消息之后,将所述预测的片段消息和所述响应信息推送至所述客户端。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述模块分别位于多个处理器中。
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的程序代码:
S1,客户端向媒体服务器发送快速启动类型推送指令,其中,所述快速启动类型推送指令用于指示所述媒体服务器推送初始化片段序列和/或媒体片段序列。
S2,所述客户端接收所述媒体服务器返回的快速启动类型推送确认指令。
S3,所述客户端根据所述快速启动类型推送确认指令获取所述媒体服务器将要推送的初始化片段和/或媒体片段序列的信息。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:客户端向媒体服务器发送快速启动类型推送指令包括:所述客户端通过MPD请求消息向所述媒体服务器发送所述快速启动类型推送指令。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:所述客户端接收所述快速启动类型推送确认指令包括:所述客户端接收所述媒体服务器返回的MPD响应消息,所述MPD响应消息至少包含MPD数据,以及所述快速启动类型推送确认指令。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:所述客户端根据所述快速启动类型推送确认指令获取所述服务器将要推送的初始化片段和/或媒体片段序列的信息,包括:所述快速启动类型推送确认指令中携带URL模板类型的推送参数;所述客户端解析URL模板推送参数,获取所述媒体服务器将要推送的初始化片段序列和/或媒体片段序列的信息。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:所述客户端根据所述快速启动类型推送确认指令获取所述服务器将要推送的初始化片段和/或媒体片段序列的信息,包括:所述快速启动类型推送确认指令中携带数值类型的推送参数;所述客户端解析数值推送参数K,并接收后续的K个推送承诺PUSH_PROMISE帧,获取所述媒体服务器将要推送的初始化片段序列和/或媒体片段序列的信息。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:所述客户端根据所述快速启动类型推送确认指令获取所述服务器将要推送的初始化片段和/或媒体片段序列的信息,包括:所述快速启动类型推送确认指令中携带URL列表类型的推送参数;所述客户端解析URL列表推送参数,获取所述媒体服务器将要推送的初始化片段序列和/或媒体片段序列的信息。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:所述客户端解析所述MPD数据,确定需要所述媒体服务器推送的初始化片段和/或媒体片段序列的信息;若所述获取的媒体服务器将要推送的初始化片段和/或媒体片段序列的信息等同于所述确定的需要媒体服务器推送的初始化片段和/或媒体片段序列的信息,所述客户端接收所述媒体服务器推送的初始化片段序列和/或媒体片段序列。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:所述客户端解析所述MPD数据,确定需要所述媒体服务器推送的初始化片段和/或媒体片段序列的信息;若所述获取的媒体服务器将要推送的初始化片段和/或媒体片段序列的信息不同于所述确定的需要媒体服务器推送的初始化片段和/或媒体片段序列的信息,所述客户端取消所述媒体服务器推送的初始化片段序列和/或媒体片段序列。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:所述客户端向所述媒体服务器发送获取所述确定需要所述媒体服务器推送的初始化片段和/或媒体片段序列的请求。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:所述MPD请求消息中携带的快速启动推送指令包含偏好参数信息,所述偏好参数包括如下任意一种或多种属性:分辨率范围、码率范围、媒体属性和语言。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:所述客户端接收所述媒体服务器返回的MPD响应消息,以及所述快速启动类型推送确认指令,进一步包括:通过HTTP/2报文方式接收所述MPD响应消息,其中,所述HTTP/2报文的Accept-Push-Policy首部携带快速启动类型推送确认指令;或者,通过WebSocket中DASH子协议的new_mpd消息接收所述MPD响应消息,其中,所述new_mpd消息的JSON键值对携带快速启动类型推送确认指令。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:所述客户端向所述媒体服务器发送MPD请求消息,以及所述快速启动类型推送指令,进一步包括:通过HTTP/2报文方式发送所述MPD请求消息,其中,所述HTTP/2报文的Accept-Push-Policy首部携带快速启动类型推送指令;或者,通过WebSocket中DASH子协议的get_mpd消息发送所述MPD请求消息,其中,所述get_mpd消息的JSON键值对携带快速启动类型推送确认指令。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:所述客户端通过如下任意一种或多种方式从所述媒体服务器获取到所述MPD响应消息:HTTP/2的MPD响应报文方式和WebSocket中DASH子协议的new_mpd消息,其中,HTTP/2的MPD响应报文通过Push-Policy首部携带快速启动类型推送确认指令;WebSockets中DASH子协议的new_mpd消息通过JSON键值对形式携带快速启动类型推送确认指令。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:所述客户端通过如下任意一种或多种方式发送所述MPD请求消息:HTTP/2请求报文方式和WebSocket中DASH子协议的get_mpd消息,其中,HTTP/2请求报文通过Accept-Push-Policy首部携带快速启动类型推送指令;WebSockets中DASH子协议的get_mpd消息通过JSON键值对形式携带快速启动类型推送指令。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:媒体服务器接收客户端发送的快速启动类型推送指令,其中,所述快速启动类型推送指令用于指示所述媒体服务器推送初始化片段序列和/或媒体片段序列;所述媒体服务器根据将要推送的初始化片段和/或媒体片段序列,生成快速启动类型推送确认指令;所述媒体服务器向所述客户端发送所述快速启动类型推送确认指令。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:媒体服务器接收快速启动类型推送指令包括:所述媒体服务器接收所述客户端发送的MPD请求消息,所述MPD请求消息中包含所述快速启动类型推送指令。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:所述媒体服务器生成快速启动类型推送确认指令,包括:所述媒体服务器根据将要推送的初始化片段序列和/或媒体片段序列,生成URL模板类型的推送参数;所述快速启动类型推送确认指令中携带所述URL模板类型的推送参数。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:所述媒体服务器生成快速启动类型推送确认指令,包括:所述媒体服务器根据将要推送的初始化片段序列和/或媒体片段序列,生成数值类型的推送参数;所述快速启动类型推送确认指令中携带所述数值类型的推送参数。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:所述媒体服务器生成快速启动类型推送确认指令,包括:所述媒体服务器根据将要推送的初始化片段序列和/或媒体片段序列,生成URL列表类型的推送参数;所述快速启动类型推送确认指令中携带所述URL列表类型的推送参数。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:发送所述快速启动类型推送确认指令包括:所述媒体服务器通过MPD响应消息向所述客户端发送所述快速启动类型推送确认指令,其中,所述MPD响应消息至少包含MPD数据,以及所述快速启动类型推送确认指令。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:所述媒体服务器生成快速启动类型推送确认指令,包括:所述媒体服务器根据所述客户端的预定数量和/或所述客户端的历史访问结果,确定所述快速启动类型推送确认指令中携带的推送参数。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:所述媒体服务器向所述客户端发送所述快速启动类型推送确认指令之后,所述方法还包括:所述媒体服务器向所述客户端推送所述快速启动类型推送确认指令指示的片段序列初始化片段和/或媒体片段序列。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:所述MPD请求消息中携带的快速启动推送指令包含偏好参数信息,所述偏好参数包括如下任意一种或多种属性:分辨率范围、码率范围、媒体属性和语言。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:所述媒体服务器通过如下任意一种或多种方式推送初始化片段和媒体片段序列的信息:HTTP/2的MPD响应报文方式和WebSocket中DASH子协议的new_mpd消息,其中,HTTP/2的MPD响应报文通过Push-Policy首部携带快速启动类型推送确认指令;WebSockets中DASH子协议的new_mpd消息通过JSON键值对形式携带快速启动类型推送确认指令。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:其特征在于,所述媒体服务器接收所述客户端发送的MPD请求消息,以及所述快速启动类型推送指令,进一步包括:通过HTTP/2报文方式接收所述MPD请求消息,其中,所述HTTP/2报文的Accept-Push-Policy首部携带快速启动类型推送指令;或者,通过WebSocket中DASH子协议的get_mpd消息接收所述MPD请求消息,其中,所述get_mpd消息的JSON键值对携带快速启动类型推送确认指令。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:所述媒体服务器向所述客户端发送MPD响应消息,以及所述快速启动类型推送确认指令,进一步包括:通过HTTP/2报文方式发送所述MPD响应消息,其中,所述HTTP/2报文的Accept-Push-Policy首部携带快速启动类型推送确认指令;或者,通过WebSocket中DASH子协议的new_mpd消息发送所述MPD响应消息,其中,所述new_mpd消息的JSON键值对携带快速启动类型推送确认指令。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:客户端生成快速启动类型推送指令push-fast-start directive;向媒体服务器发送所述快速启动类型推送指令,其中,所述快速启动类型推送指令用于通知所述媒体服务器推送初始化片段序列和/或媒体片段序列;所述客户端获取快速启动类型推送确认指令push-fast-startacknowledge;所述客户端根据所述快速启动类型推送确认指令获取所述服务器将要推送的初始化片段和媒体片段序列的信息。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:向媒体服务器发送快速启动类型推送指令包括:通过MPD请求消息向所述媒体服务器发送所述快速启动类型推送指令,其中,所述MPD请求消息用于请求所述媒体服务器发送MPD响应消息,所述MPD响应消息至少应包含MPD数据和快速启动类型推送确认指令。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:所述客户端获取所述快速启动类型推送确认指令包括:通过获取并解析MPD响应消息获取所述快速启动类型推送确认指令,所述MPD响应消息至少包含MPD数据和快速启动类型推送确认指令。
可选的,存储介质还被设置为存储用于执行以下步骤的程序代码:所述客户端根据所述快速启动类型推送确认指令获取所述服务器将要推送的初始化片段和媒体片段序列的信息:在所述快速启动类型推送指令的推送参数PUSH_PARAMS为URL模板URL_TEMPLATE类型的情况下,所述客户端解析URL模板,获取媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息;在所述快速启动类型推送指令的推送参数PUSH_PARAMS为数值NUMBER类型的情况下,所述客户端通过解析数值K和后续的K个推送承诺PUSH_PROMISE帧,获取媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息;在所述快速启动类型推送指令的推送参数PUSH_PARAMS为URL列表URL_LIST类型的情况下,所述客户端解析URL列表,获取媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息。
可选的,存储介质还被设置为存储用于执行以下步骤的程序代码:在所述快速启动类型推送指令的推送参数PUSH_PARAMS为数值NUMBER类型的情况下,所述客户端通过解析数值K和后续的K个推送承诺PUSH_PROMISE帧,获取媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息,包括:所述客户端从所述快速启动类型推送指令中解析得到所述参数值K,并接收所述媒体服务器推送的与所述参数值K对应的K个片段消息;所述客户端解析所述MPD数据,得到所述客户端需要的媒体内容的媒体信息;所述客户端检测所述K个片段消息中是否命中所述媒体信息,所述片段消息为URL地址;如果在所述K个片段消息中命中所述媒体消息成功,所述客户端获取所述媒体服务器将要推送的初始化片段和媒体片段序列的信息。
可选的,存储介质还被设置为存储用于执行以下步骤的程序代码:如果在所述K个片段消息中命中所述媒体消息失败,所述客户端发起获取所述需要的媒体内容的请求并取消所述媒体服务器推送媒体内容的会话,或所述客户端发起获取所述需要的媒体内容的请求并存储所述媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息。
可选的,存储介质还被设置为存储用于执行以下步骤的程序代码:在所述快速启动类型推送指令的推送参数PUSH_PARAMS为URL模板URL_TEMPLATE类型的情况下,所述客户端解析URL模板,获取媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息,包括:所述客户端解析所述MPD数据,得到所述客户端需要的媒体内容的媒体信息;所述客户端检测所述媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息是否命中所述媒体信息;如果在所述媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息命中所述媒体消息成功,获取媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息。
可选的,存储介质还被设置为存储用于执行以下步骤的程序代码:如果在所述媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息命中所述媒体消息失败,所述客户端发起获取所述需要的媒体内容的请求并取消所述媒体服务器推送媒体内容的会话,或所述客户端发起获取所述需要的媒体内容的请求并存储所述媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息。
可选的,存储介质还被设置为存储用于执行以下步骤的程序代码:在所述快速启动类型推送指令的推送参数PUSH_PARAMS为URL列表URL_LIST类型的情况下,所述客户端解析URL列表,获取媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息,包括,所述客户端解析所述MPD数据,得到所述客户端需要的媒体内容的媒体信息;所述客户端检测所述媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息是否命中所述媒体信息;如果在所述媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息命中所述媒体消息成功,获取媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息。
可选的,存储介质还被设置为存储用于执行以下步骤的程序代码:如果在所述媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息命中所述媒体消息失败,所述客户端发起获取所述需要的媒体内容的请求并取消所述媒体服务器推送媒体内容的会话,或所述客户端发起获取所述需要的媒体内容的请求并存储所述媒体服务器将要的推送初始化片段序列和/或媒体片段序列的信息。
可选的,存储介质还被设置为存储用于执行以下步骤的程序代码:在所述MPD请求消息还包括:至少一个请求参数的情况下,所述服务器将要推送的初始化片段和媒体片段序列的信息包括所述MPD请求消息的片段的属性。
可选的,存储介质还被设置为存储用于执行以下步骤的程序代码:所述客户端通过如下任意一种或多种方式从所述媒体服务器获取到所述服务器将要推送的初始化片段和媒体片段序列的信息:HTTP/2中的推送告知方式和WebSocket中的推送内容告知方式。
可选的,存储介质还被设置为存储用于执行以下步骤的程序代码:所述客户端通过如下任意一种或多种方式发送所述MPD请求消息:HTTP/2请求报文的扩展首部的键值对形式和WebSocket的帧中的JSON键值对形式。
上述存储介质可以被设置为存储用于执行以下步骤的程序代码:媒体服务器获取快速启动类型推送指令push-fast-start directive;所述媒体服务器生成快速启动类型推送确认指令push-fast-start acknowledge,其中,所述快速启动类型推送确认指令用于通知客户端将要推送的推送初始化片段序列和/或媒体片段序列;向所述客户端发送所述快速启动类型推送确认指令;向所述客户端推送初始化片段序列和/或媒体片段序列。
可选的,存储介质还被设置为存储用于执行以下步骤的程序代码:媒体服务器获取快速启动类型推送指令push-fast-start directive包括:通过获取并解析MPD请求消息获取所述快速启动类型推送指令,所述MPD请求消息至少包含MPD URI和快速启动类型推送指令。
可选的,存储介质还被设置为存储用于执行以下步骤的程序代码:所述媒体服务器生成快速启动类型推送确认指令push-fast-start acknowledge:所述媒体服务器根据将要推送的初始化片段序列和/或媒体片段序列,生成快速启动类型推送确认指令,其中,所述快速启动类型推送确认指令的推送参数可为URL模板URL_TEMPLATE类型,和/或数值NUMBER类型,和/或URL列表URL_LIST类型。
可选的,存储介质还被设置为存储用于执行以下步骤的程序代码:向所述客户端发送所述快速启动类型推送确认指令包括:通过MPD响应消息向所述客户端发送所述快速启动类型推送确认指令,其中,所述MPD响应消息用于响应所述客户端发送MPD请求消息,所述MPD响应消息至少包含MPD数据和所述快速启动类型推送确认指令。
可选的,存储介质还被设置为存储用于执行以下步骤的程序代码:在所述快速启动类型推送确认指令的推送参数为数值NUMBER类型的情况下,根据将要推送的初始化片段序列和/或媒体片段序列,生成快速启动类型推送确认指令,包括:所述媒体服务器结合预定数量的媒体客户端和/或所述客户端的历史访问结果确定数值K,并确定与所述数值K对应的K个片段消息;所述媒体服务器将所述数值K加载至所述快速启动类型推送确认指令;其中,所述媒体服务器将所述初始化片段序列和/或媒体片段序列推送至所述客户端包括:所述媒体服务器将所述数值K以及与所述数值K对应的K个片段消息推送至所述客户端。
可选的,存储介质还被设置为存储用于执行以下步骤的程序代码:在所述快速启动类型推送确认指令的推送参数为URL模板的情况下,根据将要推送的初始化片段序列和/或媒体片段序列,生成快速启动类型推送确认指令,包括:所述媒体服务器结合预定数量的媒体客户端和/或所述客户端的历史访问结果确定初始化片段序列和/或媒体片段序列;所述媒体服务器将所述初始化片段序列和/或媒体片段序列加载至所述快速启动类型推送确认指令;其中,所述媒体服务器将所述初始化片段序列和/或媒体片段序列推送至所述客户端包括:所述媒体服务器将所述快速启动类型推送确认指令推送至所述客户端。
可选的,存储介质还被设置为存储用于执行以下步骤的程序代码:在所述快速启动类型推送确认指令的推送参数为URL列表的情况下,根据将要推送的初始化片段序列和/或媒体片段序列,生成快速启动类型推送确认指令,包括:所述媒体服务器结合预定数量的媒体客户端和/或所述客户端的历史访问结果确定初始化片段序列和/或媒体片段序列;所述媒体服务器将所述初始化片段序列和/或媒体片段序列加载至所述快速启动类型推送确认指令;其中,所述媒体服务器将所述初始化片段序列和/或媒体片段序列推送至所述客户端包括:所述媒体服务器将快速启动类型推送确认指令推送至所述客户端。
可选的,存储介质还被设置为存储用于执行以下步骤的程序代码:在所述媒体服务器将所述初始化片段和媒体片段序列的信息推送至所述客户端之后,所述方法还包括:所述媒体服务器将继续将所述初始化片段和媒体片段序列的信息对应的片段序列推送至所述客户端,其中,所述片段序列为所述客户端需要的媒体内容。
可选的,存储介质还被设置为存储用于执行以下步骤的程序代码:在所述MPD请求消息还包括:至少一个请求参数的情况下,所述初始化片段和媒体片段序列的信息包括请求参数所请求的片段的属性。
可选的,存储介质还被设置为存储用于执行以下步骤的程序代码:所述媒体服务器通过如下任意一种或多种方式推送初始化片段和媒体片段序列的信息:HTTP/2中的推送告知方式和WebSocket中的推送内容告知方式。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:客户端从推送确认指令中解析得到参数值K,并接收媒体服务器推送的与参数值K对应的K个片段消息。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:客户端解析MPD数据,得到客户端需要的媒体内容的媒体信息;客户端检测K个片段消息中是否命中媒体信息,片段消息为URL地址;如果在K个片段消息中命中媒体消息成功,客户端获取媒体服务器推送的与预测的片段消息所对应的片段序列,其中,片段序列为客户端需要的媒体内容。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:如果在K个片段消息中命中媒体消息失败,客户端发起获取需要的媒体内容的请求,或取消媒体服务器推送媒体内容的会话。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在推送确认指令中携带媒体服务器预测的推送片段列表的情况下,推送片段列表为从推送确认指令这种解析得到的预测的片段消息,其中,根据预测的片段消息和MPD数据,获取客户端需要的媒体内容,包括:客户端解析MPD数据,得到客户端需要的媒体内容的媒体信息;客户端检测推送片段列表中是否命中媒体信息;如果在推送片段列表中命中媒体消息成功,客户端获取媒体服务器推送的与推送片段列表所对应的片段序列,其中,片段序列为客户端需要的媒体内容。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:如果在推送片段列表中命中媒体消息失败,客户端发起获取需要的媒体内容的请求,或取消媒体服务器推送媒体内容的会话。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:推送片段列表为媒体服务器预测的片段序列的URL组成。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在推送确认指令中携带媒体服务器预测的推送片段信息的情况下,推送片段信息为从推送确认指令这种解析得到的预测的片段消息,其中,根据预测的片段消息和MPD数据,获取客户端需要的媒体内容,包括:客户端解析MPD数据,得到客户端需要的媒体内容的媒体信息;客户端检测推送片段消息中是否命中媒体信息;如果在推送片段消息中命中媒体消息成功,客户端获取媒体服务器推送的与推送片段消息所对应的片段序列,其中,片段序列为客户端需要的媒体内容。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:如果在推送片段消息中命中媒体消息失败,客户端发起获取需要的媒体内容的请求,或取消媒体服务器推送媒体内容的会话。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:推送片段列消息为媒体服务器预测的一个或多个带参数化遍历的URL模板和压缩后的参数列表组成。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在请求信息还包括:至少一个请求参数的情况下,预测的片段消息包括请求参数所请求的片段的属性。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:客户端通过如下任意一种或多种方式从媒体服务器获取到预测的片段消息:HTTP/2中的推送告知方式和WebSocket中的推送内容告知方式。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码客户端通过如下任意一种或多种方式发送请求消息:HTTP/2请求报文的扩展首部的键值对形式和WebSocket的帧中的JSON键值对形式。
本发明的实施例还提供了另一种存储介质。可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的程序代码:
S1,媒体服务器接收客户端发送的用于获取媒体呈现描述文件MPD的请求消息,其中,请求信息至少包括:快速启动推送指令和MPD请求指令;
S2,媒体服务器根据请求消息生成响应信息,其中,响应消息包括:确定客户端需要快速启动的推送确认指令、响应MPD请求指令得到的MPD数据;
S3,在媒体服务器生成预测的片段消息之后,媒体服务器将预测的片段消息和响应信息推送至客户端,使得客户端根据预测的片段消息和MPD数据,获取客户端需要的媒体内容,其中,预测的片段消息为媒体服务器主动推送的与推送确认指令对应的片段消息。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (16)
1.一种流媒体快速启动方法,其特征在于,包括:
客户端通过媒体呈现描述文件MPD请求消息向媒体服务器发送快速启动类型推送指令,其中,所述快速启动类型推送指令用于指示所述媒体服务器推送初始化片段序列和/或媒体片段序列;
所述客户端接收所述媒体服务器返回的MPD响应消息,所述MPD响应消息至少包含MPD数据,以及快速启动类型推送确认指令,其中,所述快速启动类型推送确认指令携带URL列表类型的推送参数;
所述客户端解析所述URL列表类型的推送参数,获取所述媒体服务器将要推送的所述初始化片段序列和/或所述媒体片段序列的信息。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述客户端解析所述MPD数据,确定需要所述媒体服务器推送的所述初始化片段序列和/或所述媒体片段序列的信息;
若获取的所述媒体服务器将要推送的所述初始化片段序列和/或所述媒体片段序列的信息等同于确定的需要所述媒体服务器推送的所述初始化片段序列和/或所述媒体片段序列的信息,所述客户端接收所述媒体服务器推送的所述初始化片段序列和/或所述媒体片段序列。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述客户端解析所述MPD数据,确定需要所述媒体服务器推送的所述初始化片段序列和/或所述媒体片段序列的信息;
若获取的所述媒体服务器将要推送的所述初始化片段序列和/或所述媒体片段序列的信息不同于确定的需要所述媒体服务器推送的所述初始化片段序列和/或所述媒体片段序列的信息,所述客户端取消所述媒体服务器推送的所述初始化片段序列和/或所述媒体片段序列。
4.根据权利要求1所述的方法,其特征在于,所述MPD请求消息中携带的所述快速启动类型推送指令包含偏好参数信息,所述偏好参数信息包括如下任意一种或多种属性:分辨率范围、码率范围、媒体属性和语言。
5.根据权利要求1所述的方法,其特征在于,所述客户端接收所述媒体服务器返回的MPD响应消息,以及快速启动类型推送确认指令,包括:
通过HTTP/2报文方式接收所述MPD响应消息,其中,所述HTTP/2报文的Accept-Push-Policy首部携带所述快速启动类型推送确认指令;或者,
通过WebSocket中DASH子协议的new_mpd消息接收所述MPD响应消息,其中,所述new_mpd消息的JSON键值对携带所述快速启动类型推送确认指令。
6.根据权利要求1所述的方法,其特征在于,所述客户端通过媒体呈现描述文件MPD请求消息向媒体服务器发送快速启动类型推送指令,包括:
通过HTTP/2报文方式发送所述MPD请求消息,其中,所述HTTP/2报文的Accept-Push-Policy首部携带所述快速启动类型推送指令;或者,
通过WebSocket中DASH子协议的get_mpd消息发送所述MPD请求消息,其中,所述get_mpd消息的JSON键值对携带所述快速启动类型推送指令。
7.一种流媒体快速启动方法,其特征在于,包括:
媒体服务器接收客户端通过MPD请求消息发送的快速启动类型推送指令,其中,所述快速启动类型推送指令用于指示所述媒体服务器推送初始化片段序列和/或媒体片段序列;
所述媒体服务器根据将要推送的所述初始化片段序列和/或所述媒体片段序列,生成快速启动类型推送确认指令,其中,所述快速启动类型推送确认指令中携带URL列表类型的推送参数;
所述媒体服务器通过MPD响应消息向所述客户端发送所述快速启动类型推送确认指令,其中,所述MPD响应消息至少包含MPD数据,以及所述快速启动类型推送确认指令。
8.根据权利要求7所述的方法,其特征在于,所述媒体服务器生成所述快速启动类型推送确认指令,包括:
所述媒体服务器根据所述客户端的预定数量和/或所述客户端的历史访问结果,确定所述快速启动类型推送确认指令中携带的所述URL列表类型的推送参数。
9.根据权利要求7所述的方法,其特征在于,所述媒体服务器通过MPD响应消息向所述客户端发送所述快速启动类型推送确认指令之后,所述方法还包括:
所述媒体服务器向所述客户端推送所述快速启动类型推送确认指令指示的所述初始化片段序列和/或所述媒体片段序列。
10.根据权利要求7所述的方法,其特征在于,所述MPD请求消息中携带的所述快速启动推送指令包含偏好参数信息,所述偏好参数信息包括如下任意一种或多种属性:分辨率范围、码率范围、媒体属性和语言。
11.根据权利要求7所述的方法,其特征在于,所述媒体服务器接收客户端通过MPD请求消息发送的快速启动类型推送指令,包括:
通过HTTP/2报文方式接收所述MPD请求消息,其中,所述HTTP/2报文的Accept-Push-Policy首部携带所述快速启动类型推送指令;或者,
通过WebSocket中DASH子协议的get_mpd消息接收所述MPD请求消息,其中,所述get_mpd消息的JSON键值对携带所述快速启动类型推送指令。
12.根据权利要求7所述的方法,其特征在于,所述媒体服务器通过MPD响应消息向所述客户端发送所述快速启动类型推送确认指令,包括:
通过HTTP/2报文方式发送所述MPD响应消息,其中,所述HTTP/2报文的Accept-Push-Policy首部携带所述快速启动类型推送确认指令;或者,
通过WebSocket中DASH子协议的new_mpd消息发送所述MPD响应消息,其中,所述new_mpd消息的JSON键值对携带所述快速启动类型推送确认指令。
13.一种流媒体快速启动装置,其特征在于,设置于客户端,包括:
访问引擎模块,用于通过MPD请求消息向媒体服务器发送快速启动类型推送指令,其中,所述快速启动类型推送指令用于指示所述媒体服务器推送初始化片段序列和/或媒体片段序列;
第一接收模块,用于接收所述媒体服务器返回的MPD响应消息,所述MPD响应消息至少包含MPD数据,以及快速启动类型推送确认指令,其中,所述快速启动类型推送确认指令携带URL列表类型的推送参数;
控制引擎模块,用于解析所述URL列表类型的推送参数,获取所述媒体服务器将要推送的所述初始化片段序列和/或所述媒体片段序列的信息。
14.根据权利要求13所述的装置,其特征在于,还包括:
第四确认模块,用于解析所述MPD数据,确定需要所述媒体服务器推送的所述初始化片段序列和/或所述媒体片段序列的信息;
第二接收模块,用于在获取的所述媒体服务器将要推送的所述初始化片段序列和/或所述媒体片段序列的信息等同于确定的需要所述媒体服务器推送的所述初始化片段序列和/或所述媒体片段序列的信息的情况下,接收所述媒体服务器推送的所述初始化片段序列和/或所述媒体片段序列。
15.一种流媒体快速启动装置,其特征在于,设置于媒体服务器,包括:
服务模块,用于接收客户端通过MPD请求消息发送的快速启动类型推送指令,其中,所述快速启动类型推送指令用于指示所述媒体服务器推送初始化片段序列和/或媒体片段序列;
生成引擎模块,用于根据将要推送的所述初始化片段序列和/或所述媒体片段序列,生成快速启动类型推送确认指令,其中,所述快速启动类型推送确认指令中携带URL列表类型的推送参数;
第一推送模块,用于通过MPD响应消息向所述客户端发送所述快速启动类型推送确认指令,其中,所述MPD响应消息至少包含MPD数据,以及所述快速启动类型推送确认指令。
16.一种流媒体快速启动系统,其特征在于,包括:
客户端,用于通过MPD请求消息向媒体服务器发送所述快速启动类型推送指令,并接收所述媒体服务器返回的MPD响应消息,所述MPD响应消息至少包含MPD数据,以及快速启动类型推送确认指令,其中,所述快速启动类型推送指令用于指示所述媒体服务器推送初始化片段序列和/或媒体片段序列,所述快速启动类型推送确认指令携带URL列表类型的推送参数,所述客户端解析所述URL列表类型的推送参数,获取所述媒体服务器将要推送的初始化片段序列和/或媒体片段序列的信息;
所述媒体服务器,与所述客户端通信,用于接收所述客户端通过所述MPD请求消息发送的所述快速启动类型推送指令,生成所述快速启动类型推送确认指令,通过所述MPD响应消息向所述客户端发送所述快速启动类型推送确认指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310749348.XA CN117596232A (zh) | 2016-05-25 | 2016-05-25 | 流媒体快速启动方法、装置和系统 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610355474.7A CN107438051A (zh) | 2016-05-25 | 2016-05-25 | 流媒体快速启动方法、装置和系统 |
CN202310749348.XA CN117596232A (zh) | 2016-05-25 | 2016-05-25 | 流媒体快速启动方法、装置和系统 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610355474.7A Division CN107438051A (zh) | 2016-05-25 | 2016-05-25 | 流媒体快速启动方法、装置和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117596232A true CN117596232A (zh) | 2024-02-23 |
Family
ID=60411049
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310749348.XA Pending CN117596232A (zh) | 2016-05-25 | 2016-05-25 | 流媒体快速启动方法、装置和系统 |
CN201610355474.7A Pending CN107438051A (zh) | 2016-05-25 | 2016-05-25 | 流媒体快速启动方法、装置和系统 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610355474.7A Pending CN107438051A (zh) | 2016-05-25 | 2016-05-25 | 流媒体快速启动方法、装置和系统 |
Country Status (2)
Country | Link |
---|---|
CN (2) | CN117596232A (zh) |
WO (1) | WO2017202373A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109756755A (zh) * | 2017-11-02 | 2019-05-14 | 华为技术有限公司 | 一种媒体播放方法,装置和系统 |
US11184665B2 (en) * | 2018-10-03 | 2021-11-23 | Qualcomm Incorporated | Initialization set for network streaming of media data |
CN111669665B (zh) * | 2019-03-05 | 2021-12-21 | 北京开广信息技术有限公司 | 媒体流的实时推送方法及服务器 |
CN112866325B (zh) * | 2019-11-28 | 2023-05-16 | 北京金山云网络技术有限公司 | 资源文件传输方法、装置、cdn中的上层及边缘节点 |
CN112995536A (zh) * | 2021-02-04 | 2021-06-18 | 上海哔哩哔哩科技有限公司 | 视频合成方法及系统 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7720983B2 (en) * | 2004-05-03 | 2010-05-18 | Microsoft Corporation | Fast startup for streaming media |
EP3968691A1 (en) * | 2011-10-21 | 2022-03-16 | FRAUNHOFER-GESELLSCHAFT zur Förderung der angewandten Forschung e.V. | Resource management concept |
US10616297B2 (en) * | 2012-07-09 | 2020-04-07 | Futurewei Technologies, Inc. | Content-specific identification and timing behavior in dynamic adaptive streaming over hypertext transfer protocol |
KR101639295B1 (ko) * | 2013-02-04 | 2016-07-13 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 스트리밍 미디어 데이터 송신 방법 및 장치 |
US9438654B2 (en) * | 2013-04-18 | 2016-09-06 | Futurewei Technologies, Inc. | Fragment interface into dynamic adaptive streaming over hypertext transfer protocol presentations |
CN104125516B (zh) * | 2013-04-24 | 2018-09-28 | 华为技术有限公司 | 媒体文件接收、媒体文件发送方法和装置及系统 |
GB2534057B (en) * | 2013-07-12 | 2017-01-11 | Canon Kk | Methods for providing media data, method for receiving media data and corresponding devices |
JP6419173B2 (ja) * | 2013-07-12 | 2018-11-07 | キヤノン株式会社 | プッシュメッセージ制御による適応型データストリーミング方法 |
-
2016
- 2016-05-25 CN CN202310749348.XA patent/CN117596232A/zh active Pending
- 2016-05-25 CN CN201610355474.7A patent/CN107438051A/zh active Pending
-
2017
- 2017-05-25 WO PCT/CN2017/086012 patent/WO2017202373A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2017202373A1 (zh) | 2017-11-30 |
CN107438051A (zh) | 2017-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5642779B2 (ja) | クライアント制御セッションレス適応を促進する方法および装置 | |
US8000339B2 (en) | Method and system for transparently transcoding a multicast stream | |
US9880806B2 (en) | Media playback processing and control method, apparatus, and system | |
CN108063769B (zh) | 一种内容服务的实现方法、装置及内容分发网络节点 | |
US20150271233A1 (en) | Method and apparatus for dash streaming using http streaming | |
EP2805471B1 (en) | Method and apparatus for enabling pre-fetching of media | |
EP2493191B1 (en) | Method, device and system for realizing hierarchically requesting content in http streaming system | |
CN110933517B (zh) | 码率切换方法、客户端和计算机可读存储介质 | |
US8468262B2 (en) | Method and apparatus for updating http content descriptions | |
US10237322B2 (en) | Streaming content delivery system and method | |
CN117596232A (zh) | 流媒体快速启动方法、装置和系统 | |
US20100312828A1 (en) | Server-controlled download of streaming media files | |
CN102577309A (zh) | 用于动态媒体文件流送的系统、方法和装置 | |
EP3110098A1 (en) | Mobile terminal and method for achieving sharing of streaming media file of cloud based on dlna | |
US10044831B2 (en) | Method and apparatus for transmitting messages to a dash client | |
US20150271226A1 (en) | Transport accelerator implementing a multiple interface architecture | |
CN104320417A (zh) | 移动终端和web终端之间互连及流传输和流媒体播放的方法 | |
US20080275997A1 (en) | System and method for flow control in web-based video editing system | |
JP2017517221A (ja) | Httpストリーミングを使用するdashストリーミングのための方法及び装置 | |
US20150172357A1 (en) | Method for optimising downloading of data | |
CN107040615B (zh) | 媒体分片的下载方法、终端和计算机可读存储介质 | |
CN106936808B (zh) | Http流媒体传输方法及装置 | |
KR100979873B1 (ko) | 무선망을 이용하여 사용자의 이동통신 단말기에 개인화된광고를 제공하는 방법 및 장치 | |
JP2005108057A (ja) | コンテンツ取得システム、ブラウザ装置及びそれに用いるコンテンツダウンロード方法並びにそのプログラム | |
WO2007113716A2 (en) | Data communication via ip network and broadcast network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |