vue中使用video.js播放m3u8格式的视频

一、前言

实时推送的视频流的需求,vue中就可以使用video.js播放m3u8格式的视频流

1.1、官网

在这里插入图片描述

1.2、Github

在这里插入图片描述

二、实现

2.1、安装依赖

yarn add video.js
yarn add videojs-contrib-hls // 这是播放hls流需要的插件
yarn add videojs-flash // 这是播放rtmp流需要的插件
yarn add mux.js // 在vue项目中,若不安装它可能报错

2.2、main.js

引入如下依赖:

import "video.js/dist/video-js.css"; // 引入video.js的css
import hls from "videojs-contrib-hls"; // 播放hls流需要的插件
import Vue from "vue";
Vue.use(hls);

2.3、video.vue

抽离出来一个视频组件

<template>
  <video id="videoPlayer" class="video" muted width="100%" height="580px" />
</template>

<script>
import Videojs from 'video.js'

export default {
  data() {
    return {
      player: null
    }
  },
  beforeDestroy() {
    if (this.player) {
      this.player.dispose() // Removing Players,该方法会重置videojs的内部状态并移除dom
    }
  },
  activated() {
    if (this.player) {
      this.player.play()
    }
  },
  deactivated() {
    if (this.player) {
      this.player.pause()
    }
  },
  mounted() {
    this.initVideo()
  },
  methods: {
    initVideo(url) {
      if (!this.player) {
        this.player = Videojs('videoPlayer', {
          autoplay: true, // 设置自动播放
          muted: true, // 设置了它为true,才可实现自动播放,同时视频也被静音 (Chrome66及以上版本,禁止音视频的自动播放)
          preload: 'auto', // 预加载
          controls: false // 显示播放的控件
        })
      }
      this.player.src([{
        src: url,
        type: 'application/x-mpegURL' // 告诉videojs,这是一个hls流
      }])
    }
  }
}
</script>

<style lang="scss" scoped>
.video, video {
  width: 100%;
  height: 580px;
}
/deep/ .vjs-loading-spinner {
  position: relative;
  .vjs-control-text {
    opacity: 0;
  }
}
</style>

2.4、其它

rtmp流的话,需再安装依赖videojs-flash

// main.js
import flash from "videojs-flash"; // 播放rtmp流需要的插件
import Vue from "vue";
Vue.use(flash);

组件中设置src时需要注意:

this.player.src([{
    src: url,
    type: 'rtmp/flv' // 告诉videojs这是一个rtmp流视频
}])

三、最后

本人每篇文章都是一字一句码出来,希望大佬们多提提意见。顺手来个三连击,点赞👍收藏💖关注✨。创作不易,给我打打气,加加油☕

  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小马甲丫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值