【问题标题】:Get webTorrent to play .mp4 file stored in AWS private s3 bucket获取 webTorrent 以播放存储在 AWS 私有 s3 存储桶中的 .mp4 文件
【发布时间】:2020-12-29 22:16:57
【问题描述】:

我正在使用 reactjs 和烧瓶。在获得存储在私有 s3 存储桶中的 .mp4 文件的 torrent 后,我​​正在尝试使用 webtorrent 在浏览器中显示和播放它。 但是视频内容没有加载

这是Load and play 1 GB .mp4 in reactjs, stored in private s3 bucket 的后续问题。目前,s3 存储桶是公开的。因为私有文件抛出错误。

参考代码 - https://codepen.io/drngke/pen/abNGbEg

const magnet = 'https://datavocal.s3.amazonaws.com/s3outputx.mp4.torrent'

const client = new WebTorrent()

client.add(magnet, (torrent) => {
  console.log(torrent.files)
  
   torrent.files[0].appendTo('body')

});
client.on("error", (err) => console.log(err))

【问题讨论】:

  • 我看到了您的原始帖子,但从未回复(抱歉)。我已经用我能想到的回答了这个问题......不幸的是,我认为这是不可能的,但我欢迎进行第二次分析,以防我误解了一些东西。

标签: reactjs amazon-s3 video video-streaming webtorrent


【解决方案1】:

我不确定这是否可行。

来自webtorrent 文档:

为了让 BitTorrent 在 WebRTC(这是唯一可以在网络上运行的 P2P 传输)上运行,我们对协议进行了一些更改。因此,基于浏览器的 WebTorrent 客户端或“web peer”只能连接到支持 WebTorrent/WebRTC 的其他客户端

还有:

要将文件播种到网络对等方,请使用支持 WebTorrent 的客户端,例如WebTorrent Desktop,具有熟悉 UI 的桌面客户端,可以连接到 Web 对等点、webtorrent-hybrid、命令行程序或 Instant.io、网站。

所以我猜 S3 必须支持 WebTorrent/WebRTC,但我认为它不会。

如果我对上图的理解是正确的,您可以在 S3 和您的网络对等方之间运行一个混合客户端,但是您需要在某处托管混合客户端,这会使 S3 在该设置中变得多余。

【讨论】:

  • 感谢您的回复。我在 WebTorrent github 上也得到了类似的答案。我需要在私有服务器中启动我自己的混合对等体。 AWS 没有为文件播种的浏览器对等点(又名 WebRTC 对等点)。我现在正在尝试从烧瓶发送此文件以使用 send_file 做出反应并失败。如果您知道如何在 reactjs 中发送和流式传输 mp4 视频,那将非常有帮助。
  • (1) 为什么不省掉复杂的种子文件,只在某处在线保存一个实际 MP4 文件(例如:DropBox 或 Github 或您的自己的网站文件夹)。 (2) 测试不同的MP4 like this one,它在您的 S3 服务器上用作种子时是否可以播放?此测试将确认您自己的文件是否是导致无法播放的问题。
  • @VC.One (2) 试过那个 mp4。在浏览器中仍然得到相同的结果。 Codepen 供参考 - codepen.io/drngke/pen/abNGbEg。对于 (1) 用户正在上传数据,所以不能真正将其存储在 Dropbox 中,对吧?我现在不是很热衷于洪流。尝试在后端(烧瓶)下载文件,然后将其发送到前端(反应)。如果您对如何操作有任何想法,请分享。
  • 想通了。我只需要传递返回文件实际路径的端点。因此,对于返回 send_file('path_of_video') 的 @app.route('/vid/'),传递
猜你喜欢
  • 1970-01-01
  • 2018-01-14
  • 2021-12-14
  • 2017-08-31
  • 2018-10-26
  • 2019-01-25
  • 2017-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多