“dat”协议能否有效支持视频直播?

2024-03-30

我希望能够通过以下方式实时流式传输视频(或任何其他大型且不断修改/附加的文件)dat.

Here https://github.com/beakerbrowser/webdb#performance它说,

dat:// 协议不支持文件级别的部分更新, 这意味着单个文件中有多个记录,每次 用户添加了一条记录,任何关注该用户的人都必须同步并 重新下载整个文件。随着文件不断增长, 性能会下降。将每条记录放入单独的文件中是 更高效:当创建记录时,网络中的对等点 只会下载新创建的文件。

然而,它也说here https://github.com/datproject/docs/blob/master/docs/how-dat-works.md#phase-3-data-exchange that dat使用 Rabin 指纹识别来创建确定性的文件块,因此大概 dat 客户端将能够轻松识别已经通过其哈希下载的块,因此应该只能下载文件的最新最终块(如果这样的话)是唯一改变的部分。

并且在常见问题解答中 https://docs.datproject.org/faq#dat-vs, 它说:

Dat 使用的 Merkle 树类型让同行可以比较哪些部分 他们各自拥有的数据集的特定版本并且有效 交换增量以完成完全同步。

超视距 https://github.com/mafintosh/hypervision,但从我对其工作原理的初步了解来看,它似乎为视频数据保存了自己的“bundle.js”文件,我不确定它是如何实现流式传输的,但这与我的不完全相同我试图实现的目标是能够有效地传输任意大型且扩展的文件,例如 .ts 或 .mkv 视频流。

所以,我的问题是 - 视频的高效实时流传输(即无需重新下载已下载的块)目前根本不支持并且可以在将来添加,或者是使用本质上无法实现的东西dat协议?


In short,Dat 构建于其之上的低级超核协议应该适用于视频和其他“软实时”流媒体用途。然而,Dat(应用程序)所构建的超级驱动器文件/目录抽象当前不适用于这些用例。没有什么可以阻止超光速引擎与single“任意大且扩展的文件”,但它尚未针对该特定用例进行优化。


据我所知,当前所有视频流原型的工作原理都是将视频内容直接编码到超核中,而不是在超驱动器“文件和目录”抽象中。这有点像将原始字节写入硬盘而不是使用文件系统之间的区别。 P2P 视频和音频流是超核的明确设计目标。请注意,可能存在也可能不存在到现有文件格式或流协议的直接映射;超核抽象以字节块流的形式呈现,每个字节块的上限约为一兆字节。

作为一个小细节,dat/hypercoreprotocol and 磁盘格式不要指定任何特定的“分块”机制。 Rabin 分块已经进行过实验,但默认情况下,几乎所有客户端都使用固定大小的分块,以实现简单性和速度(这并不意味着将来不可能实现高性能的局部敏感分块)。理论上,客户端在任何情况下都能够检测到重复块并避免重新下载(以及磁盘上的重复存储),但截至 2018 年夏季,这种优化尚未实施。

Hyperdrive 目前要求所有文件作为连续块存储在“内容”超核提要中。这非常高效,但使重复数据删除变得困难。作为一种特殊情况,应该可以支持附加到最新的文件(直接附加到内容提要),而无需复制整个文件。每当更新或创建提要中的任何其他文件时,这都会破坏连续的块,但对于您的用例来说,它可能已经足够好了(如果要实现此优化)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“dat”协议能否有效支持视频直播? 的相关文章

随机推荐

  • 扫描网站内容(快速)

    我的数据库中有数千个网站 我想在所有网站中搜索特定字符串 最快的方法是什么 我认为我应该首先获取每个网站的内容 这就是我这样做的方式 import urllib2 re string search string source urllib2
  • 在透明像素之上使用 DrawString 进行错误的文本渲染

    将文本渲染到位图时 我发现在具有非不透明 Alpha 的区域顶部渲染时 文本看起来非常糟糕 随着底层像素变得更加透明 问题变得越来越严重 如果我不得不猜测 我会说当底层像素是透明的时 文本渲染器将任何抗锯齿 灰色 像素绘制为纯黑色 以下是一
  • 强制 Microsoft Build Tools 2015 包含框架目标版本的 mscorlib,而不是 4.6

    我在 Visual Studio 2015 中编写了一个应用程序 它使用 C 6 0 功能并面向 NET 4 5 2 当我使用 Microsoft Build Tools 2015 构建它时 这是由我们的 TeamCity 服务器完成的 生
  • 日历视图突出显示错误的星期

    我的应用程序中有一个 CalendarView 当用户通过触摸月视图中的日期来选择日期时 会选择正确的日期 通过在代码中添加调试语句进行验证 但前一周会突出显示 所以看起来好像选择了错误的日期 我找到了一个解决方法 如果我将 firstDa
  • CallLog.Calls 处的 RuntimeException

    如果我尝试查询 有时在某些设备上会出现 RuntimeExceptionCallLog Calls 我查询的是CallLog Calls with contentProvider接听最后一个电话 有人可以帮助我为什么有时会出现此错误吗 我认
  • 从所有 WooCommerce 预订中获取所有人的总和

    我使用官方 woocommerce 预订插件 并尝试获取所有已预订产品的人员的数量 对于单个订单 没有问题 if is callable WC booking Data Store get booking ids from order id
  • 如何在iPhone中的plist中写入多个数组?

    我的应用程序中有十个数组 我想将这些数组值写入 文档目录 plist 是否可以将 10 个数组放入一个 plist 中 否则我将为每个数组创建单独的 plist 哪一个可以实现我的应用程序 请指导我并提供一些示例链接 Thanks 做你想做
  • 为什么c 库和语言定义_name,然后typedef 或pound 定义_name name?

    看来 C 库和语言有很多无用的类型名称 例如 C 有一个内置类型 Bool并且有一个宏stdbool h define bool Bool 为什么 C 没有bool内置而不是 Bool 我发现了更多的例子stdio h and stdlib
  • 使用 jquery 和 mvc razor 的 delimitir 问题

    我无法向同一字段添加几个值 我只能选择一个值 输入后 或其他分隔符 我无法选择另一个 我希望它的工作方式类似于自动完成 我有一个带有 jQ uery 绑定的文本框 div class editor field Html EditorFor
  • 打包应用程序时如何排除不必要的Qt *.so 文件?

    使用 PyInstaller 成功打包 PySide 应用程序后 我在包文件夹中发现了许多不同的 so 文件 我很惊讶地看到我在项目中没有使用的库 例如 libQt53DAnimation so libQt53DCore so libQt5
  • mysql中按月和年比较日期

    我有一个表 其中包含有关事件和节日的数据 并以下列记录其开始和结束日期 开始日期 End Date 日期格式为YYYY MM DD 我需要使用以下条件获取事件详细信息 需要获取以当前月份开始且结束日期可以是任何内容的所有事件currentD
  • 扩展访问表达式以检查值

    我目前正在尝试与表达式树进行斗争 以实现一些神奇的效果 但我不断遇到一个又一个的错误 我的一些域对象 实体框架 上有一些类似的属性 Expression
  • ZIO:如何只计算一次?

    我正在使用 ZIO https github com zio zio https github com zio zio in my build sbt dev zio zio 1 0 0 RC9 无论我尝试什么 每次需要时都会计算我的结果
  • C# Windows 窗体 - MenuItem 单击事件 - 获取 MenuItem 文本

    如何获取已单击的任何给定菜单项的文本 菜单是动态填充的 所以我似乎仅限于此 Menu MenuItems Add new MenuItem MenuName new EventHandler menu click 不幸的是 我看不到 Eve
  • Jenkins 在 Docker 容器内构建并生成报告

    我对 Jenkins 和 Docker 很陌生 即使经过一些研究 我也没有找到做这些事情的方法 我想要 在 docker 容器内的项目上执行 pytest 和 python coverage 这应该生成测试和覆盖率报告 访问生成的报告并使用
  • Chrome 下数字签名小程序的替代方案

    目前我们已经开发了一个可以使用java applet 对文档进行数字签名的系统 然而 随着 Chrome 下小程序的禁令 我们正在寻找数字签名的替代解决方案 目前签名的工作方式如下 HTTP GET 被发送到 servlet 以获取要发送的
  • Grails,使用会话中的值注入/填充域对象

    在我的应用程序中 许多类都有公共字段 公司 当应用程序保存该对象时 它们必须填写公司 对此进行了验证 公司也开会 现在 当我想使用域类作为命令对象时 公司必须已填写 否则我会收到验证错误 有什么方法可以在进行任何验证之前始终填写公司字段 这
  • 如何对时间轴上放置的点的值进行插值?

    我想创建不同位置 x 浓度随时间变化的插值图 如果可能的话 我想水平插值点 即随着时间的推移 以便为每个样本获得平滑的变色水平线 df lt data frame Concentration rnorm 30 Position rep c
  • jconn4.jar 的 Maven 存储库是什么?

    jConn3 是我唯一能找到的 com sybase jdbc3 jdbc jconn3 6 05 我的研究告诉我 jconn3 jar 和 jconn4 jar 是 Sybase jConnect 的一部分 为了下载 至少 最新版本的 j
  • “dat”协议能否有效支持视频直播?

    我希望能够通过以下方式实时流式传输视频 或任何其他大型且不断修改 附加的文件 dat Here https github com beakerbrowser webdb performance它说 dat 协议不支持文件级别的部分更新 这意