“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”协议能否有效支持视频直播? 的相关文章

  • 按需require()

    假设我创建了一个库 libname其中包含一个主文件 main js以及偶尔与主对象一起使用的多个可选库文件 a js and b js 我创造index js文件包含以下内容 exports MainClass require main
  • 使用 Webpack 进行缓存,索引源代码中的 [hash] 值,使用 React.js

    我正在构建一个同构应用程序 它完全是用react构建的 也就是说 html基础也在react中 我有我的根 html 作为应用程序组件 它看起来像这样 var AppTemplate React createClass displayNam
  • 运行 gulp 会给出“path.js:7 throw new TypeError('Path must be a string. Received ' +spect(path));”

    在我的 WordPress 项目中我使用Laravel Elixir来处理资产 直到今天一切都正常 现在每次我跑步gulp我越来越 gulp path js 7 throw new TypeError Path must be a stri
  • 我可以以低权限运行 Node.JS 吗?

    我想以低权限用户运行节点 可以吗 我需要使用 Express js 框架 是的 有许多解决方案可用于执行此操作 具体取决于您的具体需求 如果你想在端口 80 上运行节点 你可以使用 nginx 尚不能与 WebSockets 配合使用 或h
  • 为什么 NPM 7.17 不安装我的对等依赖项

    我有一个main依赖于包的项目package1在本地文件存储中 package1同行取决于快递 name package1 version 1 0 0 description main index js scripts test echo
  • 如何最高效地更新MongoDB中的大量文档?

    我想要最有效地更新大量 gt 100 000 文档 我的第一个天真的方法是在 JS 级别上进行 编写脚本 首先获取 ids 然后循环 ids 并通过 id 调用更新 完整 文档或 set 补丁 我遇到了内存问题 还将数据分成了最大块 500
  • NestJs:如何使 Body 输入形状与实体的 DTO 不同?

    我的照片和标签对象有 DTO 如下所示 export class PhotoDto readonly title string readonly file string readonly tags TagDto export class T
  • 如何从脚本中退出 NodeJS 脚本?

    现在我有一个为我设置数据库的nodeJS 脚本 每当我在命令行中运行它时 我都需要按 ctrl C 退出脚本 我假设nodeJS中有某种命令可以让它在完成后自行退出 但我似乎无法通过在interwebz上进行搜索来找到任何此类命令 有人知道
  • 启动应用程序时,“npm start”和“node app.js”之间的区别?

    我已经使用命令安装了一个应用程序express new filename 我刚刚了解到您可以使用以下方式启动应用程序 npm start 到目前为止我已经使用过 node app js 启动我的服务器 有人知道两者有什么区别吗 谢谢 来自m
  • 无法从index.js解析模块@babel/runtime/helpers/interopRequireDefault

    我刚刚克隆了这个存储库 反应本机纸 https github com callstack react native paper 但是当我在根目录上运行时 yarn install 我收到以下警告 D react native paper m
  • 如何使用 gcloud 凭据对 Dialogflow API 进行身份验证

    我有一个 Node JS 应用程序 可以向 Dialogflow 代理发出请求 我实际上使用基于临时令牌的请求 但是我如何更改它以通过谷歌服务凭证来做到这一点 https cloud google com docs authenticati
  • Nodejs + mongodb:如何查询 $ref 字段?

    我将 MongoDB 与 Nodejs REST 服务一起使用 该服务公开了存储在其中的数据 我有一个关于如何查询使用 ref 的数据的问题 这是一个对象的示例 其中包含对花药集合中另一个对象 详细信息 的引用 id ObjectId 59
  • 如何在expressjs中调用另一个api?

    我有一个这样的API app get test req res gt console log this is test 和另一个API app get check req res gt I want to call test api wit
  • 从 Puppeteer 中的 page.evaluate 获取元素? [复制]

    这个问题在这里已经有答案了 我正在与Node js and 傀儡师第一次 找不到输出值的方法page evaluate到外部范围 我的算法 Login Open URL Get ul 循环每个li然后点击它 等待innetHTML要设置并添
  • 快递+护照+会话。为每个页面加载执行查询

    我正在使用 Express 4 2 0 和 Passport 0 2 0 我使用的express session中间件是1 2 1 我对节点身份验证比较陌生 所以请耐心等待 我注意到 对于每个页面加载 护照正在执行数据库请求 Executi
  • nodejs googleapis,authClient.request 不是函数

    我正在像这样的一个函数中创建一个 oauth2client 并返回它 实际上 我确实传递了客户端 ID 秘密 重定向 URL 和凭据 据我检查 这些都是正确的 var OAuth2 google auth OAuth2 var oauth2
  • 如何将子集合添加到 Firestore 中的文档? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 没有关于如何在Firestore中的文档中添加子集合的文档 那么如何使用Web应用程序添加子集合 我尝试了这个但没有成功 如何使用代码
  • 如何在 Node.js 中将 HTML 转换为图像

    我需要在 Node 服务器上将 HTML 模板转换为图像 服务器将以字符串形式接收 HTML 我尝试过 PhantomJS 使用一个名为 Webshot 的库 但它不能很好地与 Flex 框和现代 CSS 配合使用 我尝试使用 Chrome
  • 规则和夏令时

    我在用着rrule https github com jakubroztocil rrule在我的数据库中创建和存储事件 一切正常 直到我发现我的重复事件与 3 月 31 日之后有一个小时的差异 在法国 这一天我们进行夏令时更改 实际上 我
  • ElectronJS 捕获屏幕质量低

    我正在使用 ElectronJS 测试屏幕捕获 我可以捕获屏幕 但捕获的视频质量低于原始视频 操作系统 Linux Mint 20 电子版本 11 1 0 这是我的代码 我选择我的屏幕 然后使用以下命令在电子应用程序中显示捕获的屏幕vide

随机推荐

  • 扫描网站内容(快速)

    我的数据库中有数千个网站 我想在所有网站中搜索特定字符串 最快的方法是什么 我认为我应该首先获取每个网站的内容 这就是我这样做的方式 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 协议不支持文件级别的部分更新 这意