如何修复检查HTTPS网络电台URL时的FFmpeg TLS错误?
解决FFmpeg访问HTTPS流媒体时的TLS安全上下文创建失败问题(错误0x80090302)
针对你遇到的问题,给你几个直接可行的解决方向:
检查FFmpeg的TLS库支持
先确认你的FFmpeg版本用的是哪种TLS实现:运行ffmpeg -version,看输出里的configuration字段,如果是Windows默认版本,大概率用的是系统自带的Schannel库。这个错误码0x80090302对应Windows的SEC_E_UNSUPPORTED_FUNCTION,说明Schannel不兼容目标服务器的TLS配置。修复系统TLS设置和证书
- 开启系统TLS 1.2/1.3支持:按下Win+R输入
inetcpl.cpl,打开Internet属性的「高级」标签,勾选「使用TLS 1.2」「使用TLS 1.3」,取消勾选SSL 2.0/3.0这些旧协议,确定后重启电脑。 - 更新根证书:用Edge或IE访问
https://impradio.bytemasters.gr,浏览器会自动检测并安装缺失的根证书,完成后再测试你的脚本。
- 开启系统TLS 1.2/1.3支持:按下Win+R输入
换用带OpenSSL的FFmpeg版本
Windows默认的FFmpeg用Schannel容易出兼容性问题,直接下载带OpenSSL编译的FFmpeg构建包,然后在你的Python脚本里指定这个FFmpeg的路径,替换原来的调用路径。比如:ffmpeg_executable = r"C:\tools\ffmpeg-openssl\ffmpeg.exe" # 后续调用时用这个路径执行FFmpeg命令排查安全软件拦截
既然HTTP版本需要Avast放行,HTTPS大概率被Avast的HTTPS扫描功能拦截了:- 把你的Python脚本和FFmpeg程序添加到Avast的信任列表里。
- 暂时关闭Avast的「HTTPS扫描」功能,测试是否能正常访问HTTPS流媒体,确认后再调整Avast的规则。
强制FFmpeg使用兼容的TLS参数
在调用FFmpeg时添加强制指定TLS版本的参数,比如强制用TLS 1.2:import subprocess def check_stream(url): ffmpeg_path = "ffmpeg.exe" # 换成你的FFmpeg实际路径 cmd = [ ffmpeg_path, "-i", url, "-t", "1", "-f", "null", "-", "-tls_force", "tls1.2" # 新增强制TLS版本参数 ] try: result = subprocess.run(cmd, capture_output=True, text=True, check=True) return True except subprocess.CalledProcessError as e: print(e.stderr) return False
内容的提问来源于stack exchange,提问作者Chris P
相关产品推荐
相关产品推荐

