So verwenden Sie video.js in Vue zum Abspielen von Videos im M3U8-Format

So verwenden Sie video.js in Vue zum Abspielen von Videos im M3U8-Format

@[toc] Hinweis:

 "vue": "^2.6.11",
 "video.js": "^7.10.2",
 "videojs-contrib-hls": "^5.15.0",
 "mux.js": "^5.7.0"

1. Installation

Garn fügt Video.js hinzu
yarn add videojs-contrib-hls // Dies ist ein Plugin, das zum Abspielen von HLS-Streams erforderlich ist yarn add mux.js // Wenn es im Vue-Projekt nicht installiert ist, kann ein Fehler auftreten

2. Einführung in videojs

1. Erstellen Sie einen Plugin-Ordner unter dem src-Ordner und erstellen Sie eine video.js-Datei;

Der Inhalt der Datei video.js ist wie folgt:

importiere "video.js/dist/video-js.css"; // Importiere das CSS von video.js
importiere hls von „videojs-contrib-hls“; // Zum Abspielen des HLS-Streams ist ein Plug-in erforderlich. importiere Vue von „vue“;
Vue.use(hls);

2. Importieren Sie die Datei video.js jetzt in main.js

importiere "./plugins/video.js"; // Importiere die soeben definierte Datei video.js

3. Testen und in Komponenten verwenden

1. Implementieren Sie eine grundlegende automatische Wiedergabe

Test.vue-Datei

<Vorlage>
 <div Klasse="test-videojs">
 <video id="videoPlayer" class="video-js" stummgeschaltet></video>
 </div>
</Vorlage>
<Skript>
importiere Videojs aus "video.js"; // Videojs importieren 
Standard exportieren {
 Daten() {
 zurückkehren {
 // https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8 ist ein Video. Sie können cctv1 (eine Live-Übertragung, die nicht zurückgespult werden kann) damit ersetzen, um den Effekt des Vor- und Zurückspulens zu sehen nowPlayVideoUrl: "http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8"
 };
 },
 montiert() {
 dies.initVideo(diese.nowPlayVideoUrl);
 },
 Methoden: {
 initVideo(jetztPlayVideoUrl) {
  // Diese Optionsattribute können auch direkt im Video-Tag gesetzt werden, siehe stummgeschaltet
  let Optionen = {
  autoplay: true, // Automatische Wiedergabesteuerung festlegen: true, // Quellen für Wiedergabesteuerung anzeigen: [
   // Beachten Sie, dass, wenn src als Option festgelegt ist, kein Kanalwechsel möglich ist (auch wenn nowPlayVideoUrl überwacht wird).
   {
   Quelle: nowPlayVideoUrl,
   Typ: „application/x-mpegURL“ // Sagen Sie videojs, dass dies ein HLS-Stream ist}
  ]
  };
  // Der erste Parameter von videojs stellt die ID des Videos im Dokument dar
  const myPlayer = Videojs("videoPlayer", Optionen, Funktion onPlayerReady() {
  console.log("this in onPlayerReady refers to:", this); // dies hier bezieht sich auf Player, eine von Videojs erstellte Instanz console.log(myPlyer === this); // Dies gibt true zurück
  });
 }
 }
};
</Skript>
<style lang="scss">
#videoPlayer {
 Breite: 500px;
 Höhe: 300px;
 Rand: 50px automatisch;
}
</Stil>

Der Videowiedergabeeffekt ist wie unten dargestellt:

Das Druckergebnis sieht wie folgt aus:

2. Kanalwechsel durchführen

Test.vue-Datei

<Vorlage>
 <div Klasse="test-videojs">
 <video id="videoPlayer" class="video-js"></video>
 <el-button type="danger" @click="changeSource">Zu CCTV3 wechseln</el-button>
 </div>
</Vorlage>
<Skript>
importiere Videojs aus "video.js"; // Videojs importieren
Standard exportieren {
 Daten() {
 zurückkehren {
  nowPlayVideoUrl: "http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8",
  Optionen:
  autoplay: true, // Autoplay einstellen muted: true, // Auf true setzen, um die automatische Wiedergabe zu erreichen, und das Video wird stummgeschaltet (Chrome 66 und höher verbietet die automatische Wiedergabe von Audio und Video)
  preload: "auto", // Preload-Steuerung: true // Wiedergabesteuerung anzeigen},
  Spieler:null
 };
 },
 montiert() {
 dies.getVideo(diese.nowPlayVideoUrl);
 },
 Methoden: {
 getVideo(jetztPlayVideoUrl) {
  this.player = Videojs("videoPlayer", this.options);
  //Tastencode, src dynamisch festlegen, um den Kanalumschaltvorgang zu implementieren this.player.src([
  {
   Quelle: nowPlayVideoUrl,
   Typ: „application/x-mpegURL“ // Sagen Sie videojs, dass dies ein HLS-Stream ist}
  ]);
 },
 Quelle ändern() {
  this.nowPlayVideoUrl = "http://ivi.bupt.edu.cn/hls/cctv3hd.m3u8";
  console.log(this.nowPlayVideoUrl, "geändert");
 }
 },
 betrachten:
 nowPlayVideoUrl(neuerWert, alt) {
  dies.getVideo(newVal);
 }
 },
 vorZerstören() {
 wenn (dieser.Spieler) {
  this.player.dispose(); // Player entfernen, diese Methode setzt den internen Status von videojs zurück und entfernt dom
 }
 }
};
</Skript>
<style lang="scss">
#videoPlayer {
 Breite: 500px;
 Höhe: 300px;
 Rand: 50px automatisch;
}
</Stil>

Der Video-Umschalteffekt ist wie unten dargestellt:

4. Hinweise zu Fallstricken

1. Das Video kann nicht automatisch abgespielt werden oder es wird eine Fehlermeldung angezeigt: DOMException: play() fehlgeschlagen

Zur Lösung muss das Stummschaltattribut verwendet werden

Fehlermeldung: DOMException: play() ist fehlgeschlagen, da der Benutzer nicht zuerst mit dem Dokument interagiert hat. (Der Benutzer hat noch nicht interagiert, daher kann „play“ nicht aufgerufen werden)

Lösung: Setzen Sie die stummgeschaltete Eigenschaft auf true

 <video id="videoPlayer" class="video-js" stummgeschaltet></video>

Über das Stummschaltattribut:

  • Die Eigenschaft „muted“ legt fest oder gibt zurück, ob der Ton stummgeschaltet werden soll (ausschalten); der Eigenschaftswert ist „true“ und „false“.
  • muted="false" bedeutet, dass das Video nicht stummgeschaltet werden muss (das Video wird mit Ton abgespielt), wenn jedoch muted="false" gesetzt ist, kann das Video nicht automatisch abgespielt werden.
  • Stummschaltungsfunktion im Video-Tag: Automatische Videowiedergabe zulassen (ab Chrome Version 66 ist die automatische Wiedergabe von Video und Audio verboten)

2. Beim Kanalwechsel wurde die URL erfolgreich geändert, das Video ist aber immer noch das gleiche wie zuvor

Um dies zu erreichen, müssen Sie src dynamisch festlegen.

// Quelle dynamisch festlegen
dieser.Player.src([
  {
   Quelle: nowPlayVideoUrl,
   Typ: „application/x-mpegURL“ // Sagen Sie videojs, dass dies ein HLS-Stream ist}
 ]);

3. Das Modul mux.js kann nicht gefunden werden

Fehlerinformationen: * mux.js/lib/tools/parse-sidx in ./node_modules/video.js/dist/video.es.js Um es zu installieren, können Sie Folgendes ausführen: npm install --save mux.js/lib/tools/parse-sidx

Lösung: Installieren Sie mux.js

Garn fügt mux.js hinzu

5. RTMP-Stream abspielen

Die Bedienung des Abspielens eines RTMP-Streams ist fast identisch mit der Bedienung des Abspielens eines HLS-Streams, außer dass:

importiere "videojs-flash"; // Zum Abspielen des RTMP-Stream-Typs ist ein Plug-in erforderlich: „rtmp/flv“, // Dieser Typwert ist erforderlich, um videojs mitzuteilen, dass dies ein RTMP-Stream-Video ist

Oben finden Sie Einzelheiten zur Verwendung von video.js in vue zum Abspielen von Videos im m3u8-Format. Weitere Informationen zur Verwendung von videojs in vue zum Abspielen von Videos im m3u8-Format finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Vue verwendet das Video-Tag, um die Videowiedergabe zu implementieren
  • Vue-Video-Player-Betrieb für Vue
  • Detaillierte Konfiguration des Videoplayers vue-video-player
  • vue-video-player implementiert Echtzeit-Videowiedergabe (Überwachungsgerät-RTMP-Stream)
  • Nachdem das kurze Video-Wasserzeichen nach der Analyse der Video-Tag-Wiedergabe in Vue entfernt wurde, reagiert das Video nicht mehr

<<:  Grafisches Tutorial zur Installation und Konfiguration von MySQL 5.7.11 Zip

>>:  So verwenden Sie Nginx, um die Koexistenz mehrerer Container auf dem Server zu realisieren

Artikel empfehlen

So verwenden Sie den Linux-Befehl nl

1. Befehlseinführung nl (Anzahl der Zeilen) fügt ...

Codebeispiel für die Implementierung des Linux-Verzeichniswechsels

Das Wechseln von Dateien ist eine gängige Operati...

So implementieren Sie Funktions-Currying und -Decurrying in Javascript

Funktion Currying (schwarzes Fragezeichen)? ? ? C...

Ubuntu16.04 Installation mysql5.7.22 Grafik-Tutorial

Installations-Tutorial für VMware12.0+Ubuntu16.04...

Detaillierte Erklärung der Befehle zum Anzeigen von Linux-Dateien

So zeigen Sie Linux-Dateien an Befehl zum Anzeige...

Detaillierte Erklärung des daily_routine Beispielcodes in Linux

Schauen Sie sich zunächst den Beispielcode an: #/...

Entwerfen Sie einen Datensammler mit Vue

Inhaltsverzeichnis Szenario Kernthemen Statusüber...

Zusammenfassung gängiger Docker-Befehle

Docker-Installation 1. Anforderungen: Linux-Kerne...

Grundlegendes Nutzungs-Tutorial zur IPTABLES-Firewall unter LINUX

Vorwort Für Produktions-VPS mit öffentlicher IP w...

7 Möglichkeiten zum Schreiben einer Vue v-for-Schleife

Inhaltsverzeichnis 1. Verwenden Sie in der v-for-...

Detaillierte Erklärung der Kodierungsprobleme bei MySQL-Befehlszeilenoperationen

1. Überprüfen Sie die MySQL-Datenbankkodierung my...

Eine kurze Diskussion über den virtuellen Speicher von Linux

Inhaltsverzeichnis Herkunft Virtueller Speicher P...