技術教學

什麼是 M3U8?好懂的 HLS 播放清單指南

快速掌握 M3U8 播放清單的原理、常用播放方式、MP4 轉檔與常見錯誤排除。

2025年9月18日·1 分鐘閱讀

什麼是 M3U8?一篇看懂 HLS 播放清單(原理、播放、轉檔、排錯)

先說重點(TL;DR)

  • M3U8 是 HLS 用的 UTF‑8 純文字「播放清單」。它不是影片本體,而是指向一段段 .ts 小切片的「地圖」。
  • 播放:把 .m3u8 連結貼到 VLC(桌面/行動)即可。網頁端:Safari 原生支援,其它瀏覽器用 hls.js。
  • 轉 MP4:先嘗試無損「重封裝」(不重編碼),不行再用 FFmpeg 重編。DRM 受保護的串流無法轉檔。

1) M3U8 到底是什麼?

M3U8 是 HTTP Live Streaming(HLS)的播放清單。長影片被切成數秒的 .ts 片段,清單負責描述順序與規則。播放器讀取清單,依序抓取片段播放,網路變慢時也能平順切換畫質。

極簡範例:

#EXTM3U
#EXTINF:6,
segment1.ts
#EXTINF:6,
segment2.ts

也有「主清單」同時列出多種畫質,播放器自動選擇最合適的那條。

2) HLS 怎麼運作?

  • 影片編碼 → 切成短片段 → 產生 M3U8。
  • 播放器先抓清單,再透過 HTTP 逐段下載。
  • 頻寬不足時,自動切到較低位元率的變體(自適應串流)。

3) 怎麼播放 .m3u8?

  • 桌面:VLC → 媒體 → 開啟網路串流 → 貼上 URL。
  • 行動:iOS/Android 的 VLC 多數公開串流可播。
  • 網頁:Safari 直接播,其它瀏覽器用 hls.js 掛到 HTML5 video。 若失敗,先檢查是否公開、是否需要登入/權杖、是否有 DRM。

4) M3U8 轉 MP4(FFmpeg)

先試快速無損重封裝:

ffmpeg -i "https://example.com/stream.m3u8" -c copy -bsf:a aac_adtstoasc output.mp4

不行就安全重編碼:

ffmpeg -i "https://example.com/stream.m3u8" -c:v libx264 -c:a aac -movflags +faststart output.mp4

備註:私有/DRM 串流不可轉;黑畫面或無聲時改用重編碼。

5) 常見問題與解法

  • 403/401:伺服器需要標頭/Cookie 或登入。請用原站或授權播放器。
  • 404:清單/片段過期或路徑變更。換最新 URL。
  • CORS(網頁):跨網域被擋。伺服器開放 CORS 或走代理。
  • DRM/加密:沒有權限就無法播放或保存。
  • 卡頓/緩衝:改選低一點的畫質,或改善網路。

6) 法規提醒

請只處理你有權利的內容,遵守網站條款、DRM 與地方法規。

7) 總結

M3U8 就是 HLS 的「地圖」。用 VLC 或 hls.js 播放;需要時用 FFmpeg 重封裝/重編碼。排錯時先看認證、CORS 與 DRM。

FAQ

  • M3U8 是影片嗎?不是,是片段的參照清單。
  • 為何 Safari 可播、Chrome 不行?Safari 原生支援 HLS;Chrome 需 hls.js。
  • 能合併成單一 MP4 嗎?可以,用 FFmpeg(見上方指令)。

延伸閱讀

作者:m3u8-player.net