← Blog.backToBlog

用 FFmpeg 下载 HLS 流:分步指南

7 min read

分步下载 HLS

  1. 安装 FFmpeg——来自 ffmpeg.org 或包管理器。
  2. 拿到 M3U8 URL——通常以 .m3u8 结尾。
  3. 打开终端——CMD、PowerShell、Terminal 或 shell。
  4. 运行:
    ffmpeg -i "https://example.com/stream.m3u8" -c copy output.mp4
  5. 等待进度——时间、速度和大小更新直至完成。

加密流(AES-128)

若播放列表含 #EXT-X-KEY 且密钥公开,FFmpeg 下载时通常会自动解密。否则请确保密钥 URI 可达(网络/鉴权)。DRM 保护流无法用通用工具解密。相关:完整 FFmpeg 转换指南

直播 vs 点播

点播列表以 #EXT-X-ENDLIST 结束并会下载到完成。直播列表永不结束——用 -t 限时长或 Ctrl+C 停止。指南:用 FFmpeg 下载 M3U8

自动化多个下载

#!/bin/bash
urls=(
  "https://example.com/stream1.m3u8"
  "https://example.com/stream2.m3u8"
)
i=1
for url in "${urls[@]}"; do
  ffmpeg -i "$url" -c copy "out-$i.mp4"
  i=$((i+1))
done

或用 yt-dlp 读 URL 列表。批量思路:批量下载 M3U8

何时 FFmpeg 过重

一次性下载又不想用终端时,用我们免费的浏览器下载器——多线程拉取与合并,免安装。

常见问题解答

怎么用 FFmpeg 下载 HLS?
ffmpeg -i "url.m3u8" -c copy out.mp4

Windows 能用吗?
能——安装 FFmpeg 后在 PowerShell 或 CMD 运行相同命令。

能下载加密 HLS 吗?
密钥可达时 AES-128 可以;DRM 不行。

怎么停止直播录制?
Ctrl+C,或事先设置 -t 秒数。