|
|
@@ -0,0 +1,51 @@
|
|
|
+<template>
|
|
|
+ <div ref="videoPlayer"></div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import Artplayer from 'artplayer'
|
|
|
+import flvjs from 'flv.js'
|
|
|
+export default {
|
|
|
+ name: 'ArtPlayer',
|
|
|
+ props: {
|
|
|
+ option: {
|
|
|
+ type: Object,
|
|
|
+ required: true
|
|
|
+ }
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ artPlayer: null
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ initPlayer() {
|
|
|
+ this.artPlayer = new Artplayer({
|
|
|
+ ...this.option,
|
|
|
+ container: this.$refs.videoPlayer,
|
|
|
+ type:"flv",
|
|
|
+ customType: {
|
|
|
+ flv: (video, url, art) => {
|
|
|
+ if (flvjs.isSupported()) {
|
|
|
+ if (art.flv) art.flv.destroy()
|
|
|
+ const flv = flvjs.createPlayer({ type: 'flv', url })
|
|
|
+ flv.attachMediaElement(video)
|
|
|
+ flv.load()
|
|
|
+ art.flv = flv
|
|
|
+ art.on('destroy', () => flv.destroy())
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ this.initPlayer()
|
|
|
+ },
|
|
|
+ beforeDestroy() {
|
|
|
+ if (this.artPlayer) {
|
|
|
+ this.artPlayer.destroy(false)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|