HLS 串流下載完整教學

很多人第一次想下載線上影片時會卡住——右鍵找不到「另存新檔」,下載到的卻是一堆看不懂的 .ts 檔案。這頁把 HLS 的結構、下載的每一步、以及合法性界線一次講清楚。

操作步驟

  1. 先確認你有權下載

    只下載你自己上傳的內容、公開授權的素材,或已取得授權的影片。付費串流平台的內容通常受 DRM 保護,不應下載。

  2. 取得 m3u8 播放清單網址

    在播放頁面按 F12 開啟開發者工具,切到 Network 分頁後篩選 m3u8,重新整理頁面即可看到播放清單的請求網址。

  3. 確認播放清單類型

    若清單中出現 #EXT-X-KEY 表示已加密,需要金鑰才能解碼;出現多個 #EXT-X-STREAM-INF 則是 Master Playlist,需再選一個畫質子清單。

  4. 選擇下載方式

    不想碰命令列就用瀏覽器端工具;片段多或需要批次處理則用 FFmpeg 指令。

  5. 合併並轉存

    HLS 切片是 MPEG-TS 格式,合併後可用 -c copy 直接重新封裝成 MP4,不需重新編碼。

為什麼右鍵另存只會存到一個空白頁?

傳統的 MP4 影片是單一檔案,瀏覽器把它整包下載後播放,所以你可以右鍵另存。但 HLS 的設計完全不同。

HLS(HTTP Live Streaming)把影片切成大量小片段,每個片段通常只有 2 到 10 秒。播放時瀏覽器依序抓取這些片段、即時串接起來,看起來像一個連續的影片,但實際上伺服器上根本沒有「一個完整的影片檔」。

所以右鍵另存時,你存到的是那個 .m3u8 清單文字檔(或空白頁),而不是影片本身。要保存影片,就必須把清單裡列出的所有片段都抓下來再合併。

HLS 的檔案結構

下載前先看懂這個結構,可以省下很多嘗試錯誤的時間:

檔案作用
.m3u8播放清單(索引檔),用純文字列出所有片段的位置與順序
.ts實際的影片片段,MPEG-TS 格式,一個通常 2 到 10 秒
.m4s / .mp4部分服務改用 fMP4 切片,作用同 .ts
.key加密金鑰(若串流有加密),沒有它就無法解碼

用文字編輯器開啟 .m3u8 就能看到它的內容,裡面以 #EXTINF 標示每段長度、以 #EXT-X-KEY 標示是否加密。

這不是法律說教,而是實際的判斷依據——搞清楚界線,才能避免下載了半天卻不能用的內容。

情況能否下載
自己上傳的影片可以,這是你自己的內容
開放授權素材可以,依授權條款使用(例如標示出處)
已取得授權的內容可以,例如課程平台允許下載的教材
付費串流平台不應下載。這類內容受 DRM 保護,且服務條款明文禁止
來源不明的盜版站不應下載。除了法律問題,這類站台常夾帶惡意腳本

技術上的現實:受 DRM 保護的串流(Widevine、FairPlay、PlayReady)在設計上就無法用一般工具處理,因為解密需要授權伺服器核發的金鑰。本站工具不具備、也不會提供繞過 DRM 的功能。

路線一:用瀏覽器工具下載(免安裝)

適合不想碰命令列、片段數量不多的情況。本站的下載工具會在您的瀏覽器內完成下載與合併,片段不會經過我們的伺服器。

  1. 先到串流檢測確認網址有效、未加密,且不是 Master Playlist。
  2. 把 Media Playlist 網址貼進下載工具。
  3. 選擇輸出格式(TS 或 MP4),開始下載。
  4. 完成後會自動打包,直接存到本機。
注意:下載期間不要關閉分頁、不要讓裝置休眠。片段較多的影片請在桌機操作,行動裝置的記憶體可能不足。若中斷了目前不支援續傳,必須重新開始。

路線二:用 FFmpeg 下載(適合大檔案)

若片段很多、檔案很大,或需要自動化處理,FFmpeg 會比瀏覽器工具穩定得多。這是最通用也最可靠的做法:

# 直接下載並重新封裝成 MP4(不重新編碼,速度最快)
ffmpeg -i "https://example.com/hls/index.m3u8" -c copy output.mp4

如果來源需要特定的 Referer 標頭,可以加上參數:

ffmpeg -headers "Referer: https://example.com/" \
  -i "https://example.com/hls/index.m3u8" -c copy output.mp4

更完整的 FFmpeg 指令與參數說明,請參考 FFmpeg M3U8 完整指令集。若下載後的檔案需要與其他片段合併,可參考合併 TS 片段。

常見的下載中斷原因

症狀可能原因與處理
下載到一半停止多半是網路不穩或裝置休眠。改用有線網路,並確認電源設定不會在閒置時睡眠
片段數少於預期可能是直播中的串流,清單會持續增長。這種情況無法一次抓完,只能等直播結束
合併後無法播放檢查是否有片段下載失敗。片段缺漏會導致整個檔案損毀,需重新下載
出現 403連結可能過期。回到來源頁面重新取得網址,參考403 錯誤修復
檔案沒有聲音音訊可能是獨立的一條播放清單。檢測工具會顯示是否有分離的音訊軌

常見問題

為什麼 HLS 影片不能直接右鍵另存?
因為 HLS 不是單一檔案,而是把影片切成數百到數千個小片段(通常是 2 到 10 秒的 .ts 檔),再用一個 .m3u8 播放清單記錄順序。瀏覽器播放時是一段一段抓取再連續播放,畫面上看到的「一個影片」其實是即時串接的結果,因此沒有單一檔案可以另存。要保存就必須把播放清單中的所有片段依序下載後合併。
下載 HLS 串流合法嗎?
取決於內容本身,而非技術。自己上傳的影片、明確採用開放授權的素材、或已取得授權的內容,下載完全沒問題。但付費串流平台(如 Netflix、Disney+)的內容通常受 DRM 保護,且服務條款禁止下載,這類內容不應下載。本站工具不具備繞過 DRM 或存取控制的能力,也不提供這類功能。判斷原則很簡單:如果這個內容需要付費訂閱才能看,通常就不該下載。
Master Playlist 和 Media Playlist 差在哪?
Master Playlist 是「目錄」,裡面用 #EXT-X-STREAM-INF 列出多個不同畫質或語言版本的子清單,本身不含影片片段。Media Playlist 才是真正列出 .ts 片段網址的清單。下載時如果只處理 Master Playlist,會拿到空的結果,必須先從中挑一個子清單。本站的檢測工具會顯示清單類型,幫你判斷要先處理哪一層。
下載後的 .ts 檔可以直接播放嗎?
可以,VLC、PotPlayer、MPV 等播放器都支援 MPEG-TS 格式。但若要在手機、社群平台或簡報中使用,建議轉成 MP4 相容性更好。轉換時用 ffmpeg -i input.ts -c copy output.mp4 即可,因為只是重新封裝容器、不重新編碼,所以速度極快且畫質完全不變。
遇到 403 錯誤還能下載嗎?
要看 403 的成因。若是連結的時效性 Token 過期,回到來源頁面重新取得新網址通常就能解決。若是 Referer、IP 或 User-Agent 檢查造成的拒絕,那屬於來源端的存取控制,本站不會繞過,也不建議嘗試規避。詳細的判斷方式可參考 403 錯誤修復的說明頁。

直接開始下載

貼上 m3u8 網址,在瀏覽器內完成合併。

開啟下載工具