基于IPFS视频存储的在线视频网站

基于IPFS视频存储的在线视频网站,第1张

基于IPFS分布式存储网络的视频在线播放网站

项目码云地址:https://gitee.com/baldness_and_coldness/ipfs_streaming

1、IPFS介绍

IPFS是一种全新的超媒体文本传输协议,对标的是Http超文本传输协议,但与Http协议不同的是,IPFS协议是一种去中心化的协议。

什么是去中心化?

中心化:所有数据保存于中心服务器,所有客户端需要向中心服务器请求服务。

优点:数据安全性高,功能易于实现

缺点:高度依赖中心服务器,容易出现单点故障、性能瓶颈问题

去中心化:加入网络的任意节点既是客户端,也充当服务器的角色,所有节点地位平等

优点:网络相更加稳定,性能表现更好

缺点:通信协议设计复杂

2、项目简介

使用IPFS分布式存储网络存储视频数据,并通过浏览器实现视频上传和在线播放的功能。

3、项目架构


主要包括浏览器页面、Node.js服务器和IPFS网络三个部分。

4、项目安装

1、安装 ffmpeg
(参考https://blog.csdn.net/chy466071353/article/details/54949221)
2、安装 ipfs
(参考https://blog.csdn.net/lhx0525/article/details/103528680)
3、初始化ipfs并运行ipfs daemon启动守护进程
4、npm install 安装相关依赖包
5、npm start 运行项目
6、浏览器网址:http://localhost:3000/

5、项目流程

由于上传的视频需要能较为流畅的在线播放,这里按照了HLS协议,将视频进行切片处理,具体实现由ffmpeg工具包完成。

1:浏览器上传视频到服务器
2:服务器对上传数据做分块处理,然后将其发送到IPFS网络
3:IPFS网络将数据存储完成后,将相对应的唯一Hash码返回服务器,服务器对其持久化,生成相对应的m3u8文件。

(上传视频的相关代码在项目的server.js中)

1、浏览器向服务器发起请求,通过视频名字找到响应索引文件.m3u8
2、服务器返回索文件
3、浏览器向IPFS系统请求.m3u8中相对应的文件
4、IPFS返回TS数据

(在线播放视频的相关代码在项目的play.js和app.js中)

项目核心是: 1、使用ffmpeg分割和播放视频 2、通过js工具包ipfs-api,使用js代码 *** 作IPFS网络。
由于资源受限,没有引入独立数据库,只能把m3u8文件持久化在Node.js服务器。 如果可以,应该搭建独立数据库,将m3u8文件和ts文件全部保存到IPFS网络,m3u8文件的访问连接保存到mysql中。 这样做可以大大加快访问速度,同时可以更简单实现诸如按照点击量排序、热度榜这样的功能

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/925766.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存