You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让ffmpeg/youtube-dl自动为后续请求附加URL查询参数?

解决ffmpeg/youtube-dl下载HLS视频时分片请求403的问题

针对ffmpeg的解决方案

问题根源是ffmpeg请求分片时未携带主URL中的cred=abcd查询参数,导致服务器返回403,可通过以下两种方式解决:

方法1:自动附加查询参数

用-http_opts的customize_url选项修改每个请求的URL,自动给分片地址追加所需参数:

ffmpeg -http_opts "customize_url:%0?cred=abcd" -i 'https://example.com/playlist.m3u8?cred=abcd' -bsf:a aac_adtstoasc -vcodec copy -c copy -crf 50 file.mp4

其中%0代表原始请求URL,执行后所有分片请求都会自动带上?cred=abcd参数。

方法2:手动修改m3u8后下载

  1. 先下载原始m3u8文件:
curl 'https://example.com/playlist.m3u8?cred=abcd' > playlist.m3u8
  1. 编辑playlist.m3u8,将所有分片地址(如s2q1.m4s)修改为带参数的完整URL(https://example.com/s2q1.m4s?cred=abcd)
  2. 用ffmpeg读取本地修改后的文件:
ffmpeg -i playlist.m3u8 -bsf:a aac_adtstoasc -vcodec copy -c copy -crf 50 file.mp4

针对youtube-dl的解决方案

youtube-dl处理HLS分片时同样不会自动继承主URL的查询参数,可按以下方式处理:

方法1:通过Referer头绕过验证(部分服务器有效)

若服务器验证请求的Referer,可将带参数的主URL设置为Referer:

youtube-dl --add-header "Referer:https://example.com/playlist.m3u8?cred=abcd" 'https://example.com/playlist.m3u8?cred=abcd'

方法2:修改本地m3u8后下载

和ffmpeg的方法2步骤一致:

  1. 下载并修改m3u8文件,给每个分片地址加上查询参数
  2. 使用youtube-dl下载本地文件:
youtube-dl "file:///你的本地路径/playlist.m3u8"

额外推荐:使用yt-dlp(youtube-dl分支)

如果可以替换工具,yt-dlp支持更灵活的HTTP选项,直接附加参数更简便:

yt-dlp --http-opt "customize_url:%0?cred=abcd" 'https://example.com/playlist.m3u8?cred=abcd'

内容的提问来源于stack exchange,提问作者TSR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 11:10:34