IPFS分散ストレージネットワークに基づくビデオオンライン再生Webサイト
プロジェクト コード クラウド アドレス: https://gitee.com/baldness_and_coldness/ipfs_streaming
1.IPFSの紹介
IPFS は、まったく新しいハイパーメディア テキスト転送プロトコルです. ターゲットは Http ハイパーテキスト転送プロトコルです. ただし、IPFS プロトコルは Http プロトコルとは異なり、分散型プロトコルです.
分権化とは?
集中化: すべてのデータは中央サーバーに保存され、すべてのクライアントは中央サーバーからサービスを要求する必要があります。
利点: 高いデータ セキュリティ、実装しやすい機能
短所: 中央サーバーへの依存度が高く、単一障害点が発生しやすく、パフォーマンスのボトルネックが発生しやすい
分散化: ネットワークに参加するノードはクライアントとサーバーの両方であり、すべてのノードは同等のステータスを持ちます
利点: ネットワーク フェーズがより安定し、パフォーマンスが向上します。
短所:複雑な通信プロトコル設計
2. プロジェクト紹介
IPFS分散ストレージネットワークを使用してビデオデータを保存し、ブラウザを介してビデオアップロードとオンライン再生の機能を実現します。
3. プロジェクトの構造
主に、ブラウザ ページ、Node.js サーバー、およびIPFS ネットワークの3 つの部分で構成されます。
4. プロジェクトのインストール
1. ffmpeg をインストールします
( https://blog.csdn.net/chy466071353/article/details/54949221を参照)
2. ipfs をインストールします
( https://blog.csdn.net/lhx0525/article/details/103528680を参照)
3. ipfs を初期化し、ipfs デーモンを実行してデーモン プロセスを開始します
4. npm installで関連する依存パッケージをインストールします
5. npm start でプロジェクトを実行します
6. ブラウザ URL: http://localhost:3000/
5. プロジェクトのプロセス
アップロードされたビデオはオンラインでよりスムーズに再生する必要があるため、ビデオは HLS プロトコルに従ってスライスおよび処理され、具体的な実装はffmpegツールキットによって完了します。
1: ブラウザは動画をサーバーにアップロードします
2: サーバーはアップロードされたデータをブロックに分割し、IPFS ネットワークに送信します
3: IPFS ネットワークはデータの保存を完了すると、対応する一意のハッシュ コードをサーバーに返します、およびサーバーはそれを永続化して、対応する 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 に保存する必要があります。
これにより、アクセス速度が大幅に高速化されると同時に、クリックによる並べ替えやホットリストなどの機能の実装が容易になります。