试用HLS视频流和IPFS

2020-04-24 11:02:36

Fission是一个应用程序和Web托管平台,可实现由IPFS支持的Web本机文件系统。在本地构建和运行,fission up可以在任何地方托管。

  我们一直在每周进行开发人员午餐,并通过视频学习课程。我一直在从Zoom下载视频,进行一些基本的修整,然后使用Fission上传,并将IPFS链接嵌入到我们的Discourse论坛中。效果很好– Discourse可以识别视频文件扩展名,并将视频播放器自动嵌入到帖子中。我已经阅读了一些有关HTTP Live Streaming(HLS)的内容,并想尝试一下。

  HLS最初由Apple开发,现已得到广泛支持,不需要任何特殊的服务器端支持。这个freeCodeCamp文章中的内容:

  HLS的最重要特征是其能够使视频的比特率适应连接的实际速度。这样可以优化体验质量。

  HLS视频以不同的分辨率和比特率以不同的格式进行编码。这通常称为比特率阶梯。当连接变慢时,协议会自动将请求的比特率调整为可用带宽。

  – freeCodeCamp:HLS视频流:它是什么,以及何时使用它

  IPFS的JavaScript实现中有一个示例,说明将HLS与js-ipfs一起使用。自述文件说明:

  HLS内容只是“一堆文件”这一事实使它成为IPFS的不错选择(以这种方式工作的另一种协议是MPEG-DASH,这当然也是不错的选择)。此外,hls.js库可实现与HTML5视频元素的直接集成。

  “一堆文件”几乎就是我们对Fission的思考方式。Fission和任何标准IPFS网关均可在任何浏览器中通过HTTP和/或使用IPFS本身提供的文件(无需插件)来提供文件。回到基本上相当于2020年将文件上传到服务器的功能真的很棒。

  我拍摄了Joel谈论陶瓷网络的最新视频文件,并ffmpeg从js-ipfs示例运行了命令。在MacOS上,brew install ffmpeg将为您提供程序。

  ffmpeg -i ../YOURVIDEO.mp4 -profile:v baseline -level 3.0 -start_number 0 -hls_time 5 -hls_list_size 0 -f hls master.m3u8

  在我的台式机iMac上,进度显示编码速度为4到5倍。该视频大约需要一个小时,因此大约需要20分钟才能完成。输出为400多个文件,我上传了文件,fission up然后记下了文件夹的哈希值。


11.png

  使用Fission Drive浏览IPFS上的文件


  然后我回去编辑streaming.js文件夹和index.html。该streaming.js文件仅需要包含HLS编码视频的文件夹的哈希,此视频的哈希为QmYGs1ksGX3eMiGvxNuvRT6PD7zPKZpHyiUDXKGQoL4R7S。随意使用它进行实验!我保留了master.m3u8文件名,因此不需要更改它。

  我所做的一项更改是也将CDN中的IPFS脚本也包含在index.html文件中(js-ipfs示例假定您正在本地运行并在此处使用js-ipfs)。只需添加以下行:

  您可以直接使用Fission Drive浏览所有文件,包括已编码的源视频。访问索引页面将加载播放器,并且HLS流式传输视频。


  HLS视频示例

  这是通过Codepen嵌入的源和视频-点击HTML按钮可以查看源。请注意,Fission网关链接到该streaming.js文件的发布版本,该链接也包括在远程位置:


22.jpg


  首先,视频质量不是很高,向视频元素添加宽度/高度可能会将其限制为不同的大小。

  论坛活动页面上有关乔尔和陶瓷网络的更多信息»


  结论

  这是一个非常手动的过程,并且有很多专用的视频编码服务。很好的实验是看到任何“文件束”都可以在分布式IPFS网络上工作,并且可以轻松地发布和托管在Fission上。

  与仅嵌入原始视频以查看实际用户体验相比,需要对大型高质量视频进行实验,并跨不同设备和网络速度进行测试(以及附近的对等方是否拥有该视频的副本)。喜欢。

  这也引发了有关分布式编码的一些有趣的想法。原始视频一旦被编码并由一个人添加到网络,就不再需要再次编码。从一些简短的研究中,ffmpeg并不是确定性的,这导致了有关Mastodon的话题。这意味着编码视频的不同人员可能会获得不同的输出文件,这意味着IPFS中的哈希值会有所不同。

  但是,原始视频文件是唯一的,因此可以向原始源视频文件添加元数据以发现HLS编码版本的唯一,永久哈希。

  我们目前正在就如何对图像执行此操作进行一些工作,以便可以自动使用不同的大小并将其缓存在网络中。

  Fission是一个应用程序和Web托管平台,可实现由IPFS支持的Web本机文件系统。在本地构建和运行,fission up可以在任何地方托管。


最新推荐