引言

M3U8是Unicode(未编码)版本的M3U,用UTF-8编码.“M3U” 和 “M3U8” 文件都是苹果公司使用的 HTTP Live Streaming(HLS) 协议格式的基础,这种协议格式可以在 iPhone 和 Macbook 等设备播放。

M3U8其实就是HLS协议部分内容,而HLS是一个有苹果公司提出基于HTTP的流媒体网络传输协议

HLS工作原理

HLS的工作原理是把整个流分成一个个小的基于HTTP的文件来下载,每次只下载一些.当媒体流正在播放时,客户端可以选择从许多不同设备用源中以不同的速率下载同样的资源,运行立媒体会话适应不用的数据速率.在开始一个流媒体会话是,客户端会下载一个包含元数据的extended M3U(M3U8) playlist文件,HLS可以穿过任何允许HTTP数据通过的防火墙或者代理服务器.他很容易使用内容分发网络来传输流媒体

简言之,HLS是新一代流媒体传输协议,其基本实现原理将一个大的媒体文件进行分片,将改分片分片资源路径记录于m3u8文件内,其中附带一些额外描述,用于提供给客户端.客户端一句该m3u8文件即可获取对应的媒体资源进行播放

客户端获取HLS流文件,主要就是对m3u8文件进行操作.

M3U8文件简介

m3u8文件实质上是一个播放列表(playlist),其可能是一个媒体播放列表(Media Playlist),
或者是一个主列表(Mster playlist).但无论哪种播放列表,其内部文字使用的都是utf-8编码

当m3u8文件作为媒体流播放列表(Media playlist)时,其内部信息记录的是一系列媒体片段资源,顺序播放该片段资源,即可完整展示多媒体资源

#EXTM3U
#EXT-X-TARGETDURATION:10

#EXTINF:9.009,
http://media.example.com/first.ts
#EXTINF:9.009,
http://media.example.com/second.ts
#EXTINF:3.003,
http://media.example.com/third.ts

对于点播来说,客户端秩序按顺序下载上述片段资源,一次进行播放即可.对于直播来说,客户端需要定时重新请求该m3u8文件,看是否有新的片段数据需要进行下载并播放