Skip to content

如果视频暂停/继续下载失败,该怎么办?

出现问题的可能原因

  • 默认情况下,下载面板的任务只会在开始下载时查询一次下载链接,为了减少API请求,之后会一直沿用。
    下载链接是有时效性的。如果在暂停/失败后重试下载,且距离第一次开始下载已经有了相当长的一段时间,那么下载链接可能已经失效。
    (在V6.32版本引入了url生存时间的检查,这种情况理论上应该不再有)

  • B站API返回的下载链接一般会有俩个,即base_urlbackup_url。虽然很少见,但存在base_url失效,只能使用备用链接backup_url的极端状况。

  • 可能存在B站分配的MCDN/PCDN链路不佳的情况。

  • 因为某些原因,在下载时有概率会出现HTTP连接始终没有断开,但是传输速率几乎为0的情况。
    这会导致类似于inputstream.read(buffer)这类代码一直阻塞,进而无法正常通过布尔flag停止,导致接下来的逻辑出现错误。

解决方案

每次重新下载时,都重新查询一次下载链接

  • 右上角菜单配置 -> 下载重试策略 -> 重新查询url (临时启用,程序重启后失效)
  • 设置bilibili.download.retry.reloadDownloadUrl = true (持久化生效)

查询下载链接时,测试base_url的连通性,在必要时选择backup_url

使用文本编辑器打开文件config/app.config, 设置bilibili.dash.checkUrl = true

将下载地址替换为其它CDN(Since V6.32)

  • 右上角菜单配置 -> 音视频链接替换host? -> 替换 (临时启用,程序重启后失效)
  • 设置bilibili.download.host.forceReplace = true (持久化生效)

值得注意的是,当该功能开启时,没必要再去测试base_url的连通性,因为该链接的域名+端口部分会遭到替换。

尝试重新建立任务

  • 右上角菜单操作 -> 保存下载任务
  • 删除所有下载任务,如有必要的话也可以尝试重新启动程序
  • 右上角菜单操作 -> 加载下载任务

上述操作不会删除缓存,也就是说下载进度是会保存的。

Released under the Apache 2.0 License.