继 DASH 被标准化之后,业内一些主导的公司和机构欲推进 DASH 工业化进程。在 2012 年 9 月,DASH-IF 正式成立,它基于 MPEG-DASH 标准规定了具体解决方案中的互 通性原则,意在解决媒体、不同设备和应用到市场后复杂的实际问题,为今后 DASH 的商业化发展奠定基础。
MPEG-DASH 推出以来,在工业界得到了广泛的应用,然而应用场景多限于视频点 播的服务场景,在视频直播服务中的应用还非常有限。随着 HTTP/2 标准的公布,通 过利用 HTTP/2 Server Push 特性为解决 DASH 在直播场景中的问题提供了新的研究思 路,MPEG-DASH P6 DASH with Server Push and WebSockets 提上了标准化的进程, 并于 2016 年 4 月发布 CD V1[3],本文将主要基于该版本 CD 介绍 HTTP/2 动态直播流 媒体技术的相关标准研究工作。
2。2 推送策略
HTTP/2 动态自适应流媒体通过利用服务器推送(Server Push)技术为直播延迟问 题提供了解决思路。在所述 HTTP/2 动态直播系统中,服务器端会配置一种或多种推 送策略(Push Policy),客户端与服务器端通过交换片段请求/响应消息,协商确定会 话中采取的推送策略,譬如:基于片段推送策略(K-PUSH)以及基于时间推送策略
(T-PUSH)等,驱动流媒体传输会话。所述片段请求/响应消息可通过 WebSocket 或 HTTP/2 等全双工 HTTP 协议发送。在接收到来自客户端的请求消息后,服务器将包含 片段数据的响应消息发送到客户端;同时,客户端也可以通过在片段请求消息指定推 送指令,发起推送会话,在一次推送会话中,服务器将一个或多个片段文件推送到客 户端。从而缓解了因低延迟限制带来的 HTTP 请求负载膨胀的问题。
所述片段请求消息由片段 URL(segment_uri)和推送指令(push_directive)组成, 用于客户端请求片段和发起推送会话。所述 push_directive 由推送类型和推送参数 组成,用于客户端指定推送策略,如 T-PUSH 和 K-PUSH,与服务器协商所需推送的片 段序列,发起推送会话。 来*自-优=尔,论:文+网www.youerw.com
2。2。1 基于时间的推送策略
所述基于时间推送策略(T-PUSH)可通过 push-time 推送类型的推送指令指定,相 应的推送参数为 T,用于发起推送会话,请求服务器推送起始呈现时间在参数
segment_uri 对应片段的起始呈现时间与参数 T 之间的片段序列。客户端将包含参数 segment_uri 和由 push-time 与 T 组成的推送指令的片段请求消息发送至服务器。服 务器接收到上述消息后,首先发送包含 segment_uri 对应片段的响应消息;然后需解 析 MPD 以获取媒体呈现时间线,并将 segment_uri 与 T 映射至媒体呈现时间线上,获 取相应呈现区间的片段序列,并向客户端推送相应的片段序列。
2。2。2 基于片段的推送策略
所述基于片段推送策略(K-PUSH)可通过 push-next 推送类型的推送指令指定,相 应的推送参数为 K,用于发起推送会话,请求服务器推送以参数 segment_uri 对应片 段的下一个片段作为起始片段的连续 K 个片段。客户端将包含参数 segment_uri 和由 push-next 与 K 组成的推送指令的片段请求消息发送至服务器。服务器接收到上述消 息后,首先发送包含 segment_uri 对应片段的响应消息;然后需解析 MPD 以获取 segment_uri 对应片段所在的片段列表,获取以参数 segment_uri 对应片段的下一个 片段作为起始片段的连续 K 个片段,并向客户端推送相应的片段序列。