m3u8 文件格式

介绍

M3U8 文件,是 M3U 文件格式的一种扩展,支持 UTF-8 编码。M3U8 是一种基于文本的格式,用于存储媒体文件的元数据和位置信息。

作用

用于流媒体传输的索引文件格式,通常与 HTTP Live Streaming (HLS) 协议一起使用。

HLS 是一个由苹果公司提出的基于 HTTP 的流媒体网络传输协议。

M3U8 文件通常包含媒体播放列表,用于指示媒体播放器如何获取和播放一系列较小的媒体片段(通常是 .ts 格式的文件)。

这种格式常用于视频点播 (VOD) 和实时流媒体服务。

使用场景

  • 视频点播 (VOD): 在线视频网站上的电影或剧集。
  • 实时流媒体: 直播电视节目、体育赛事、新闻广播等。
  • 多码率适应: 提供不同比特率的流,以适应不同的网络条件。

格式解释

#EXTM3U // 文件头部,表示这是一个 M3U 文件
#EXT-X-VERSION:3 // 指定 HLS 协议版本
#EXT-X-TARGETDURATION:10 // 指定每个媒体片段的最大持续时间。单位是s
#EXT-X-KEY:METHOD=AES-128,URI="" // 若 ts 视频片段进行了加密,则需配置该字段指定加密解析方式。例如该字段指定了加密算法为 AES-128,密钥通过请求 URI 获取,以用于解密后续解析 ts 文件。
#EXT-X-MEDIA-SEQUENCE:0 // 指定媒体序列的第一个片段的编号。对于视频点播资源该字段一般是 0,但是在直播场景下,这个序列号标识直播段的起始位置。
#EXTINF:10.0, // 描述接下来的媒体片段的持续时间 每个 #EXTINF 行后面跟着一个 URI,指向实际的媒体片段文件(.ts格式文件)
0.ts    // 媒体文件,是.ts格式(类似.mp4格式)
#EXTINF:10.0,
1.ts
#EXTINF:7.216,
2.ts
#EXT-X-ENDLIST // M3U8 文件结束符

参考:
https://www.jianshu.com/p/e97f6555a070
https://juejin.cn/post/7418086006116057107