简介
M3U8 是Unicode 版本的M3U,用UTF-8 编码。"M3U" 和"M3U8" 文件都是苹果公司使用的HTTP Live Streaming(HLS) 协议格式的基础,这种协议格式可以在 iPhone 和Macbook 等设备播放。
上述文字定义来自于维基百科。可以看到,m3u8 文件其实是HTTP Live Streaming(缩写为 HLS) 协议的部分内容,而HLS 是一个由苹果公司提出的基于HTTP 的流媒体网络传输协议。
HLS 的工作原理是把整个流分成一个个小的基于HTTP 的文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。在开始一个流媒体会话时,客户端会下载一个包含元数据的 extended M3U (m3u8) playlist文件,用于寻找可用的媒体流。
HLS 只请求基本的HTTP 报文,与实时传输协议(RTP)不同,HLS 可以穿过任何允许HTTP 数据通过的防火墙或者代理服务器。它也很容易使用内容分发网络来传输媒体流。
简而言之,HLS 是新一代流媒体传输协议,其基本实现原理为将一个大的媒体文件进行分片,将该分片文件资源路径记录于 m3u8 文件(即playlist)内,其中附带一些额外描述(比如该资源的多带宽信息···)用于提供给客户端。客户端依据该 m3u8 文件即可获取对应的媒体资源,进行播放。
因此,客户端获取HLS 流文件,主要就是对 m3u8 文件进行解析操作。
那么,下面就简单介绍下 m3u8 文件。
M3U8 文件简介
m3u8 文件实质是一个播放列表(playlist),其可能是一个媒体播放列表(Media Playlist),或者是一个主列表(Master Playlist)。但无论是哪种播放列表,其内部文字使用的都是 utf-8 编码。
当m3u8 文件作为媒体播放列表(Meida Playlist)时,其内部信息记录的是一系列媒体片段资源,顺序播放该片段资源,即可完整展示多媒体资源。其格式如下所示:
#EXTM3U #EXT-X-TARGETDURATION:10 #EXTINF:9.009, http://media.example.com/