← 返回学习中心

【音视频】M3U8与HLS详解

M3U8 和 HLS 是音视频流媒体领域中常见的技术,广泛应用于在线视频点播(VOD)和直播(Live)场景。M3U8 是一种基于文本的播放列表文件格式,主要用于描述媒体文件的位置和顺序,而 HLS(HTTP Live Streaming)是一种流媒体传输协议,由 Apple 公司提出。HLS 使用 M3U8 文件来管理和播放流媒体内容,能够适应不同的网络环境,实现高质量、低延迟的流媒体传输。

M3U8详解

M3U8 是什么

M3U8 是一种基于文本的文件格式,用于描述音视频文件的播放列表。它是 M3U 文件的一种扩展,M3U 文件主要用于音频播放列表,而 M3U8 则用于音视频流媒体播放。M3U8 文件使用 UTF-8 编码,通常用于 HTTP Live Streaming (HLS) 协议中,作为媒体分片的索引文件。

M3U8 文件的组成部分

一个典型的 M3U8 文件包含多个标签,每个标签都以井号(#)开头。以下是 M3U8 文件的主要组成部分:

文件头

基本标签

可选标签

示例 M3U8 文件

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0

#EXTINF:10.0,
http://example.com/segment0.ts
#EXTINF:10.0,
http://example.com/segment1.ts
#EXTINF:10.0,
http://example.com/segment2.ts

#EXT-X-ENDLIST

以上示例展示了一个简单的 M3U8 文件,其中包含版本信息、目标时长、媒体序列号和三个媒体分片。每个分片的时长为 10 秒,URL 指向实际的媒体文件位置。最后,#EXT-X-ENDLIST 标签表示播放列表的结束。

HLS(HTTP Live Streaming)视频封装格式

HLS(HTTP Live Streaming)是由 Apple 公司开发的一种流媒体传输协议,广泛用于直播和点播视频流的传输。HLS 协议将视频文件分割成一系列较小的媒体文件(通常称为分片),通过 HTTP 进行传输,并使用 M3U8 播放列表文件来管理这些分片。

HLS 视频封装格式的主要组成部分

M3U8 播放列表文件

媒体分片

示例 HLS 主播放列表文件(Master Playlist)

#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=1280000,RESOLUTION=640x360
http://example.com/low.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2560000,RESOLUTION=1280x720
http://example.com/mid.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=5120000,RESOLUTION=1920x1080
http://example.com/high.m3u8

示例 HLS 媒体播放列表文件(Media Playlist)

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0

#EXTINF:10.0,
http://example.com/segment0.ts
#EXTINF:10.0,
http://example.com/segment1.ts
#EXTINF:10.0,
http://example.com/segment2.ts

#EXT-X-ENDLIST

HLS 封装格式的特点

M3U8与HLS的关系

M3U8 和 HLS 之间的关系可以简单理解为:M3U8 是 HLS 协议中使用的文件格式,用于描述媒体分片的位置和顺序,而 HLS 是整个流媒体传输协议体系。

简单来说:

总结

M3U8 和 HLS 是现代视频流媒体技术的重要组成部分。M3U8 作为播放列表文件格式,提供了媒体分片的索引和管理功能;而 HLS 作为完整的传输协议,实现了自适应码率、分段传输等核心功能。两者结合,使得视频流媒体能够适应不同的网络环境,提供稳定、流畅的播放体验。