BaiduPCS-Py
BaiduPCS-Py copied to clipboard
下载速度最多 3MB/s 的问题
#47 这个问题在我这也出现了。
我的账号是 SVIP4 ,无论用手机官方 App 还是 pc 端都可以满速下载,宽带能跑满 11MB/s ,手机 5G 实测可以跑到 80+MB/s ,因此可推断账号是没有黑号的。
我在 Win10 上运行 BaiduPCS-Py 无论如何都是最多只有 3MB/s,也尝试了提高线程数和减小分块大小,但都没有用。楼上提到换 Linux 可以满速,但我在虚拟机 Linux 中运行 BaiduPCS-Py 实测还是一样。
但上述操作中,Win10 和 Linux 中使用的网络环境和账号都是相同的,因此我在 Win10 和 Linux 中分别测试了 电信 100Mbps 和 移动 300Mbps,但结果都是不超过 3MB/s。看起来似乎和网络没有关系。
我想换个账号试试但我没有其他的 SVIP 账号,但我注意到 github 上的另外一个项目 BaiduPCS-Go 。我在 Win10 和 Linux 上分别运行那个程序,都能达到 10MB/s,只不过有点波动,我只用了 电信 100Mbps 网络测试,如果用更快的网络也许还会超过 10MB/s。
同一个账号,同一个硬件环境,同一个网络环境,但不同的程序,我觉得是 BaiduPCS-Py 的问题(没有批判的意思,这个项目对我帮助很大,所以我才来提 issue 希望能帮助改进)。
我注意到 BaiduPCS-Py 和 BaiduPCS-Go 的登陆方式不一样,前者是使用者自行在网页版获取 BDUSS 和 cookies ;后者是使用者输入账号和密码,程序模拟登陆后获取登录信息。不知道问题是否跟这个有关?
感谢反馈。
可否能贴出你上面测试用的具体命令(文件名用 abc 代替就可)和测试环境,包括 BaiduPCS-Py 和 与之对比的 BaiduPCS-Go 命令。 这样我可以检测什么地方出了问题。
BaiduPCS-Go 默认分块大小是 64 KB:
D:\BaiduPCS-Go d --save /4k.mp4
[0] 提示: 当前下载最大并发量为: 8, 下载缓存为: 65536 [1] 加入下载队列: /4K.mp4
[1] ---- 类型 文件 文件路径 /4K.mp4 文件名称 4K.mp4 文件大小 493295519, 470.443267MB md5 (可能不正确) 155ad5260hd9c983632f3fea8723fff0 app_id 250528 fs_id 1004526498096982 创建日期 2020-05-09 22:25:29 修改日期 2021-07-08 11:45:15
[1] 准备下载: /4K.mp4 [1] 将会下载到路径: 4K.mp4
[1] ↓ 213.81MB/470.44MB 10.86MB/s in 21s, left 23s ............
默认参数下载:
D:\>BaiduPCS-Py d /4k.mp4
⠇ 4k.mp4.tmp -- ------------------------------------- 6.2% • 30.5/493.3 MB • 3.0 MB/s • 0:02:36
提高线程数、减小分块大小:
D:\>BaiduPCS-Py d -s 10 -k 500k /4k.mp4
⠦ 4k.mp4.tmp - -------------------------------------- 2.9% • 14.3/493.3 MB • 1.9 MB/s • 0:04:09
进一步提高线程数、减小分块大小至与 BaiduPCS-Go 相等:
D:>BaiduPCS-Py d -s 20 -k 64k /4k.mp4 ⠹ 4k.mp4.tmp ---------------------------------------- 0.4% • 1.9/493.3 MB • 315.1 kB/s • 0:26:00
意外的是我发现如果增加分块大小,速度提上去了,在 5-8MB/s 之间波动:
D:\>BaiduPCS-Py d -s 20 -k 5120k /4k.mp4
⠏ 4k.mp4.tmp --------------- ------------------------ 38.3% • 188.7/493.3 MB • 8.2 MB/s • 0:00:38
提高线程数,没有改善:
D:\>BaiduPCS-Py d -s 30 -k 5120k /4k.mp4
⠧ 4k.mp4.tmp ------ --------------------------------- 15.9% • 78.6/493.3 MB • 8.2 MB/s • 0:00:51
减少线程数,没有改善
D:\>BaiduPCS-Py d -s 5 -k 5120k /4k.mp4
⠦ 4k.mp4.tmp --------- ------------------------------ 24.4% • 120.6/493.3 MB • 8.2 MB/s • 0:00:46
不改线程数、增大分块大小,前期速度波动在 6-10MB/s,后期稳定在 2MB/s:
D:\>BaiduPCS-Py d -s 20 -k 10240k /4k.mp4
⠧ 4k.mp4.tmp ---------------------------------- ----- 87.1% • 429.8/493.3 MB • 1.8 MB/s • 0:00:36
我现在换到移动 300Mbps 网络试试……
移动 300Mbps 网络:
前期 10-20MB/s 波动,后期 1-5MB/s 波动:
D:\>BaiduPCS-Py d -s 20 -k 10240k /8k.mp4
⠋ 8k.mp4.tmp ---------------- ----------------------- 42.2% • 419.4/995.0 MB • 21.8 MB/s • 0:00:27
将线程数改为 1 ,结果和上面相同:
D:\>BaiduPCS-Py d -s 1 -k 10240k /8k.mp4
⠋ 8k.mp4.tmp ------------------- -------------------- 47.8% • 475.5/995.0 MB • 1.3 MB/s • 0:06:52
将分块大小提高至30MB,速率在 20-30MB/s 波动:
D:\>BaiduPCS-Py d -s 1 -k 30720k /8k.mp4
⠹ 8k.mp4.tmp ----------------- ---------------------- 44.6% • 443.4/995.0 MB • 33.0 MB/s • 0:00:17 用上面这条命令实测用时 103s,平均 9.6MB/s,中间网速波动很大,一时很快(30+MB/s),一时很慢(1MB/s)。 我在手机APP中下载实测用了 35s,平均 33.1 MB/s,网速波动很小。
不过这个速度也很满意了,感谢!
忘了说环境都是Win10专业版,性能应该不是瓶颈,R7 4800H 3060 24G内存 500G SSD(sn550)
抱歉,是我没把文档写清楚。
对于下载命令 d
,如果不加 -d
来指定下载器,都是默认使用 me
下载器。所有你以上使用的命令都是用 me
下载器。me
下载器只使用一个连接下载,并发选项 -s
是指同时并发下载文件的数量,而不是下载一个文件使用的连接数量。所以你上面的命令都只使用了一个连接来下载文件,而 BaiduPCS-Go 是使用了8个连接来同时下载一个文件。我想 App 也是一样的。
如果想对一个文件同时使用多个连接同时下载,你需要指定下载器为 aget_py
或 aget_rs
,前者默认安装,后者需要手动安装。
对于 svip 帐号,-k
设置为 40m ~ 50m 比较好,如果带宽跑不满,可以增加 -s
并发值。
比如,你可以试试下面的命令,应该可以跑满带宽:
BaiduPCS-Py d /abc -d aget_py -s 10 -k 50m
原来如此,十分感谢!!!
是我没认真看文档,这次尝试了你给的那条命令,下载单文件 995MB 只用了 35s,平均速度 28.4MB/s,快太多了。
-s
一般设为 5,太大可能有被封的风险。
好的,不过我还有几个问题:
-
BaiduPCS-Py 计算文件大小是除以 1000,这是正常的吗(上面的 995MB 实际是 995,043,234 字节,除 1024 再除 1024 的话是 948MB 和 Win10 显示一致)
-
使用
aget_py
下载器后不显示进度和速度了,一直都是 0% 和 0MB/s,但实际是正常下载的。 -
这个是我个人的问题,买个欧美地区的 1Gbps 大带宽 vps 运行此项目可以实现高速下载吗?我在手机上挂梯子如果选用香港节点貌似下载不了文件,但是美国的节点能正常下载文件,只不过不是很快。
- 这是个 bug,会在下个版本修复。
- 不显示进度和速度是 aget_py 设计问题,它要下载完一个
-k
的大小的块才会更新进度。 最近不会修复这个问题。如果你在意这个问题,可以换用 aget_rs 试试,它的进度显示是正常的。 - 用国外的服务器只会减慢下载速度。毕竟数据要绕去国外再转回来。
好的,感谢耐心解答!