关于苹果HLS协议的解读和说明

1官方文档

官方文档地址:

HTTP Live Streamingdraft-pantos-http-live-streaming-11

http://tools.ietf.org/html/draft-pantos-http-live-streaming-11

 

此文档共计发布了11个版本

 

本系统自2012年发布,当时采用的是 No.08版,之后跟随新版做了部分修订,主体保持不变。

http://tools.ietf.org/html/draft-pantos-http-live-streaming-08

 

而在HLS官方文档的更新中,做到了前向兼容,没有出现版本升级造成旧的TAG无法使用的问题。

为了保证老版本的IOS对HLS的支持,本系统当前采用了HLS V2。

例如:

Durations MUST be integers if the protocol version of the Playlist fileis less than 3.

2 本系统提供的内容示例

本系统提供的主索引(manifest)如下:

 

http://xxxx/main.m3u8

 

#EXTM3U

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=204800, RESOLUTION=240x180

/xxxx/200.m3u8

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=460800, RESOLUTION=480x360

/xxxx/450.m3u8

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=870400, RESOLUTION=480x360

/xxxx/850.m3u8

 

对于4月1日之前的视频,提供的内容如下:

http://xxxx/main.m3u8

 

#EXTM3U

#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=204800

/xxxx/200.m3u8

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=460800

/xxxx/450.m3u8

#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=870400

/xxxx/850.m3u8

 

两者的区别在于:

今年4月之后新生产的视频补充了一个属性:RESOLUTION,以视频的分辨率信息

 

3 关键TAG说明:

以下将对manifest的关键TAG以官方标准文档为基础,做一个中文说明以及补充。

涉及到的TAG有:

EXTM3U

EXT-X-STREAM-INF

PROGRAM-ID

BANDWIDTH

RESOLUTION

<URI>

 

3.1 EXTM3U

请参阅[Page 6]

仅仅是为了对苹果传统的播放列表m3u文件做一个区别。约定俗成即可。

 

3.2 EXT-X-STREAM-INF

请参阅[Page 14]

该标签仅仅对跟随它的URI所指定的多媒体资源有效。

3.3 PROGRAM-ID

请参阅[Page 14]

 

以上文的示例说明:

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=204800, RESOLUTION=240x180

 

该TAG对应的是一个整数,这个整数可以任意指定。本系统默认指定1. 如无需要,可以直接忽略。

 

3.4 BANDWIDTH

请参阅[Page 14]

表达码率信息。

以上文的示例说明:

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=204800, RESOLUTION=240x180

需要注意两点:

首先,换算关系 bits/second 以及 kilo-bits/second。需要获得我们日常所说的200码率、450码率,需要 ${ BANDWIDTH } / 1024。如:204800 / 1024 = 200

第二,本系统的输出确保必须带有该TAG。这也是文档所要求的,亦即MUST

 

特别说明:HLS标准协议严格区分了 MUST MAY / SHOULD的区别。

在通常情况下,缺失MUST TAG会造成manifest无法正常解析,视频无法播放。

而缺失MAY TAG or SHOULD TAG不会对IOS内核的播放器造成影响。但是对于ANDROID等non-native media player可能会出现问题。

 

3.5 RESOLUTION

请参阅[Page 14]

提供视频解析率信息。

其格式如下定义:

 

如:RESOLUTION=240x180

此TAG不是必要的,而且在老视频的manifest中并不提供,如无需要,可以直接忽略。本系统提供该TAG出于其他需要。

 

此标签的提供并不对文档所提及的3.4.10.1. Alternative Renditions造成影响。

参见[Page 15]

3.6<URI>

HLS并未对URI的格式做任何说明,

至于URI的语法等可参考如下链接;

W3C 《URIs, URLs, andURNs: Clarifications and Recommendations 1.0》

http://www.w3.org/TR/uri-clarification/

或者更为详细的:

5.2. Resolving Relative References toAbsolute Form [Page 20]

http://www.ietf.org/rfc/rfc2396.txt

 

示例:

(取自http://en.wikipedia.org/wiki/Uniform_resource_identifier示例内容)

 

亦即,HLS协议对URI并无要求或者遵循RFC2396即可。

 

关于URI的补充说明:

Adobe的HDS协议对URI做了硬性的规定:

http://sourceforge.net/apps/mediawiki/osmf.adobe/index.php?title=Flash_Media_Manifest_%28F4M%29_File_Format

详见<media>说明:

亦即,HDS对URI的处理逻辑是:如果url非绝对路径,那么,它必须与baseURL相关(如果指定)或者与manifest文件同一个目录。

对比可见,HLS并不强制要求路径不能以”/”开头,client开发过程中,最好严格依照标准协议处理,对其他的口头消息来源不予采信。


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值