vue 使用 flv.js 播放视频

一、安装依赖,执行一下命令

npm install --save flv.js

二、使用方法

1、html部分

<template>

      <div>

            <video id="videoElement" controls autoplay muted width="300px" height="200px">   

            </video>

            <button @click="play">播放</button>

          </div>

</template>

2、js部分

js部分的图片格式,图片格式更加清晰

为方便大家复制,这里把JS部分的代码粘贴到这里:

import flvjs from 'flv.js'

export default {

  data () {

    return {

      flvPlayer:null

    }

  },

   mounted() {

      if (flvjs.isSupported()) {

        let videoElement = document.getElementById('videoElement'); //获取video的dom元素


        if(videoElement){//添加一些必要的属性

            videoElement.muted = true

            videoElement.controls = true;

        }

        let flvPlayer = flvjs.createPlayer({

            type: 'flv',

            isLive: true,

            hasAudio: false,

            url: 'flv视频地址'// 自己的flv视频流

        });

        if(flvPlayer){

            flvPlayer.attachMediaElement(videoElement);

            flvPlayer.load()

            let playPromise = flvPlayer.play()

            if(playPromise){

                playPromise.then(()=>{

                    setTimeout(()=>{

                        flvPlayer.play()

                    },flvPlayer.lazyLoadMaxDuration*1000)

                }).catch((e)=>{

                    flvPlayer.play()

                })

            }

        }

    }

    },

    methods:{

      play () {

        this.flvPlayer.play();

      }

    }

}

注意:

加载过程中可能会报错:Failed to read the ‘buffered’ property from ‘SourceBuffer’: This SourceBuffer has been removed

解决办法:

找到依赖:flv.js/src/core/mse-controller.js

找到appendMediaSegment(),_needCleanupSourceBuffer ()这两个方法,在方法中加入以下代码

if (!this._mediaSource || this._mediaSource.readyState !== 'open') { return; }

如下图所示:

flv.js/src/core/mse-controller.js
flv.js/src/core/mse-controller.js
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容