· wm · 知识  · 6 min read

M3U8 和 HLS 协议到底是什么?为什么现在的在线视频都在用它?

如果你经常在网上看视频,或者使用过我们的在线 M3U8 播放器,那你一定对“M3U8”这个词不陌生。很多站长和技术人员也整天把它挂在嘴边。那么,M3U8 到底是个什么神仙格式?为什么不知不觉间,几乎所有的主流视频网站、直播平台都开始抛弃传统的 MP4,转而拥抱 M3U8 了呢?

今天,我们就用最通俗易懂的语言,带你扒一扒 M3U8 和它背后的 HLS 协议的老底。


一、 什么是 M3U8?它是一段视频吗?

首先纠正一个最大的误区:M3U8 本身根本不是视频文件!

如果你用记事本强行打开一个 .m3u8 文件,你会发现里面全是像这样的纯文本:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXTINF:9.009,
http://media.example.com/segment1.ts
#EXTINF:9.009,
http://media.example.com/segment2.ts
#EXTINF:3.003,
http://media.example.com/segment3.ts
#EXT-X-ENDLIST

看明白了吗?M3U8 只是一个“目录”或者说“播放列表”(Playlist)

它里面记录的,是一段长视频被切成了无数个几秒钟的小碎块(通常是 .ts 格式)后,每一个小碎块在网络上的具体下载地址。当播放器拿到这个 M3U8 目录时,它会按顺序顺藤摸瓜,把那些 .ts 碎片一个个下载下来,并无缝拼接在一起放给你看。

所以,M3U8 就是一张寻宝图,真正的宝藏是那些分散存放的 .ts 视频切片。


二、 幕后大佬:HLS 协议

M3U8 只是个播放列表,而真正制定这套“把视频切碎了播”的规则的幕后大佬,是苹果公司发明的 HLS(HTTP Live Streaming)协议

早年间,大家在网上看视频都是直接下载一个巨大的 .mp4 文件。这种方式有个致命缺点: 如果一个电影有 2 个 GB,你才刚看 5 分钟就觉得没意思关掉了,但这时候你的浏览器可能已经在后台疯狂下载了 500MB 的数据。这对你来说浪费了流量,对视频网站的老板来说,更是白白烧了昂贵的服务器带宽钱!心都在滴血啊!

于是苹果公司站了出来,搞出了 HLS 协议,也就是 M3U8 的底层逻辑。


三、 为什么大家都爱用 M3U8 (HLS)?

比起传统的 MP4 单文件播放,M3U8 简直是视频行业的一次降维打击。它有三大无可取代的优势:

1. 节省带宽,按需加载

刚才说了,MP4 容易过度下载。而 M3U8 模式下,播放器只会下载你当前正在看的那几秒钟,以及接下来十几秒钟的切片作为缓冲。你看多少,它下多少。你一关掉网页,下载立刻停止。这为视频网站节省了海量的带宽成本。

2. 完美适应你的网速(自适应码率)

不知道你有没有发现,在看 YouTube 或者 B 站时,如果你的网速突然变慢,视频不会直接卡死,而是画面会突然变糊(分辨率降低);等网速恢复了,画面又变得高清了。 这就是 M3U8 的功劳!在高级的 M3U8 列表里,不仅有 1080P 的切片目录,还有 720P、480P 的切片目录。播放器会像老司机一样,实时监测你的网速,在一档、二档、三档之间灵活来回切换切片源,保证你“永远不卡顿”。

3. 直播与点播的终极统一

以前做网页视频,直播要用一套复杂的技术(比如 RTMP/FLV),点播又要用另一套。而 HLS 协议牛就牛在,它把直播和点播统一了。

  • 点播:M3U8 列表里写着 #EXT-X-ENDLIST,告诉你视频切片到此为止,播完拉倒。
  • 直播:M3U8 列表里没有结束标志,服务器每隔几秒钟就往这个列表里塞入新的切片地址。播放器就像追更小说一样,不断刷新 M3U8 获取最新的切片,这就实现了直播。

四、 总结

M3U8 并不是什么黑科技,它只是一本聪明的“视频碎片说明书”。它通过把庞大的视频化整为零,完美解决了加载慢、浪费流量、网络波动卡顿等痛点。这也是为什么今天无论是看在线大片,还是看游戏直播,底层全都是它在默默为你服务的原因。

下次再遇到 M3U8 链接,把它们丢进我们的在线播放器时,你也可以在心里默默对这些被切成成百上千块的 .ts 小兄弟们说一声:辛苦了!

返回博客