- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在研究我的项目,该项目是通过 libtorrent 制作一个流媒体客户端。我正在使用 python 客户端(python 绑定(bind))。我搜索了很多关于这些函数 set_sequential_download() 和 set_piece_deadline() 的信息,但我找不到关于如何强制按顺序下载片段(这意味着第一个片段)的好答案1 然后 2,3,4 等等.
我看到人们在论坛中提出这个问题,但他们都没有得到关于需要进行哪些更改才能成功的良好答案。
我知道set_sequential_download()只是要求按顺序下载片段,但实际上它们是随机下载的。我尝试使用 set_piece_deadline() 更改作品的截止日期,增加每件作品,但它对我来说根本不起作用。
** 更新
我正在努力实现的目标是一次下载一篇,这样我就可以通过种子进行流式传输。
我希望你们中的一些人可以帮助我,谢谢本。
最佳答案
set_sequential_download()
将按顺序请求个片段。但是:
这使得各个部分有可能无序完成。
set_piece_deadline()
是指定片段优先级的更灵活的方法。它支持任意范围请求(如 Jacob Zelek 所描述)。不过,它的主要特点是它使用不同的方法来请求 block 。它不是一次考虑一个对等点,并询问“我应该向这个对等点请求什么”,而是一次考虑一个 block ,询问“我应该向哪个对等点请求这个 block ”。
这使得它故意尝试按照截止日期的顺序完成各个部分。它仍然是根据同行的历史下载速率进行的估计,如果下载速率的瓶颈是您自己的下载能力,则可能很难对同行的 future 下载速率进行预测。使用 `set_piece_deadline()` API 时需要记住的一些重要事项是:
如果您实际上希望通过 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/
编译libtorrent教程时'hello world'与: g++ main.cpp -o run -ltorrent-rasterbar -lboost_filesystem-mt -L/usr/
是否有人为洪流创建了填充文件? 如今有多少客户使用这些东西? “填充文件”是否全面? 我在ctorrent,trent,trasmission等新客户中没有发现此功能。 您是否具有此功能的实现或有关此
当我尝试使用 VIsual studio 9.0 进行构建时,我正在为我的应用程序使用提升,我得到1>LINK: fatal error LNK1104:无法打开文件“libtorrent.lib”
在 Libtorrent session 中有一些 enurm,我对如何设置 enurm 有点困惑,例如: struct session_settings { enum s
我如何正确转发声明一个类? //client_functions.cpp using namespace libtorrent; session Sess; bool Start_Client_Ses
我正在使用 libtorrent 将数据传输到 10k+ 个节点。这里我传输的数据非常小(大小为 10-50 MB)。我希望所有节点都将数据保存在内存中,直到所有其他节点完成下载以避免更多的磁盘 io
是否可以通过分配托管文件的服务器的 IP 地址来绕过跟踪器来制作 torrent 文件? 我对通过 libtorrent 的 bittorrents 文件传输协议(protocol)很感兴趣,他们以这
我正在尝试生成一个 torrent 并使用 python libtorrent 为其提供种子,它会生成 torrent,但不会为其提供种子。 我在 Ubuntu 14.04 上使用 libtorren
我有一个问题。我不是 C/C++ 程序员,libtorrent 文档对我来说并不是很清楚。没有像 libtorrent 的 python 文档那样的文档可供查找。 此刻,我尝试在 stackoverf
我使用add_magnet_uri获取信息,但是有一些资源响应慢,我应该使用什么来设置总超时时间? http://www.rasterbar.com/products/libtorrent/manua
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
使用 Rasterbar libtorrent 我不希望下载的数据放在我的硬盘驱动器上,而是放在管道或变量或其他软件上,所以我可以将它重定向到其他地方,Mysql,如果不是我想要的,甚至是垃圾,是如果
我想在开始下载之前设置上传/下载限制。对于前。目前我正在设置下载/上传限制,如下所示: info = lt.torrent_info(ft['torrent_info']) params = { 's
当通过 libtorrent(C++ 库)下载 torrent 时,会创建一个以 torrent 名称命名的文件夹,所有文件都下载到该文件夹中。例如,在 uTorrent 中,您可以在添加 tor
我想使用 libtorrent-rasterbar 来开发一些 torren 测试,但是当我尝试编译包中的示例时,我遇到了这个错误: g++ dump_torrent.cpp In file i
我已经在客户端开发了 torrent 程序,并使用 rutorrent 作为种子文件。我在 rutorrent 中使用插件 peer 来监控使用我的 torrent 应用程序的数字客户端。但在客户端选
我正在尝试设置 session 设置,但出现了一个我不太明白的错误,我能够正常设置 session ,根据 Libtorrent 文档,我只是将 session_settings 结构传递给 set_
我刚刚使用源代码编译并安装了 boost $密码 /Downloads/boost_1_58_0 ./b2 threading=multi link=static runtime-link=stati
据我所知,当播种或下载 Torrent 时,您的 IP 在跟踪器上并且会保留几个小时或几天 我如何使用 Libtorrent 手动告诉我的跟踪器我不再连接到跟踪器它应该忘记我的 IP,因为我既不播种也
我试图让 Session_Status 更新,但由于某种原因,结构的值永远不会更新, session 是这样启动的: using namespace libtorrent; session* Se
我是一名优秀的程序员,十分优秀!