yt-dlp设置abort-on-unavailable-fragment未生效,分片下载失败如何终止任务?
你配置无效的核心原因是参数名格式错误:yt-dlp的命令行参数用短横线分隔,但Python API调用时所有参数都要改为下划线分隔,你写的'abort-on-unavailable-fragment': TrueAPI无法识别,自然不会生效。
以下是需要补充/修正的完整配置项:
- 修正参数名:把
abort-on-unavailable-fragment改为abort_on_unavailable_fragment - 显式关闭分片自动跳过逻辑:添加
'skip_unavailable_fragments': False,该参数默认值为True,优先级高于终止逻辑,不关闭的话yt-dlp会优先跳过高分片而非终止任务 - 新增全局错误终止配置:添加
'abort_on_error': True,遇到任何下载错误时直接终止整个任务,不会继续执行ffmpeg合并等后续步骤 - 开启自动清理逻辑:添加
'cleanup': True,任务异常终止时会自动删除本次生成的所有临时分片、未完成的输出文件
修正后的代码示例:
outTmpl = "{}" rows = c.fetchall() for row in rows: ydl_opts = { 'verbose': True, 'outtmpl': outTmpl.format(row[1]), # 修正参数名为下划线格式 'abort_on_unavailable_fragment': True, # 关闭自动跳过不可用分片 'skip_unavailable_fragments': False, # 任意错误直接终止任务 'abort_on_error': True, # 异常退出时自动清理临时文件 'cleanup': True, # 可选配置:分片下载失败重试次数,避免临时网络波动导致误终止 'fragment_retries': 15, 'retries': 10 } with yt_dlp.YoutubeDL(ydl_opts) as ydl: ydl.download([row[0]])
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

