Wenn der vorhandene Videoplayer die Anforderungen nicht erfüllt, müssen Sie das Video selbst kapseln. Video-Events
Protokoll für Live-Übertragung HLS (HTTP Live Streaming) ist ein von Apple vorgeschlagenes Live-Streaming-Protokoll. Sowohl iOS als auch höhere Android-Versionen unterstützen HLS. HLS besteht hauptsächlich aus zwei Wiedergabedateien: .m3u8 und .ts. HLS bietet eine hohe Kompatibilität und Skalierbarkeit, kann jedoch zu Verzögerungen bei Live-Übertragungen führen. Das HLS-Protokoll unterteilt den Live-Stream in kleine Segmente zum Herunterladen und Abspielen. Angenommen, die Liste enthält 5 TS-Dateien und jede TS-Datei enthält 5 Sekunden Videoinhalt, beträgt die Gesamtverzögerung 25 Sekunden. RTMP (Real Time Messaging Protocol) ist ein Satz von Live-Video-Protokollen, die von Macromedia entwickelt wurden, das jetzt zu Adobe gehört. RTMP basiert auf Flash und kann nicht in iOS-Browsern abgespielt werden, aber seine Echtzeitleistung ist besser als HLS. HTTP-FLV ist ein Live-Verteilungsstream für das FLV-Videoformat mit geringer Latenz. Auf Mobilgeräten wird es jedoch nicht unterstützt. Fazit: HTTP-FLV hat eine geringe Latenz und wird bevorzugt. Wenn das Gerät HTTP-FLV nicht unterstützt, verwenden Sie flv.js. Wenn das Gerät flv.js nicht unterstützt, wird HLS verwendet, aber HLS hat eine große Verzögerung. Video einkapseln/** HTML **/ <div Klasse="Video"> <!-- Videoplayer --> <Video Klasse="Video__Player" ref="Videoplayer" vorladen="auto" :autoplay="Optionen.autoplay" :gedämpft="Optionen.gedämpft" webkit-playsinline="true" spielt inline = "true" x-webkit-airplay="erlauben" x5-video-player-type="h5-Seite" x5-video-orientation="Porträt" Stil="Objekt-Fit:Cover;" > <Quelle: src="Optionen.src" /> </video> <!-- Videoposter --> <div v-show="Poster anzeigen" Klasse="video__poster" :style="{'Hintergrundbild': 'url(' + options.pic + ')'}" ></div> <!-- Video wird geladen --> <div v-show="showLoading" class="video__Loading"> <span class="video__Loading-icon"></span> </div> <!-- Videopause --> <div @click="handleVideoPlay" Klasse="video__pause"> <span v-show="!videoPlay" class="video__pause-icon"></span> </div> </div> /**js**/ Requisiten: { Optionen: Typ: Objekt, Standard: () => {} } }, Daten() { zurückkehren { videoPlay: false, // Wird das Video gerade abgespielt? videoEnd: false, // Ist das Video zu Ende? showPoster: true, // Wird das Video-Cover angezeigt? showLoading: false, // Wird geladen currentTime: 0, // Aktuelle Abspielposition currentVideo: { Dauer: this.options.duration }, } }, montiert() { dieser.videoPlayer = dieser.$refs.videoPlayer; dieser.videoPlayer.aktuelleZeit = 0; this.videoPlayer.addEventListener("loadstart", e => { this.videoPlayer.currentTime = (this.options.playProcess > 0) ? this.options.playProcess : 0; }); // Videolänge abrufen this.videoPlayer.addEventListener("durationchange", e => { dieses.aktuelleVideo.dauer = dieses.videoPlayer.dauer; // Wiedergabeverlauf vorhanden this.videoPlayer.currentTime = (this.options.playProcess > 0) ? this.options.playProcess : 0; }); this.videoPlayer.addEventListener("wird abgespielt", e => { dies.showPoster = falsch; dieses.videoPlay = true; Dies.showLoading = falsch; this.videoEnd = falsch; }); // Pause this.videoPlayer.addEventListener("pause", () => { dieses.videoPlay = falsch; wenn (this.videoPlayer.currentTime < 0.1) { dies.showPoster = wahr; } Dies.showLoading = falsch; }); // Wiedergabefortschritt aktualisieren this.videoPlayer.addEventListener("timeupdate", e => { diese.aktuelleZeit = diese.videoPlayer.aktuelleZeit; }, FALSCH ); // Geben Sie die Wiedergabeposition an this.videoPlayer.addEventListener("seeked", e => { }); // Pufferung this.videoPlayer.addEventListener("waiting", e => { Dies.showLoading = wahr; }); // Wiedergabe endet this.videoPlayer.addEventListener("ended", e => { // Status zurücksetzen this.videoPlay = false; dies.showPoster = wahr; this.videoEnd = wahr; diese.aktuelleZeit = diese.aktuelleVideodauer; }); // Achten Sie auf das Ereignis weixinJSBridgeReady, um das Problem zu beheben, dass WeChat nicht automatisch abgespielt werden kann. Dies ist jedoch nicht auf alle anwendbar. Für die manuelle Wiedergabe wurde eine Pausentaste hinzugefügt. document.addEventListener('WeixinJSBridgeReady', () => { dieses.videoPlayer.play(); }, FALSCH); }, Methoden: { handleVideoPlay() { if (this.videoPlayer.paused) { // Abspielen if (this.videoEnd) { // Erneut abspielen this.currentTime = 0; dieser.videoPlayer.aktuelleZeit = 0; } dies.videoPlayer.play(); dieses.videoPlay = true; } sonst { // diesen.videoPlayer.pause() anhalten; dieses.videoPlay = falsch; } } } [Referenzartikel]:
Dies ist das Ende dieses Artikels über das Implementierungsbeispiel des Vue-basierten Videoplayers. Weitere relevante Inhalte zum Vue-Videoplayer finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
Installieren von MySQL 5.7 aus TAR.GZ auf Mac OS ...
1: Nginx-Serverlösung, ändern Sie die .conf-Konfi...
Vorne geschrieben Weibo-Komponenten sind Komponen...
Vorwort Im WeChat-Applet können Sie globalData vo...
Szenario mit dem Problem des Seitenumblätterns B ...
Vorwort Das Grundprinzip der MySQL-Master-Slave-R...
Problembeschreibung Ein Spring + Angular-Projekt ...
In diesem Artikel wird der spezifische Code von j...
Inhaltsverzeichnis 1. Datenbank-Engpass 2. Unterb...
In diesem Artikel erfahren Sie mehr über einen pr...
1. Richten Sie auf der virtuellen Maschine einen ...
Ich werde nicht erklären, was CUDA ist, sondern d...
Vorwort Arrays sind eine spezielle Art von Objekt...
Dieser Artikel stellt hauptsächlich die Lösung fü...
Inhaltsverzeichnis Docker-Datei pom.xml Jenkins-K...