如果视频暂停/继续下载失败,该怎么办?
出现问题的可能原因
默认情况下,下载面板的任务只会在开始下载时查询一次下载链接,为了减少API请求,之后会一直沿用。
下载链接是有时效性的。如果在暂停/失败后重试下载,且距离第一次开始下载已经有了相当长的一段时间,那么下载链接可能已经失效。
(在V6.32版本引入了url生存时间的检查,这种情况理论上应该不再有)B站API返回的下载链接一般会有俩个,即
base_url
和backup_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
的连通性,因为该链接的域名+端口部分会遭到替换。
尝试重新建立任务
- 右上角菜单
操作
->保存下载任务
- 删除所有下载任务,如有必要的话也可以尝试重新启动程序
- 右上角菜单
操作
->加载下载任务
上述操作不会删除缓存,也就是说下载进度是会保存的。