合併 TS 片段
用 M3U8 下載下來的影片,往往是一堆零散的 .ts 檔。要把它們變成一個能分享、能離線播放的檔案,關鍵在「怎麼接」。接錯方法會導致時間軸錯亂或畫面跳格。
TS 是什麼?為什麼會切成很多段
MPEG-TS(Transport Stream)是為了「傳輸」而設計的容器,與 MP4 這種為了「儲存」而設計的容器不同。它的特性是:
- 固定封包長度:每 188 bytes 一個封包,因此可以在任意位置切割或插入
- 容錯性高:單一封包損毀不會影響整體解碼,適合不穩定的網路
- 天生分段:串流服務通常切成 6~10 秒一段,方便動態調整畫質與快速起播
所以「一堆 .ts」不是設計缺陷,而是 HLS 協定刻意的做法。
常見的錯誤合併方式
| 做法 | 問題 |
|---|---|
| 直接串接檔案 | 時間戳重複,部分播放器跳格或時間軸異常 |
| 重新編碼輸出 | 畫質無謂衰減,且耗時數倍 |
| 只接第一段 | 只得到 10 秒的影片 |
| 順序弄錯 | 影片段落錯亂,需依 M3U8 清單順序排列 |
最關鍵的是順序必須與播放清單一致。.ts 檔名通常已含序號(segment-001、segment-002…),但仍建議對照原清單確認。
正確的做法:重新封裝(Remux)
把 TS 的視訊與音訊軌「搬」到 MP4 容器裡,不重新壓縮。這樣做有三個好處:
- 無損:位元流原樣保留
- 快速:不需重新編碼,通常比影片長度快數十倍
- 相容:MP4 幾乎所有裝置與平台都能播
本站的下載工具在瀏覽器端完成這個程序,不需要安裝任何軟體。
常見問題
可以直接把 .ts 檔案用 cat 串起來嗎?
技術上可以,因為 MPEG-TS 是以固定長度封包(188 bytes)為單位,直接串接通常能播。但這樣產生的檔案仍含每個片段的時間戳重複與接縫不連續,部分播放器會出現跳格或時間軸異常。較嚴謹的做法是重新封裝為 MP4。
合併後畫質會變差嗎?
不會。只要採用「封裝轉換」(remux)而非重新編碼,H.264/H.265 視訊與 AAC 音訊會原樣搬移,畫質完全無損。這也是為什麼合併速度可以很快。
合併後為什麼時間軸亂掉?
因為每個 TS 片段都各自帶有時間戳(PTS/DTS),直接串接會讓時間戳不連續。正確做法是在重新封裝時重算時間基準,讓播放器看到連續的時間軸。
需要用 FFmpeg 嗎?
不一定。若你已有一堆 .ts 檔,本站的下載工具支援直接合併;若偏好命令列,本站另有指令產生器可產生對應的 FFmpeg 指令。