美文网首页
Vue 中使用flv.js视频播放器,并将其组件化

Vue 中使用flv.js视频播放器,并将其组件化

作者: 一学就会的小天才 | 来源:发表于2021-10-22 17:13 被阅读0次
  1. 首先下载flv.js
npm install flv
  1. 创建一个页面,用来组件化:assembly-flv.vue
<template>
  <div class="video" :style="{ height: voidHeight }">
    <video ref="videoElement" muted></video>
    <div class="img_error" v-if="imgError">
      <img src="../assets/image/wushipin_lan_da.png" alt="" />
      <p>视频播放错误,请联系管理员!</p>
    </div>
  </div>
</template>

<script>
import flvjs from "flv.js";
// import wushipin_lan_da from '../assets/image/wushipin_lan_da.png';
export default {
  name: "assemblyFlv",
  props: ["url", "height", "destroy"], // 视频流路径,播放器高度,是否销毁播放器
  data() {
    return {
      flvPlayer: "",
      imgError: false,
      voidHeight: "",
    };
  },
  mounted() {
    // 判断是否传入高度,如果没有,高度100%
    this.height ? (this.voidHeight = this.height) : (this.voidHeight = "100%");
    // 页面加载完成后,初始化
    this.$nextTick(() => {
      this.init(this.url);
    });
  },
  methods: {
    // 初始化
    init(source) {
      if (flvjs.isSupported()) {
        this.flvPlayer = flvjs.createPlayer(
          {
            type: "flv",
            url: source,
          },
          {
            enableWorker: false, //不启用分离线程
            enableStashBuffer: false, //关闭IO隐藏缓冲区
            reuseRedirectedURL: true, //重用301/302重定向url,用于随后的请求,如查找、重新连接等。
            autoCleanupSourceBuffer: true, //自动清除缓存
          }
        );

        this.flvPlayer.attachMediaElement(this.$refs.videoElement);
        this.flvPlayer.load();
        this.flvPlayer.play();

        // 加载完成
        this.flvPlayer.on(flvjs.Events.LOADING_COMPLETE, () => {
          this.imgError = false;
        });

        // 加载失败
        this.flvPlayer.on(
          flvjs.Events.ERROR,
          () => {
            this.imgError = true;
          },
          (error) => {
            console.log(error);
          }
        );
      } else {
        this.imgError = true;
      }
    },
    // 销毁
    detachMediaElement() {
      this.flvPlayer.pause();
      this.flvPlayer.unload();
      this.flvPlayer.detachMediaElement();
      this.flvPlayer.destroy();
      this.flvPlayer = "";
    },
  },
  watch: {
    url() {
      this.imgError = false;
      // 切换流之前,判断之前的流是否销毁
      this.flvPlayer == "" ? "" : this.detachMediaElement();
      // 初始化
      this.init(this.url);
    },
    destroy() {
      // 传入开关值
      if (this.destroy) {
        this.init(this.url);
      } else {
        this.flvPlayer == "" ? "" : this.detachMediaElement();
      }
    },
  },
  beforeDestroy() {
    this.detachMediaElement();
  },
};
</script>

<style scoped>
.video {
  position: relative;
  height: 100%;
}
video {
  width: 100%;
  height: 100%;
  object-fit: fill;
}
.img_error {
  position: absolute;
  top: 30%;
  left: 50%;
  margin-left: -120px;
  text-align: center;
}
.img_error > img {
  margin-bottom: 1em;
}
.img_error > p {
  color: #00fdff;
  font-weight: bold;
  font-size: 1.2em;
}
</style>
  1. 在需要的页面引入
<template>
  <div>
      <assembly-flv height="240px" :url="url" ></assembly-flv>
  </div>
</template>

<script>
import assemblyFlv from "assembly-flv.vue";
export default {
  components: { "assembly-flv": assemblyFlv },
  data() {
     return {
         url: '视频流'
     }
  }
}
</script>

相关文章

  • Vue 中使用flv.js视频播放器,并将其组件化

    首先下载flv.js 创建一个页面,用来组件化:assembly-flv.vue 在需要的页面引入

  • Vue2.0 使用组件

    src目录结构 在components中编辑组件apple.vue: 在App.vue中注册并使用组件

  • Vue 组件库

    vue 组件库 因为测试平台中有一些常见的可以模块化的 UI 界面, 使用 Vue 框架之后,将其抽象出来,成为单...

  • VUE3下js文件的国际化问题

    使用vue@3.2.31和vue-i18n@9.2.2实现国际化,在vue组件(.vue文件)中可以正常使用,在单...

  • flv

    什么是=flv.js它是 HTML5 Flash 视频(FLV)播放器,纯原生 JavaScript 开发,没有用...

  • Vue组件创建和传值

    Vue创建组件的方式 使用Vue.Extend()和Vue.component全局注册组件 首先我们定义一个组件并...

  • (15)打鸡儿教你Vue.js

    组件化vue.js 组件单向绑定组件双向绑定组件单次绑定 创建组件构造器注册组件使用组件 Vue.extend()...

  • vue使用video.js

    下载video.js main.js引入video 创建视频播放器组件 在组件中引入视频组件 video配置 常用...

  • iVIew对话框封装

    弹出框使用率较高,将其封装为组件 @/components/tip-modal/index.vue: 对比查看 使用:

  • 开源代码flv.js的使用说明

    本文转自PHP中文网。 Flv.js 是 HTML5 Flash 视频(FLV)播放器,纯原生 JavaScrip...

网友评论

      本文标题:Vue 中使用flv.js视频播放器,并将其组件化

      本文链接:https://www.haomeiwen.com/subject/sdchaltx.html