首页 > 其他分享 >Vue中使用flv.js播放flv格式视频流

Vue中使用flv.js播放flv格式视频流

时间:2023-01-07 18:22:24浏览次数:42  
标签:Vue flvPlayer 视频流 js webrtcPlay flv flvjs destoryVideo

Vue中使用flv.js播放flv格式视频流

1.安装依赖

npm install flv.js --save --legacy-peer-deps

2.具体代码

Html部分
<template>
	<div>
        <video autoplay controls id="myVideoFlv" />
    </div>
</template>    
JS部分
<script>
import flvjs from 'flv.js/dist/flv.min.js'

export default {
    name: "VideoFlv",
    data() {
        return {
            flvPlayer: null,
            webrtcUrl: "Your Flv Video URL"
        }
    },
    mounted() {
        this.webrtcPlay()
    },
    beforeDestroy() {
        this.destoryVideo()
    },
    methods: {
webrtcPlay() {
            if (flvjs.isSupported()) {
                if (this.flvPlayer) {
                    this.flvPlayer.pause()
                    this.flvPlayer.unload()
                    this.flvPlayer.detachMediaElement()
                    this.flvPlayer.destroy()
                }
                this.flvPlayer = flvjs.createPlayer(
                {
                    type: 'flv',
                    url: this.webrtcUrl
                },
                {
                    cors: true,  //是否跨域
                    enableWorker: true,  //是否多线程工作
                    anableStashBuffer: false,  //是否启用缓存
                    stashInitialSize: 384,  //缓存大小(kb) 默认384kb
                    autoCleanupSourceBuffer: true  //是否自动缓存
                }
                )
                this.flvPlayer.attachMediaElement(document.getElementById('myVideo'))  // 在这里绑定元素
                this.flvPlayer.load()
                this.flvPlayer.play()
                //报错重连
                this.flvPlayer.on(flvjs.Events.ERROR, (errType, errDetail) => {
                console.log('errType:', errType)
                console.log('errorDetail:', errDetail)
                if(this.flvPlayer){
                        this.destoryVideo()
                        this.webrtcPlay()
                    }
                })
            }
        },
        destoryVideo() {
            if (this.flvPlayer) {
                this.flvPlayer.pause()
                this.flvPlayer.unload()
                this.flvPlayer.detachMediaElement()
                this.flvPlayer.destroy()
                this.flvPlayer = null
            }
        }
    }
}
</script>

3.效果

image.png

标签:Vue,flvPlayer,视频流,js,webrtcPlay,flv,flvjs,destoryVideo
From: https://www.cnblogs.com/cnpolaris/p/17033156.html

相关文章

  • 适合编程初学者的开源项目:小游戏2048(Vue版)
    目标为编程初学者打造入门学习项目,使用各种主流编程语言来实现。2048游戏规则一共16个单元格,初始时由2或者4构成。1、手指向一个方向滑动,所有格子会向那个方向运动。2、相......
  • 成功解决node、node-sass和sass-loader版本冲突问题、不需要降低node版本。如何在vue
    文章目录​​1、报错信息​​​​2、需要引入scss​​​​3、引入后、继续报错​​​​4、安装​​​​4.1安装node-sass​​​​4.2安装sass-loader​​​​4.3在项目中......
  • VUE3.0+Vite 多页面应用配置
    目录VUE3.0+Vite多页面应用配置核心原理多页面应用模式(核心)Vue路由配置(示例)vite.config.js(示例)多页面跳转构建流程代码结构构建流程源码链接VUE3.0+Vite多页面应用配置......
  • vue2,vue3同时监听多个数据变化
    我是使用vue计算属性(computed)将需要监听的数据拼接在一起,再通过watch进行监听1.vue普通写法<template><divid="app"><el-inputv-model.number="valu......
  • 基于vue+Element Table封装(纯前端解决方案,附源码)
    (文章目录)前言这个项目是拿来练手的项目,基于VUE+ElementUI,并没有做后端,所以用的是纯前端的解决方案(有更好的办法欢迎提出),主要实现的是对列表数据的查询,筛选,修改这些常......
  • vue里的一些小标签
     背景颜色background-color="rgb(48,65,86)"文字颜色text-color="rgb(255,255,255)"左边导航栏参差不齐时style="overflow-x:hidden"文字选中变色acti......
  • Vue项目中怎样把参数(对象)转成formdata传给后端? 封装函数 亲测有效
    普通传参格式如下:  想要的formData参数格式如下:  首先封装参数(对象)转换为formData格式getFormData(object){constformData=newFormData()......
  • vue-router
    vue-router实现页面的跳转在cmd中输入:npminstallvue-router--save-dev如果报错则使用:cnpminstallvue-router--save-dev运行程序(如果报错则降低vue-route......
  • Vue3单击新增添加新的input
     效果图: 代码:<template><div><inputtype="text"v-for="(item,i)ofitems"v-model="items[i]":key="i"@input="inp"><button@click="onAdd">......
  • Vue3 中的响应式api
    一、setup文件的认识 特点1:script中间的内容就是一个对象特点2:script在第一层定义的方法或者变量=>就是这个对象属性 =>顶层的绑定回被暴露给模板(模......