如何阻止youtube_dl输出错误日志?配置ignoreerrors等参数仍不生效
问题原因
你看到的tls、https开头的错误日志并非来自youtube_dl本身,是其调用的FFmpeg解码/下载进程输出的stderr日志,你已配置的quiet、ignoreerrors等参数仅能控制youtube_dl自身的日志输出,无法拦截FFmpeg的输出。
解决方案
最直接的方法是在你的YT_OPTIONS配置中新增FFmpeg日志等级控制参数,同时传入空日志对象拦截所有youtube_dl输出,修改后的配置参考如下:
youtube_dl.utils.bug_reports_message = lambda: '' YT_OPTIONS = { 'format': 'bestaudio/best', 'extractaudio': True, 'audioformat': 'mp3', 'outtmpl': '%(extractor)s-%(id)s-%(title)s.%(ext)s', 'restrictfilenames': True, 'noplaylist': True, 'nocheckcertificate': True, 'ignoreerrors': True, 'logtostderr': False, 'quiet': True, 'no_warnings': True, 'default_search': 'auto', 'source_address': '0.0.0.0', # 新增以下两行配置 'ffmpeg-loglevel': 'quiet', 'logger': type('NullLogger', (), {'debug': lambda *a: None, 'warning': lambda *a: None, 'error': lambda *a: None})(), }
其中ffmpeg-loglevel参数会直接传递给FFmpeg进程,要求其完全关闭日志输出;新增的匿名空Logger类会拦截所有youtube_dl本身的日志输出,避免漏出其他异常日志。
如果上述配置后仍有输出,可以在启动程序时临时重定向全局stderr到空设备:
- Linux/macOS下运行命令:
python 你的脚本名.py 2>/dev/null - Windows下运行命令:
python 你的脚本名.py 2>nul
内容的提问来源于stack exchange,提问作者user15242190
相关产品推荐
相关产品推荐

