Beispielcode von Vue + Element UI zur Realisierung der Player-Funktion

Beispielcode von Vue + Element UI zur Realisierung der Player-Funktion

Die Anzeige ohne Effektbild ist nur leeres Gerede.

Bildbeschreibung hier einfügen

1. Fortschrittsbalken-Implementierung basierend auf Audio und kombiniert mit elementUI
2. Machen Sie sich mit den Grundfunktionen des Players vertraut, einschließlich Wiedergabe/Pause, Schnellvorlauf, Stummschalten, Lautstärke anpassen, Herunterladen usw.

HTML-Code, wichtige Teile sind kommentiert

<div Klasse="right di main-wrap" v-loading="audio.waiting">
   <!-- Das Ref-Attribut hier kann einfach verwendet werden, um das DOM-Element in der Vue-Komponente über this.$refs.audio--> abzurufen.
   <audio ref="audio" Klasse="dn"
   :src="url" :preload="audio.preload"
   @play="beiWiedergabe"
   @error="beiFehler"
   @waiting="beimWarten"
   @pause="beiPause"
   @timeupdate="beiZeitupdate"
   @loadedmetadata="aufgeladene Metadata"
   ></audio>

   <div Klasse="w-voll">
     <div Klasse = "flex items-center w-10/12 mx-auto">
       <!-- Aktuelle Uhrzeit -->
       <el-tag type="info">{{ audio.currentTime | formatSecond}}</el-tag>

       <!-- Bildlaufleiste -->
       <el-slider v-show="!controlList.noProcess" v-model="sliderTime" :format-tooltip="formatProcessToolTip" @change="changeCurrentTime" class="slider_time"></el-slider>
       <!-- Gesamtdauer-->
       <el-tag type="info">{{ audio.maxTime | formatSecond }}</el-tag>
     </div>
     <div Klasse = "mt-3 Flex-Elemente-Center mit 1/2 mx-auto justify-around">
       <!-- Wiedergabe/Pause -->
       <el-button type="text" @click="startPlayOrPause">{{audio.playing | transPlayPause}}</el-button>
       <!-- Schneller Vorlauf -->
       <el-button v-show="!controlList.noSpeed" type="text" @click="changeSpeed">{{audio.speed | transSpeed}}</el-button>
       <!-- Stumm -->
       <el-button v-show="!controlList.noMuted" type="text" @click="startMutedOrNot">{{audio.muted | transMutedOrNot}}</el-button>
       <!-- Lautstärke -->
       <div Klasse="flex Elemente-Center">
         <span class="mr-2 text-sm">Lautstärke</span>
         <el-slider v-show="!controlList.noVolume" v-model="volume" :format-tooltip="formatVolumeToolTip" @change="changeVolume" class="slider_voice"></el-slider>
       </div>

       <!-- Herunterladen -->
       <a :href="url" rel="external nofollow" v-show="!controlList.noDownload" target="_blank" class="download text-sm" download>Herunterladen</a>
     </div>
   </div>
 </div>

JS-Code

<Skript>
  // Integer in das Format Stunde:Minute:Sekunde umwandeln Funktion realFormatSecond(Sekunde) {
    var zweiterTyp = Typ der Sekunde

    wenn (zweiterTyp === 'Zahl' || zweiterTyp === 'Zeichenfolge') {
      Sekunde = parseInt(Sekunde)

      var Stunden = Math.floor(Sekunde / 3600)
      Sekunde = Sekunde - Stunden * 3600
      var mimute = Math.floor(Sekunde / 60)
      Sekunde = Sekunde - Minute * 60

      returniere Stunden + ':' + ('0' + mimute).slice(-2) + ':' + ('0' + Sekunde).slice(-2)
    } anders {
      Rückgabewert '0:00:00'
    }
  }

  Standard exportieren {
    Name: "Voice-to-Text",
    Requisiten: {
      dieGeschwindigkeiten:
        Typ: Array,
        Standard () {
          Rückgabe [1, 1,5, 2]
        }
      },
      dieKontrollliste: {
        Typ: Zeichenfolge,
        Standard: ''
      }
    },
    Daten(){
      zurückkehren {
        URL: „https://wdd.js.org/element-audio/static/falling-star.mp3“,
        Audio:
          aktuelleZeit: 0,
          maxZeit: 0,
          spielen: falsch,
          stummgeschaltet: falsch,
          Geschwindigkeit: 1,
          warten: wahr,
          Vorladen: „auto“
        },

        Schiebereglerzeit: 0,
        Volumen: 100,
        Geschwindigkeiten: this.theSpeeds,

        Kontrollliste: {
          // Download nicht anzeigen noDownload: false,
          // Stummschaltung nicht anzeigen noMuted: false,
          // Lautstärkebalken nicht anzeigen noVolume: false,
          // Fortschrittsbalken nicht anzeigen noProcess: false,
          // Es kann nur eines gespielt werden onlyOnePlaying: false,
          // Schaltfläche "Kein Schnellvorlauf" noSpeed: false
        }
      }
    },
    Methoden:{
      setzeKontrollliste () {
        let controlList = this.theControlList.split(' ')
        controlList.fürJeden((item) => {
          wenn(diese.controlList[item] !== undefiniert){
            this.controlList[item] = true
          }
        })
      },
      Geschwindigkeit ändern() {
        let index = this.speeds.indexOf(this.audio.speed) + 1
        diese.Audiogeschwindigkeit = diese.Geschwindigkeiten[Index % diese.Geschwindigkeiten.Länge]
        dies.$refs.audio.playbackRate = dies.audio.speed
      },
      startMutedOrNot() {
        dies.$refs.audio.muted = !dies.$refs.audio.muted
        dies.audio.muted = dies.$refs.audio.muted
      },
      // ToolTip der Lautstärkeleiste
      formatVolumeToolTip(index) {
        return 'Lautstärkebalken: ' + Index
      },
      //Fortschrittsbalken-ToolTip
      formatProcessToolTip(index = 0) {
        index = parseInt(dieses.audio.maxTime / 100 * index)
        return 'Fortschrittsbalken: ' + realFormatSecond(index)
      },
      // Lautstärke ändernchangeVolume(index = 0) {
        dies.$refs.audio.volume = index / 100
        dieses.Volumen = Index
      },
      // Sprung abspielen changeCurrentTime(index) {
        dies.pausePlay()
        dies.$refs.audio.currentTime = parseInt(index / 100 * this.audio.maxTime)
      },
      startPlayOrPause() {
        dieses.Audio.abspielen zurückgeben? dieses.PauseWiedergabe() : dieses.StartWiedergabe()
      },
      // Wiedergabe starten startPlay() {
        dies.$refs.audio.play()
      },
      // Pause pausePlay() {
        dies.$refs.audio.pause()
      },
      // Wenn die Audiowiedergabe pausiert ist onPause () {
        dieses.audio.playing = falsch
      },
      // Wenn ein Fehler auftritt, wird der Ladestatus angezeigt onError () {
        dies.audio.waiting = wahr
      },
      // Wenn das Audio startet, warten onWaiting (res) {
        Konsole.log(res)
      },
      // Wenn die Audiowiedergabe beginnt onPlay (res) {
        Konsole.log(res)
        dieses.audio.playing = true
        this.audio.loading = falsch

        wenn(!this.controlList.onlyOnePlaying){
          zurückkehren
        }

        lass Ziel = res.target

        let audios = document.getElementsByTagName('audio');

        [...audios].forEach((item) => {
          wenn(Element !== Ziel){
            item.pause()
          }
        })
      },
      // Das Timeupdate-Ereignis wird etwa einmal pro Sekunde aufgerufen, um die aktuelle Wiedergabezeit des Audiostreams zu aktualisieren onTimeupdate(res) {
        // console.log('Zeitupdate')
        // konsole.log(res)
        dies.audio.aktuelleZeit = res.target.aktuelleZeit
        this.sliderTime = parseInt(this.audio.currentTime / this.audio.maxTime * 100)
      },
      //Wenn die Metadaten des Sprachstreams geladen werden, wird die Rückruffunktion dieses Ereignisses ausgelöst. //Die Sprachmetadaten enthalten hauptsächlich Daten wie die Länge der Stimme onLoadedmetadata(res) {
        this.audio.waiting = falsch
        this.audio.maxTime = parseInt(res.target.duration)
      }
    },
    Filter:
      formatSekunde(Sekunde = 0) {
        returniere realFormatSecond(Sekunde)
      },
      transPlayPause(Wert) {
        Rückgabewert ? 'Pause' : 'Wiedergabe'
      },
      transMutedOrNot(Wert) {
        Rückgabewert ? 'Abspielen' : 'Stumm'
      },
      transSpeed(Wert) {
        return 'Schneller Vorlauf: x' + Wert
      }
    },
    erstellt() {
      dies.setControlList()
    }
  }
</Skript>

Der CSS-Code verwendet SCSS

<style scoped lang="scss">
  .Rechts{
     Breite: 100 %;
     Polsterung: 10px 15px;
     Anzeige: Inline-Block;
     .Schieberegler {
       Anzeige: Inline-Block;
       Position: relativ;
       oben: 14px;
       Rand links: 15px;
     }
     .slider_time{
       Breite: 550px;
       Rand: 0 10px;
     }
     .slider_voice{
       Breite: 80px;
     }
     .herunterladen {
       Farbe: #409EFF;
       Rand links: 15px;
     }

     .dn{
       Anzeige: keine;
     }
   }

</Stil>

Eine schöne Testmusik ist auch dabei
https://wdd.js.org/element-audio/static/falling-star.mp3

Dies ist das Ende dieses Artikels über die Realisierung der Player-Funktion mit Vue + Element UI. Weitere relevante Inhalte zum Vue Element UI Player finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass alle 123WORDPRESS.COM in Zukunft unterstützen werden!

Das könnte Sie auch interessieren:
  • Vue-Video-Player-Betrieb für Vue
  • Detaillierte Konfiguration des Videoplayers vue-video-player
  • Beispielcode für den Videoplayer vue-dplayer
  • Vue implementiert die Methode und Schritte des benutzerdefinierten H5-Videoplayers
  • Implementierung einer Musikplayer-Funktion basierend auf einer Vue-Element-Komponente
  • Methode zum Anpassen des Players basierend auf dem Vue-Video-Player
  • Ein Beispiel für die Implementierung eines Musikplayers in einer Vue-Seite
  • Detaillierte Erklärung der Player-Komponente in vue-music
  • Detaillierte Erläuterung der Konfiguration und Verwendungsbeispiele des Vue-Musikplayer-Plugins vue-aplayer
  • Vue.js implementiert Musikplayer

<<:  MySql fügt Daten erfolgreich ein, meldet aber [Err] 1055 Fehlerlösung

>>:  Detaillierte Erläuterung der grundlegenden Verwendung der CentOS7-Firewall unter Linux

Artikel empfehlen

Lösung für die nicht angezeigte IP-Adresse unter Linux

Inhaltsverzeichnis Vorwort Lösung: Schritt 1 Schr...

JavaScript zur Implementierung der Webversion des Schlangenspiels

In diesem Artikel wird der spezifische Code für J...

Handschriftliche Implementierung von new in JS

Inhaltsverzeichnis 1 Einführung in den neuen Oper...

MySQL 8.0 MIT Abfragedetails

Inhaltsverzeichnis Informationen zu WITH-Abfragen...

Detaillierte Erklärung der Linux-CPU-Last und CPU-Auslastung

CPU-Last und CPU-Auslastung Beides kann bis zu ei...

Zusammenfassung der langsamen MySQL-Abfragevorgänge

Erklärung langsamer MySQL-Abfragen Das MySQL Slow...

MySQL verwendet Ereignisse, um geplante Aufgaben abzuschließen

Ereignisse können die Ausführung von SQL-Code ein...

Miniprogramm zur Implementierung der Sieve-Lotterie

In diesem Artikelbeispiel wird der spezifische Co...

Eine kurze Analyse der MySQL-Kardinalitätsstatistiken

1. Was ist die Kardinalität? Mit Kardinalität wir...

MySQL-Datenbankgrundlagen: Eine Zusammenfassung der grundlegenden Befehle

Inhaltsverzeichnis 1. Hilfeinformationen nutzen 2...

Tutorial zur Installation von lamp-php7.0 in einer Centos7.4-Umgebung

Dieser Artikel beschreibt, wie lamp-php7.0 in ein...

So ändern Sie die Ali-Quelle in Ubuntu 20.04

Beachten Sie, dass dieser Artikel Ihnen nicht ein...

Detaillierte Schritte zum Starten des Django-Projekts mit nginx+uwsgi

Wenn wir ein Webprojekt mit Django entwickeln, wi...