目录
RTSP和RTMP是基于会话的流媒体协议,HLS(Http Live Streaming)、HDS(Http Dynamic Streaming)和Smooth Streaming(HSS)则是基于HTTP的协议。
协议的原理是将点播所需的多媒体文件或直播的视频流,切分成许多小块的文件,让客户端基于HTTP进行下载,当播放时,客户端需下载包含metadata信息的M3U8文件(也称作索引文件、Playlist或Manifest文件),根据M3U8文件的内容,同时依据网络条件选择不同码率的内容进行播放。
一个点播文件的M3U8示例如下
#EXTM3U、#EXT-X-TARGETDURATION等是M3U8文件规定的tag,其中包括原有的定义和由苹果扩展的tag,这个点播文件一共21s,分为3个TS的Segment。

此例中,协议希望客户端规律地访问服务器(例如7.975s访问一次)以观察是否有Segment持续被更新,而Segment的文件名也按顺序增加。


HLS协议的一大特点在于,将以往RTSP、RTMP等协议中实现复杂的多码率、多音轨的音视频流变得容易,并可以明晰地表达、理解和优化,在协议中规定需要传递给客户端的信息可以由Master和Alternative两种M3U8来表达。
HLS协议支持在同一视频流中提供不同编码器的音频或视频流供客户端选择,于播放会话中,客户端根据自己的需求,切换码率进行下载播放。同一机制也可用于多语言的支持,对不同语言分提供不同的音轨。为支持多码率、多语言或不同Codec的切换,在节目制作时,应保证不同码率的流中,所有视频关键帧其时间戳完全对齐,否则客户端难以正确工作。
Tag功能
首先,早期的HLS流中大多使用固定长度为10s的Segment文件,但在启动时间和直播延迟上并不令人满意,现今常见的Segment长度根据不同公司的需求被设置成1~6s不等,在同一音视频流的不同码率间保持一致。
苹果公司于2010年即将HLS协议提交为RFC,随后的多年中对其不断修订,添加新的功能,但正因此,使用者需要注意协议的版本,较旧的设备或客户端可能不支持某些新的功能,需要慎用。
HDS和HSS
HDS由Adobe自己的Flash Media Server支持,其文件格式为FLV、F4V和MP4,索引文件格式为F4M,支持直播和时移电视。

多码率的ISM文件示例

No comments yet.