Python中使用FFmpeg命令解析m3u8链接报403 Forbidden错误如何解决
在代码里加上 headers 后访问正常,请问有什么办法能用 FFmpeg 正常解析?
Python中使用FFmpeg命令解析m3u8链接报403 Forbidden错误如何解决
写个代理帮着加 header 呗
403错误是服务器拒绝了你的请求。这通常是因为请求头信息不完整或者服务器有反爬机制。
最常见的原因是缺少必要的请求头,特别是User-Agent和Referer。很多视频网站会检查这些头信息来判断请求是否来自浏览器。
你可以尝试在FFmpeg命令中通过-headers参数添加这些头信息。下面是一个完整的示例:
import subprocess
# 你的m3u8链接
m3u8_url = "你的m3u8链接地址"
# 构建请求头字符串
headers = (
"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
"(KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36\r\n"
"Referer: https://example.com/\r\n" # 替换为实际的来源页面
)
# 构建FFmpeg命令
command = [
'ffmpeg',
'-headers', headers,
'-i', m3u8_url,
'-c', 'copy',
'output.mp4'
]
# 执行命令
try:
subprocess.run(command, check=True)
print("下载完成!")
except subprocess.CalledProcessError as e:
print(f"命令执行失败: {e}")
except Exception as e:
print(f"发生错误: {e}")
关键点:
- User-Agent:模拟真实浏览器的请求
- Referer:设置来源页面,很多网站会检查这个
- 如果网站有Cookie验证,可能还需要添加
Cookie头
如果还是403,可能需要:
- 检查链接是否有效且未过期
- 查看是否需要特定的Cookie或授权信息
- 尝试从浏览器开发者工具中复制完整的请求头
建议先用浏览器访问一下m3u8链接,确认能正常播放再尝试下载。
代理是什么意思?
FFmpeg 命令里不能直接加 header 是吧?
m3u8 的就算连上也很不稳定……
Nginx
不才与劣者认为你可以直接在 ffmpeg 加上 headerffmpeg -v 9 -loglevel 99 -headers "X-Forwarded-For: 160.53.186.194" -i <a target="_blank" href="http://pebbles112-lh.akamaihd.net/i/daserste_1@97481/index_900_av-p.m3u8?sd=6&b=0-1000&rebase=on" rel="nofollow noopener">http://pebbles112-lh.akamaihd.net/i/daserste_1@97481/index_900_av-p.m3u8?sd=6&b=0-1000&rebase=on</a>
谢谢各位热心帮助

