You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用FFmpeg下载加密HLS/m3u8流时遭遇错误的求助

使用FFmpeg下载加密HLS/m3u8流时遭遇错误的求助

看起来你遇到了几个叠加的问题,咱们一步步来拆解解决:

首先解决最明显的URL格式错误

你提供的URL里有大量转义字符\u002F,这应该是复制时的编码问题,需要全部替换成正常的斜杠/。另外带凭证的命令里,URL格式写错了,而且因为URL包含特殊字符,zsh会把它当成通配符解析,导致no matches found错误,必须用双引号把整个URL括起来。

修正后的不带凭证命令

ffmpeg -i "https://cloudflarestream.com/eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJraWQiOiJiMjU5ZDVlMGNmNjMzMDVkOWU0MDYxNjYxNzJjMTVhZCIsInN1YiI6IjQ4MTBmMjFjYTkxMzMyNGRkMTBjYzJmM2RjOTFmYjkxIiwiZXhwIjoxNjc4NTg2NDI4LCJkb3dubG9hZGFibGUiOnRydWUsImFjY2Vzc1J1bGVzIjpbXX0.CeLLYbhjyezE8yC4Cu_tNf7OfvHl9gbd0rGmpGLy_aLxWWwSeoCUYZU5V7eYRNXYKKhugU1MZvs8etWDYamjVtpq3fldyVI9p6MkTJYl26D4Qb8XIlUL9VnpWbjWgNMYwLF_okPtausmMNVe7m9mP7A4jtnF2fTm0-Ql0j_F_98oGMGLV9cWiAh9TZY1cRAmaNFALSZL9i_rTuX7WCukqQFiMxcJVHmXFxqUpItaWMpNgMBB1V6T7cR38GbQ9PH_cBkpXtN4NHnFQ_gT2XDnx81Fs0CTwTyrIgwhcNDF0cDeWn9Jz-NfAge4fqY63ZgPk0bBeinfJzhx3LScXVojvA/manifest/video.m3u8" -map p:6 -c copy -t 60 -f segment -segment_list out.list out%03d.ts

修正后的带凭证命令

注意把USERNAMEPASSWORD替换成你的实际账号信息:

ffmpeg -i "https://USERNAME:PASSWORD@cloudflarestream.com/eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJraWQiOiJiMjU5ZDVlMGNmNjMzMDVkOWU0MDYxNjYxNzJjMTVhZCIsInN1YiI6IjQ4MTBmMjFjYTkxMzMyNGRkMTBjYzJmM2RjOTFmYjkxIiwiZXhwIjoxNjc4NTg2NDI4LCJkb3dubG9hZGFibGUiOnRydWUsImFjY2Vzc1J1bGVzIjpbXX0.CeLLYbhjyezE8yC4Cu_tNf7OfvHl9gbd0rGmpGLy_aLxWWwSeoCUYZU5V7eYRNXYKKhugU1MZvs8etWDYamjVtpq3fldyVI9p6MkTJYl26D4Qb8XIlUL9VnpWbjWgNMYwLF_okPtausmMNVe7m9mP7A4jtnF2fTm0-Ql0j_F_98oGMGLV9cWiAh9TZY1cRAmaNFALSZL9i_rTuX7WCukqQFiMxcJVHmXFxqUpItaWMpNgMBB1V6T7cR38GbQ9PH_cBkpXtN4NHnFQ_gT2XDnx81Fs0CTwTyrIgwhcNDF0cDeWn9Jz-NfAge4fqY63ZgPk0bBeinfJzhx3LScXVojvA/manifest/video.m3u8" -map p:6 -c copy -t 60 -f segment -segment_list out.list out%03d.ts

然后说说加密相关的问题

从你提到的Cloudflare Stream来看,这个平台的HLS流可能有两种加密情况:

  1. AES-128加密:如果是这种情况,m3u8文件里会有EXT-X-KEY标签,FFmpeg通常能自动请求密钥并解密,只要你的请求有合法权限(比如带对凭证)。
  2. DRM加密(如FairPlay/Widevine):这种加密方式FFmpeg原生不支持解密,如果你遇到的是这种情况,需要确认是否有合法的方式获取解密授权,或者使用专门支持DRM的工具来处理。

排查步骤建议

  1. 先用curl测试URL是否能正常获取m3u8内容,验证权限和URL有效性:
# 不带凭证
curl "https://cloudflarestream.com/..."

# 带凭证
curl -u USERNAME:PASSWORD "https://cloudflarestream.com/..."

如果curl能返回正常的m3u8内容,说明URL和权限没问题,再尝试FFmpeg命令。

  1. 如果FFmpeg还是报错,添加-v debug参数查看详细日志,能帮你定位是密钥获取失败、权限不足还是其他问题:
ffmpeg -v debug -i "你的修正后URL" -map p:6 -c copy -t 60 -f segment -segment_list out.list out%03d.ts

备注:内容来源于stack exchange,提问作者revans2380

火山引擎 最新活动