M3U8 格式:为什么直播回放都用这个格式?

发布时间 2023-12-15 22:32:22作者: 李若盛开

M3U 文件是一种纯文本文件,可以指定一个或多个多媒体文件的位置。它的设计初衷是为了播放音频文件,但后来越来越多的用于播放视频文件列表。而 M3U8 则是用 UTF-8 编码的 M3U。M3U、M3U8 文件都是苹果公司使用的 HLS(HTTP Live Streaming) 协议的基础。

在实际应用场景中,由于 HLS/M3U8/TS 这套方案在控制直播延时上不太理想,所以一般实时直播场景不会选择使用 M3U8 媒体格式。但是,对于直播回放这种场景,由于使用 M3U8/TS 这套方案能够在直播过程中就持续生成和存储切片,所以直播回放基本上都会选择 M3U8 媒体格式。

M3U8 格式概览
M3U8 文件其实是一个播放列表,这个列表可能是一个媒体播放列表(Media Playlist),也可能是一个主播放列表(Master Playlist)。但无论是哪种播放列表,其内部文字使用的都是 utf-8 编码。

1、媒体播放列表
当 M3U8 文件作为媒体播放列表(Meida Playlist)时,其包含的信息记录的是一系列多媒体资源切片,顺序播放这些切片,即可完整呈现多媒体资源。

第一行的 #EXTM3U 表示文件格式。第二行的 #EXT-X-TARGETDURATION:10 表示后面的各个资源切片时长都小于或等于 10 秒。接下来,我们看到有 3 个资源切片,时长分别是 9.009 秒、9.009 秒、3.003 秒。

在点播时,客户端首先下载 M3U8 文件,然后按照 M3U8 列表下载各个资源切片依次播放即可。在直播时,客户端则需要定时重新请求 M3U8 文件,从而检查是否有新的媒体切片需要进行下载播放。所有的这些数据都通过 HTTP 协议传输。

2、主播放列表
当 M3U8 文件作为主播放列表(Master Playlist)时,其包含的信息是同一个媒体资源的多路流资源列表。不同的流可能有着不同的码率,不同的格式,不同的分辨率。不同的流也可以指定不同语言的音频,不同视角的视频等等。

客户端应该根据网络状况来选择合适的流来播放,也应该根据用户的偏好来选择合适的语言和视角的流来播放。

 

M3U8的优点

 

 

1)多码率适配:M3U8格式可以实现多码率的适配,根据网络带宽,客户端会自动选择适合自己码率的文件进行播放,保证视频流的流畅。这种自适应码率流播对于移动设备网络状况不稳定的情况下保障流畅播放非常有帮助。

 

2)降低源服务器负载压力:M3U8的特点是将流媒体切分为若干TS片段,并通过一个扩展的M3U列表文件将这些TS片段集中起来供客户端播放器接收。相比使用RTSP协议,M3U8的分发过程不需要额外使用任何专门软件,只需使用普通的网络服务器即可,大大降低了CDN边缘服务器的配置要求,可以使用任何现成的CDN。

 

3)支持非实时视频:M3U8格式同样适用于非实时视频。通过使用HTTP协议的单个MP4格式的视频文件,客户端可以根据需要进行播放,而无需使用额外的专门软件。

 

总结:

M3U8是一种常见的流媒体格式,以文件列表的形式存在,支持直播和点播。它是一种UTF-8编码格式的M3U文件,用于记录索引的纯文本文件。M3U8格式具有多码率适配、降低源服务器负载压力和支持非实时视频等优点。通过M3U8格式,可以实现流畅的在线视频播放体验。打开M3U8文件时,播放软件并不是直接播放它,而是根据它的索引找到对应的音视频文件的网络地址进行在线播放。