gpt4 book ai didi

python - libtorrent 中的 set_sequential_download() 和 set_piece_deadline()

转载 作者:太空宇宙 更新时间:2023-11-03 17:12:37 24 4
gpt4 key购买 nike

我正在研究我的项目,该项目是通过 libtorrent 制作一个流媒体客户端。我正在使用 python 客户端(python 绑定(bind))。我搜索了很多关于这些函数 set_sequential_download()set_piece_deadline() 的信息,但我找不到关于如何强制按顺序下载片段(这意味着第一个片段)的好答案1 然后 2,3,4 等等.

我看到人们在论坛中提出这个问题,但他们都没有得到关于需要进行哪些更改才能成功的良好答案。

我知道set_sequential_download()只是要求按顺序下载片段,但实际上它们是随机下载的。我尝试使用 set_piece_deadline() 更改作品的截止日期,增加每件作品,但它对我来说根本不起作用。

** 更新

我正在努力实现的目标是一次下载一篇,这样我就可以通过种子进行流式传输。

我希望你们中的一些人可以帮助我,谢谢本。

最佳答案

set_sequential_download() 将按顺序请求个片段。但是:

  • 所有对等点可能不拥有所有棋子。如果您要下载的下一个片段是 3,而您的某个对等点没有 3,但下一个有 5,libtorrent 将开始向该对等点请求第 5 片段中的 block 。
  • 同级提供不同的上传速率,这意味着某些同级会比其他同级更快满足您的请求。

这使得各个部分有可能无序完成。

set_piece_deadline() 是指定片段优先级的更灵活的方法。它支持任意范围请求(如 Jacob Zelek 所描述)。不过,它的主要特点是它使用不同的方法来请求 block 。它不是一次考虑一个对等点,并询问“我应该向这个对等点请求什么”,而是一次考虑一个 block ,询问“我应该向哪个对等点请求这个 block ”。

这使得它故意尝试按照截止日期的顺序完成各个部分。它仍然是根据同行的历史下载速率进行的估计,如果下载速率的瓶颈是您自己的下载能力,则可能很难对同行的 future 下载速率进行预测。使用 `set_piece_deadline()` API 时需要记住的一些重要事项是:

  • 截止日期是在未来并不重要。如果鉴于当前的下载或上传容量而无法在截止日期前完成,则将按照要求完成的顺序对这些片段进行优先排序。
  • 如果截止日期距离很远,libtorrent 可能会等待确定其优先级,直到它认为需要请求它在截止日期前完成。如果您正在流式传输大文件,并且知道比特率,则可以为每个片段设置截止日期,并且如果您的容量高于比特率,您仍然会以最稀有的顺序请求某些片段。提高群体质量。
  • 在传输数据时,预读绝对至关重要。如果你不设定截止日期直到你想要这件作品,你就会永远落后。请求一件作品和完成它之间通常有一个相当长的往返过程。如果您不让请求管道充满截止日期片段,libtorrent 将再次开始请求其他片段,并且您将得到非优先片段与高优先片段交错的片段。您可能应该保留几秒钟和至少几篇文章作为预读。对于视频,我认为数十兆字节是合适的(但实验和测量是调整它的最佳方法)。

如果您实际上希望通过 HTTP 将视频流式传输到播放器或 Web 浏览器,您可能需要查看(或使用拉取请求并将其提交到):

https://github.com/arvidn/libtorrent-webui/blob/master/src/file_downloader.cpp

这是一个文件下载器提供程序,适合该存储库中的简单 http 框架。

更新:

如果您只想保证第 1 部分在第 2 部分之前完成(不惜任何代价,特别是性能非常差),则可以将所有部分的优先级设置为 0,除了您要下载的那部分。完成后,您将收到警报通知,并且您可以将下一个片段的优先级设置为 1。依此类推。

这将非常慢,因为您将不断暂停下载,并处于持续的最终游戏模式(如果其中一个速度慢,您可以从多个对等点下载相同的 block )。例如,如果您的对等点数量多于一 block 中的 block 数,则您将无法向所有对等点请求,从而使下载带宽未使用。

关于python - libtorrent 中的 set_sequential_download() 和 set_piece_deadline(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33943643/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com