Vue verwendet das Video-Tag, um die Videowiedergabe zu implementieren

Vue verwendet das Video-Tag, um die Videowiedergabe zu implementieren

In diesem Artikel wird der spezifische Code von Vue, der das Video-Tag verwendet, um die Videowiedergabe zu Ihrer Information zu implementieren, geteilt. Der spezifische Inhalt ist wie folgt

Projektanforderungen: Dynamische Anzeige der Video-Bildlaufleiste, Verbot des Video-Downloads, Aktualisierung der aktuellen Dauer alle 5 Sekunden während der Wiedergabe und Anhalten des Videos, um alle 10 Minuten eine Eingabeaufforderung anzuzeigen.
Bisher wurde beim Abspielen von Videos grundsätzlich die Komponente vue-video-player verwendet, da diese über vollständige Kapselungsfunktionen und eine gute Kompatibilität mit der Wiedergabequelle verfügt.
Aufgrund der Anforderungen dieses Projekts habe ich auch die Eigenschaften und Methoden des Video-Tags eingehend studiert. Lassen Sie mich hier die Einzelheiten mit Ihnen teilen.

Die spezifische Verwendung ist wie folgt

 <Vorlage>
  <!-- Videokomponente -->
  <div id="gemeinsames-video" Klasse="h-100">
    <div :class="{ isShow: Steuerung }" class="h-100">
      <Video
        ref="meinVideo"
        :poster="Poster"
        :src="Quelle"
        :Steuerung="Steuerung"
        oncontextmenu="false zurückgeben"
        @timeupdate="Zeitupdate"
        Kontrollliste="kein Download"
        Klasse="Video-Box"
      ></video>
      <Bild
        Quelle="@/assets/images/playbtn.png"
        alt=""
        @click="Video bedienen"
        Klasse = "Zeiger-Operator-BTN"
        :Klasse="{ 'Ausblenden': Videostatus }"
      />
    </div>
  </div>
</Vorlage>

<Skript>
Standard exportieren {
  Name: "CommonVideo",
  Daten() {
    zurückkehren {
      videoState: false, // Videowiedergabestatus // Lernzeit studyTime: {
        currentTime: 0, // Aktuelle Lernzeitdauer: 0 // Gesamtzeit},
      Timer: {}, // Timer pauseTimer: {} // Timer pausieren };
  },
  /**
   * @param Poster-Anzeigebild* @param src Videoressource* @param steuert, ob Steuerelemente angezeigt werden sollen* @param Steuerungssteuerung* @param videoData grundlegende Videodaten*/
  Requisiten: {
    Poster:
      Typ: Zeichenfolge,
      erforderlich: false,
      Standard: ""
    },
    Quelle: {
      Typ: Zeichenfolge,
      erforderlich: true
    },
    Kontrollen: {
      Typ: Boolean,
      erforderlich: false,
      Standard: true
    },
    Kontrolle: {
      Typ: Boolean,
      erforderlich: false,
      Standard: false
    },
    videoDaten: {
      Typ: Objekt,
      erforderlich: true
    }
  },
  montiert() {
    // Auf Videowiedergabe warten this.$refs.myVideo.addEventListener("play", () => {
      console.log("Video wird abgespielt");
      dies.openTimer();
    });
    // Auf Videopause warten this.$refs.myVideo.addEventListener("pause", () => {
      console.log("Video wurde gestoppt");
      dies.closeTimer();
    });
  },
  Methoden: {
    // Öffne den Timer openTimer() {
      dieser.timer = setzeInterval(() => {
        dies.$emit("videoStudyTime", diese.studyTime);
      }, 5000);
    },
    // Schließe den Timer closeTimer() {
      : ClearInterval(dieser.Timer);
      dies.$emit("videoStudyTime", diese.studyTime);
    },
    // Öffne den Pausentimer openPauseTimer() {
      this.pauseTimer = setInterval(() => {
        this.hintOperate();
      }, 600000);
    },
    // Schließe den Pausentimer closePauseTimer() {
      : ClearInterval(dieser.pauseTimer);
    },
    // Hinweisoperation hintOperate() {
      dies.operateVideo();
      this.$alert("Bitte klicken, um zu bestätigen und mit dem Lernen fortzufahren", "Prompt", {
        confirmButtonText: "Bestätigen",
        confirmButtonClass: "Hinweis-BTN",
        showClose: false,
        Rückruf: Aktion => {
          dies.$refs.myVideo.currentTime = dies.videoData.currentTime;
          dies.operateVideo();
          this.openPauseTimer();
        }
      });
    },
    // Aktuelle Wiedergabeposition abrufen timeupdate(e) {
      diese.Studienzeit.aktuelleZeit = e.Ziel.aktuelleZeit;
      diese.Studienzeit.Dauer = e.Ziel.Dauer? e.Ziel.Dauer: 0;
    },
    // Videowiedergabe steuern und pausieren operateVideo() {
      wenn (!this.src) {
        this.$message({ message: "Keine Videoressourcen, bitte sehen Sie sich andere Videos an!" });
        gibt false zurück;
      }
      wenn (this.$refs.myVideo.paused) {
        dies.$refs.myVideo.play();
        dieser.videoState = wahr;
      } anders {
        dies.$refs.myVideo.pause();
        dieser.videoState = falsch;
      }
    }
  },
  betrachten:
    //Überwachungsvorgang videoData(val, oldVal) {
      const { aktuelleZeit, Dauer } = val;
      wenn (aktuelleZeit && Dauer && aktuelleZeit < Dauer) {
        this.hintOperate();
      }
    }
  }
};
</Skript>

<style lang="less">
#gemeinsames-video {
  Position: relativ;
  .video-box {
    Box-Größe: Rahmenbox;
    Rand: 0;
    Anzeige: Block;
    Breite: 100 %;
    Höhe: 100%;
    Gliederung: keine !wichtig;
  }
  .isShow {
    //Fortschrittsbalken video::-webkit-media-controls-timeline {
      Anzeige: keine;
    }
  }
  video::-webkit-mediensteuerung-wiedergabetaste {
    Sichtbarkeit: versteckt;
  }
  .operate-btn {
    Anzeige: Block;
    Breite: 60px;
    Höhe: 60px;
    Position: absolut;
    oben: berechnet (50 % – 30 Pixel);
    links: calc(50% - 30px);
  }
  .operate-btn:hover {
    Deckkraft: 0,8;
  }
  .ausblenden {
    Deckkraft: 0;
  }
}
</Stil>

Notiz:

1. Verwenden Sie das Attribut isShow mit CSS-Stil, um die Video-Bildlaufleiste dynamisch anzuzeigen
2. Verwenden Sie das Attribut oncοntextmenu="return false" des Video-Tags, um das Herunterladen zu verhindern
3. Verwenden Sie die Methode @timeupdate="timeupdate" des Video-Tags, um den Fortschritt der Videowiedergabe zu überwachen
4. Verwenden Sie das Ref-Attribut von Vue, um das Überwachungsereignis an das Video-Tag zu binden und andere Funktionen zu implementieren, z. B. Dauerstatistiken, Verzögerungsaufforderungen, dynamische Anzeige von Symbolwiedergabeschaltflächen usw.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • So verwenden Sie das Vue-Video-Player-Plugin für die Vue-Videowiedergabe
  • Vue verwendet video.js für die Videowiedergabe
  • Beispiel für die Wiedergabe eines m3u8-Videostreams mit Vue in Kombination mit Video.js
  • Vue-Code zur Pausenfunktion der Videowiedergabe
  • Detaillierte Konfiguration des Videoplayers vue-video-player
  • vue + typescript + video.js zur Realisierung der Streaming-Videoüberwachungsfunktion
  • So lösen Sie das M3U8-Videowiedergabeformat mit Vue Video.js
  • Beispielcode für den Videoplayer vue-dplayer
  • Vue+video.js implementiert Video-Wiedergabelisten
  • So verwenden Sie den h5-Video-Tag in Vue, um lokale Videos in einem Popup-Fenster abzuspielen

<<:  Tutorial zur MySQL-Optimierung: Große Paging-Abfrage

>>:  Implementierung von Nginx-Filterzugriffsprotokollen für statische Ressourcendateien

Artikel empfehlen

Vertieftes Verständnis davon in JavaScript

Vertieftes Verständnis davon in Js JavaScript Ber...

Analyse des Verwendungsbeispiels für den Common Table Expression CTE in mysql8

Dieser Artikel beschreibt anhand eines Beispiels ...

TinyEditor ist ein einfacher und benutzerfreundlicher HTML-WYSIWYG-Editor

Vor einigen Tagen habe ich Ihnen einen inländisch...

So blockieren und verbieten Sie Webcrawler im Nginx-Server

Jede Website stößt normalerweise auf viele Crawle...

Vue+el-table realisiert das Zusammenführen von Zellen

In diesem Artikelbeispiel wird der spezifische Co...

Drei Beispiele für Unschärfe-Hintergrundeffekte mit CSS3

Beginnen wir nicht mit der Einleitung, sondern ko...

So passen Sie mit CSS einen schöneren Link-Prompt-Effekt an

Vorschlag: Das möglichst häufige handschriftliche ...

Detaillierte Erklärung des Linux-Netstat-Befehls

Inhaltsverzeichnis Linux-Netstat-Befehl 1. Detail...

Lösung zum Vergessen des MySQL-Passworts unter Linux

Das Problem ist folgendes: Ich habe den Befehl my...

mysql: [FEHLER] unbekannte Option '--skip-grant-tables'

MySQL-Datenbank meldet FEHLER 1045 (28000): Zugri...

Universelle Lösung für den Fehler beim Starten von MySQL unter Windows

MySQL-Startfehler Vor der Installation von MySQL ...

Funktionsweise von SQL-SELECT-Datenbankabfragen

Obwohl wir keine professionellen DBAs sind, könne...