Video-Online-Wiedergabe-Website basierend auf IPFS Distributed Storage Network
Cloud-Adresse des Projektcodes: https://gitee.com/baldness_and_coldness/ipfs_streaming
1. Einführung in IPFS
IPFS ist ein brandneues Hypermedia-Textübertragungsprotokoll.Das Ziel ist das HTTP-Hypertextübertragungsprotokoll.Im Gegensatz zum HTTP-Protokoll ist das IPFS-Protokoll jedoch ein dezentralisiertesProtokoll.
Was ist Dezentralisierung?
Zentralisierung : Alle Daten werden auf dem zentralen Server gespeichert, und alle Clients müssen Dienste vom zentralen Server anfordern.
Vorteile : hohe Datensicherheit, einfach zu implementierende Funktionen
Nachteile : starke Abhängigkeit vom zentralen Server, anfällig für Single Point of Failure, Performance-Engpässe
Dezentralisierung : Jeder Knoten, der dem Netzwerk beitritt, ist sowohl ein Client als auch ein Server, und alle Knoten haben den gleichen Status
Vorteile : Die Netzwerkphase ist stabiler und die Leistung ist besser
Nachteil : komplexes Design des Kommunikationsprotokolls
2. Projektvorstellung
Verwenden Sie das verteilte IPFS-Speichernetzwerk, um Videodaten zu speichern, und realisieren Sie die Funktionen des Video-Uploads und der Online-Wiedergabe über den Browser.
3. Projektstruktur
Es besteht hauptsächlich aus drei Teilen: Browserseite , Node.js-Server und IPFS-Netzwerk .
4. Projektinstallation
1. Installieren Sie ffmpeg
(siehe https://blog.csdn.net/chy466071353/article/details/54949221 )
2. Installieren Sie ipfs
(siehe https://blog.csdn.net/lhx0525/article/details/103528680 )
3. Initialisieren Sie ipfs und führen Sie den ipfs-Daemon aus , um den Daemon-Prozess zu starten.
4. npm install installiert zugehörige Abhängigkeitspakete.
5. npm start führt das Projekt aus
. 6. Browser-URL: http://localhost:3000/
5. Projektablauf
Da das hochgeladene Video reibungsloser online abgespielt werden muss, wird das Video gemäß dem HLS-Protokoll geschnitten und verarbeitet, und die spezifische Implementierung wird durch das ffmpeg- Toolkit abgeschlossen.
1: Der Browser lädt das Video auf den Server hoch.
2: Der Server teilt die hochgeladenen Daten in Blöcke und sendet sie dann an das IPFS-Netzwerk.
3: Nachdem das IPFS-Netzwerk die Datenspeicherung abgeschlossen hat, gibt es den entsprechenden eindeutigen Hash-Code an den Server zurück , und der Server speichert sie, um die entsprechende m3u8-Datei zu generieren.
(Der entsprechende Code zum Hochladen von Videos befindet sich in der server.js des Projekts)
1. Der Browser initiiert eine Anfrage an den Server und findet die Antwortindexdatei .m3u8 über den Videonamen
2. Der Server gibt die Indexdatei zurück
3. Der Browser fordert die entsprechende Datei in .m3u8 vom IPFS-System an
4. IPFS gibt zurück TS-Daten
(Zugehörige Codes für die Online-Videowiedergabe befinden sich in der Datei „play.js“ und „app.js“ des Projekts.)
Der Kern des Projekts ist:
1. Verwenden Sie ffmpeg, um Videos zu teilen und abzuspielen
2. Verwenden Sie über das js-Toolkit ipfs-api den js-Code, um das IPFS-Netzwerk zu betreiben.
Aufgrund begrenzter Ressourcen wird keine unabhängige Datenbank eingeführt, und die m3u8-Datei kann nur auf dem Node.js-Server gespeichert werden.
Wenn möglich, sollten Sie eine unabhängige Datenbank aufbauen, alle m3u8-Dateien und ts-Dateien im IPFS-Netzwerk speichern und die Zugriffsverbindung der m3u8-Dateien zu mysql speichern.
Dadurch kann die Zugriffsgeschwindigkeit enorm beschleunigt werden und gleichzeitig lassen sich Funktionen wie Sortierung nach Klicks und Hotlist einfacher umsetzen