HLS 播放器:線上播放 HLS 與 m3u8 串流
HLS 是當今網路直播與隨選影片的主流技術,YouTube、Netflix、各大電視台直播都採用它。這頁除了提供可直接使用的線上播放器,也會說明 HLS 的原理、為什麼不同瀏覽器行為不一致,以及實務上常見的限制。
操作步驟
-
取得 HLS 播放清單網址
HLS 串流的入口網址通常以
.m3u8結尾。若你是開發者,這個網址就是你的 Master Playlist 位置。 -
貼進播放器
把網址貼入上方輸入框並送出。播放器會解析播放清單,判斷是直播或隨選、單一畫質或多畫質。
-
依需求調整
多畫質來源可手動切換解析度;直播可觀察緩衝狀況;若需背景播放,可開啟子母畫面。
HLS 的運作原理
HLS 的核心概念是「把大檔案切成小片段,用一般的 HTTP 傳輸」。這樣做的好處是不需要特殊的串流伺服器,一般的網頁伺服器或 CDN 就能勝任。
完整的播放流程是這樣:
- 取得播放清單:播放器先下載
.m3u8檔,得知有哪些畫質、每個片段的位置與長度。 - 抓取片段:依清單順序下載
.ts(或 fMP4)片段,並放入緩衝區。 - 解碼播放:把片段解碼後連續播放,使用者看到的就是完整影片。
- 動態調整:播放器持續監測網速,在下一段切換到更適合的位元率,這就是「自適應位元率」。
因為片段是獨立的,即使某一小段下載失敗,也只會影響那幾秒,不會讓整個播放中斷 —— 這是 HLS 在網路不穩定時仍能運作的關鍵。
自適應位元率(ABR)如何選擇畫質
你可能注意到:看影片時畫質會自己變好或變差。這不是錯覺,而是 ABR 演算法在運作。
| 判斷依據 | 行為 |
|---|---|
| 下載速度 | 最近幾個片段的實際下載速度,是最主要的判斷依據。 |
| 緩衝區水位 | 緩衝的影片秒數。水位低時會主動降畫質,避免播放中斷。 |
| 裝置效能 | 部分播放器會考慮解碼能力,老舊裝置即使網速夠也可能維持較低畫質。 |
實務上的取捨是:寧可畫質降一點,也不要卡頓。如果你希望固定畫質(例如要錄影存證),可以在播放器中手動鎖定解析度。
瀏覽器與裝置相容性
這是 HLS 最容易被誤解的地方:同一個網址,在 iPhone 可以播,在電腦 Chrome 卻不行。原因如下表。
| 環境 | HLS 支援方式 |
|---|---|
| Safari / iOS | 原生支援,直接交給 HTML5 video 播放,效率最好。 |
| Chrome / Edge / Firefox | 原生不支援,需透過 hls.js 等程式庫轉換後播放。 |
| Android Chrome | 同樣走 hls.js 路線;部分機型對長時間播放記憶體較敏感。 |
| Smart TV / 機上盒 | 多數支援 HLS,因為它已是業界通用標準。 |
本頁的播放器會自動偵測瀏覽器能力:Safari 直接播,其他瀏覽器自動載入解析程式庫。你不必手動切換。
直播與隨選影片的差異
HLS 同時支援直播與隨選,但兩者在播放清單上有明確差異,理解後有助於排查問題。
| 類型 | 特徵 |
|---|---|
| 隨選(VOD) | 播放清單結尾有 #EXT-X-ENDLIST 標記,代表影片已完整,可任意跳轉時間軸。 |
| 直播(Live) | 沒有 ENDLIST 標記,清單會持續更新。通常無法往前跳轉超過緩衝範圍。 |
如果你發現「時間軸不能拖動」,很可能就是直播來源 —— 這是正常現象,不是播放器故障。
常見問題
HLS 跟 M3U8 是同一個東西嗎?
不完全相同。HLS(HTTP Live Streaming)是一套「串流協定」,規範影片如何切割、傳輸與播放;M3U8 則是 HLS 使用的「播放清單檔案格式」。打個比方:HLS 是交通規則,M3U8 是路線圖。你播放時需要的是 M3U8 網址,而背後運作遵循的是 HLS 協定。
為什麼 Safari 能播、Chrome 卻不行?
HLS 是 Apple 提出的協定,因此 Safari 與 iOS 原生支援,不需額外程式庫。Chrome、Edge、Firefox 則需要透過 JavaScript 程式庫(如 hls.js)把 HLS 轉成瀏覽器看得懂的格式再播放。本頁的播放器已自動處理這個差異,你在 Chrome 上也能正常播放。
HLS 播放器可以播直播嗎?
可以。直播與隨選影片在 HLS 上的差異在於:直播的播放清單會不斷更新(沒有 #EXT-X-ENDLIST 結尾標記),播放器需持續抓取新片段;隨選影片則有明確結尾。本播放器兩種都支援。若直播延遲偏高,通常與來源設定的片段長度有關。
HLS 跟 DASH 有什麼不同?
兩者都是自適應位元率(ABR)串流技術,原理相似,主要差在生態系:HLS 由 Apple 主導,使用 .ts 或 fMP4 片段與 m3u8 清單,在 Apple 裝置與多數平台上通用;DASH 是開放標準(MPEG-DASH),使用 .mpd 清單,在 Android 與部分瀏覽器上較常見。實務上多數服務會同時提供兩種,依裝置選擇。
HLS 的延遲為什麼比一般直播高?
HLS 本身就是「以延遲換穩定」的設計。它把影片切成數秒的片段,播放器需要先下載幾個片段才能建立緩衝,因此天生有數秒到數十秒的延遲。若要降低延遲,可改用低延遲 HLS(LL-HLS)縮短片段長度,或改用 WebRTC 等技術。
播放 HLS 會消耗很多流量嗎?
取決於畫質。HLS 會依你的網速自動選擇位元率,一般 1080p 約每小時 3-7 GB,4K 可能超過 15 GB。若使用行動網路,建議手動選擇較低畫質,或改用 Wi-Fi。播放器本身不會額外增加流量,它只是把你選擇的畫質抓下來播放。