# m3u8 是什么？

作者：星苒鸭（xingranya）
发布日期：2026-02-02
更新时间：2026-02-02
原文：https://blog.xran.uk/m3u8/

你可能在处理视频链接时遇到过 `.m3u8` 后缀的文件，但它到底是什么呢？这篇文章将为你简单介绍 M3U8 文件格式及其工作原理。

### M3U8：流媒体的播放列表

M3U8 文件本质上是一个**播放列表**，而不是一个实际的媒体文件。它的全称是 "M3U UTF-8"，意味着它是一个使用 UTF-8 编码的 M3U 文件，这让它可以支持包含各种语言的元数据。

简单来说，M3U8 文件是一个纯文本文件，它不包含视频或音频数据，而是提供了一个“地图”，告诉播放器去哪里获取媒体内容、以什么顺序播放。

### 主要用途：HLS 流媒体

M3U8 是苹果公司开发的 **HTTP Live Streaming (HLS)** 协议的核心组成部分。HLS 的工作方式是将一个完整的视频流分割成许多小的媒体片段（通常是 `.ts` 格式的文件）。M3U8 文件的作用就是记录这些媒体片段的地址和播放顺序。

这种设计的最大好处是**自适应比特率流媒体 (Adaptive Bitrate Streaming)**。M3U8 文件可以同时提供多种不同清晰度（比特率）的媒体流信息。播放器可以根据用户当前的网络速度，自动选择最合适的版本进行播放，从而在保证流畅性的前提下提供最佳画质，有效减少卡顿和缓冲。

### M3U8 文件结构示例

一个基础的 M3U8 文件看起来像这样。你可以看到，它是由一系列以 `#` 开头的标签（Tags）和媒体片段的链接组成的。

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

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

#EXT-X-ENDLIST
```

**关键标签解释:**

- `#EXTM3U`: 文件头，必须是文件的第一行，表明这是一个扩展 M3U 文件。
- `#EXT-X-TARGETDURATION`: 指定每个媒体片段的最大时长（秒）。
- `#EXTINF`: 描述紧随其后的媒体片段的时长。
- `#EXT-X-ENDLIST`: 文件尾，表示播放列表结束。

### 总结

总而言之，M3U8 是现代网络流媒体（尤其是直播和视频点播）中一种至关重要的格式。它通过提供一个灵活的、可扩展的播放列表，实现了流畅、高质量的自适应流媒体体验。
