← Blog.backToBlog

使用 Wget 和 Curl 下载 M3U8

6 min read

为什么用 Wget 或 Curl?

Wget 和 curl 是通用 HTTP 客户端。对 M3U8,它们适合检查播放列表、下载原始片段或脚本探测。它们不会把片段合并成可播放 MP4——合并请用 FFmpeg 或我们的在线下载器

下载播放列表文件

# wget
wget "https://example.com/stream.m3u8"
# curl
curl -L -O "https://example.com/stream.m3u8"

用文本编辑器打开以查看标签和片段 URL。阅读指南:把 M3U8 当文本读

下载所有片段

wget "https://example.com/stream.m3u8"
grep -v "^#" stream.m3u8 | grep -v "^$" | while read url; do
  case "$url" in
    http*) wget "$url" ;;
    *) wget "https://example.com/$url" ;;
  esac
done

然后用 FFmpeg concat 合并。相关:用 FFmpeg 合并 TS

Curl + FFmpeg 组合

# 检查是否可访问
curl -I "https://example.com/stream.m3u8"
# 完整下载 + 合并
ffmpeg -i "https://example.com/stream.m3u8" -c copy output.mp4

实用流程:curl 探测,FFmpeg 真正下载。

局限

  • 没有自适应画质选择逻辑。
  • 没有像 FFmpeg 那样的自动 AES 处理。
  • 容易搞错相对 URL 基路径。
  • 直播边缘跟踪弱于播放器/下载器。

常见问题解答

wget 能单独下完整 HLS 视频吗?
能抓文件,但本身产不出干净合并的 MP4。

该用 curl 还是 FFmpeg?
检查用 curl;完整下载/合并用 FFmpeg。

怎么只下载播放列表?
curl -L -O url.m3u8

有不用命令行的选项吗?
有——我们的浏览器下载器。