npm install --save flv.js

<template>
<div class="video">
<video
class="videoPlay"
autoplay
controls
muted
id="videoElement"
></video>
</div>
</template>
<script>
import flvjs from 'flv.js'
export default {
data () {
return {
flvPlayer: null,
url: ''
}
},
mounted () {
this.$nextTick(() => {
this.createVideo ('', '')
}
},
beforeDestroy () {
if (this.flvPlayer) {
this.destoryVideo(this.flvPlayer)
}
},
methods: {
createVideo (url, type) {
if (flvjs.isSupported()) {
var videoElement = document.getElementById('videoElement')
this.flvPlayer = flvjs.createPlayer(
{
type: type,
isLive: true,
hasAudio: false,
url: url
},
{
enableWorker: false,
enableStashBuffer: false,
reuseRedirectedURL: true,
autoCleanupSourceBuffer: true,
fixAudioTimestampGap: false
}
)
this.flvPlayer.attachMediaElement(videoElement)
if (this.url !== '' && this.url !== null) {
this.flvPlayer.load()
this.flvPlayer.play()
}
}
this.flvPlayer.on(flvjs.Events.ERROR, (errType, errDetail) => {
if (this.flvPlayer) {
this.reloadVideo(this.flvPlayer)
}
})
},
reloadVideo (flvPlayer) {
this.destoryVideo(flvPlayer)
this.createVideo(this.url, 'flv')
},
destoryVideo (flvPlayer) {
flvPlayer.pause()
flvPlayer.unload()
flvPlayer.detachMediaElement()
flvPlayer.destroy()
flvPlayer = null
}
}
}
</script>
<style lang='less' scoped>
</style>