seal 中文文档 下载 App

yt-dlp 更新损坏 — bad local file header 的成因与修复

问题表现

打开 Seal → 粘贴链接 → 点下载 → 报错 bad local file header 或类似的 Python 解压/反序列化错误。

这个错误说明 Seal 内置的 yt-dlp 内核 Python 包不完整或已损坏。

成因:v1.12.0 及更早版本的时序漏洞

CHANGELOG v1.12.1 的 Known issues 里明确写了:

yt-dlp might be broken if you tried to download something while it was updating (bad local file header)

具体成因:

  1. Seal 后台开始自动更新 yt-dlp(aria2c 下载新的 Python 包)
  2. 用户同时发起了一次下载请求
  3. 更新还没完全下完,Python 包处于"写到一半"的状态
  4. Seal 用这个残缺的包尝试解析视频 → Python 解压时读不到正确的文件头 → 报 bad local file header

v1.12.1 的防护

v1.12.1 新增了一个简单有效的保护:

Block downloads when updating yt-dlp

翻译过来就是:当 Seal 正在更新 yt-dlp 内核时,自动阻塞下载请求,等更新完再放行。

v1.12.1 及以上版本(v1.13.0、v1.13.1)默认开启这个保护。

修复方法

方法一:手动重新触发 yt-dlp 更新(推荐)

  1. 打开 Seal 设置
  2. 找到 yt-dlp 相关设置
  3. 手动触发一次更新(或者关闭自动更新后再开启,强制重新拉完整包)
  4. 更新完成后重启 Seal 再试

方法二:清除 Seal 应用数据(彻底但激进)

如果方法一不行,说明损坏比较严重:

  1. 系统设置 → 应用 → Seal → 存储 → 清除数据
  2. ⚠️ 注意:这会清掉下载历史、Cookie、命令模板等所有本地数据
  3. 清除后重新打开 Seal,等待 yt-dlp 重新下载
  4. 如果你之前导出了历史,可以重新导入恢复

方法三:卸载重装

最后手段。卸载 Seal → 重新安装最新版本 → 首次打开等待 yt-dlp 自动下载完成(耐心等几秒)再用。

怎么避免

继续到 解析失败怎么办 看另一个高频问题。