当前位置:   article > 正文

vue使用dplayer 播放m3u8格式的视频——播放m3u8格式视频(三)_vue m3u8播放器

vue m3u8播放器

1、安装依赖

    npm i dplayer -S // 视频播放器插件
    npm i hls.js -S  // 播放hls流插件
  • 1
  • 2

dplayer

dplayer 官网: http://dplayer.js.org/zh/guide.html

2、页面引入插件

import "video.js/dist/video-js.css";
import Hls from "hls.js";
import DPlayer from "dplayer";
  • 1
  • 2
  • 3

3、页面中的使用

<template>
  <div class="myVideo">
    <div id="dplayer" ref="player" class="dplayer video-box"></div>
  </div>
</template>

<script>
import "video.js/dist/video-js.css";
import Hls from "hls.js";
import DPlayer from "dplayer";
/*
npm i dplayer -S // 视频播放器插件
npm i hls.js -S  // 播放hls流插件
*/
export default {
  data() {
    return {
      dp: null,
      videoInfo: {
        img: "https://cn.bing.com/th?id=OHR.MeotoIwa_ZH-CN3126370410_1920x1080.jpg&rf=LaDigue_1920x1080.jpg", // 视频封面
        url: "https://e-sign.dms.t.cn-np.com/files/m3u8_file/c4b94118-3c8d-4410-9987-985c2b44c278/c4b94118-3c8d-4410-9987-985c2b44c278.m3u8", // 播放视频的路径'
      },
    };
  },
  created() {
    this.$nextTick(() => {
      this.loadVideo(this.videoInfo);
    });
  },
  methods: {
    loadVideo(videoInfo) {
      this.dp = new DPlayer({
        element: this.$refs.player,
        loop: false,
        video: {
          pic: videoInfo.img, // 封面
          url: videoInfo.url,
          type: "customHls",
          customType: {
            customHls: function (video, player) {
              const hls = new Hls();
              hls.loadSource(video.src);
              hls.attachMedia(video);
            },
          },
        },
      });
    },
  },
};
</script>

<style lang="less" scoped>
.video-box {
  width: 100%;
  max-width: 500px;
  max-height: 500px;
}
</style>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59

常见问题

4.1 禁用视频右键菜单

在这里插入图片描述

  1. 阻止点击事件
  mounted() {
    // 禁用视频右键
     document.querySelector("#dplayer").oncontextmenu = () => {
       document.querySelector(".dplayer-menu").style.display = "none";
       document.querySelector(".dplayer-mask").style.display = "none";
       return false;
     };
  },
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  1. CSS设置不可见
<style lang="less" scoped>
// 禁用视频右键
::v-deep .dplayer-menu,.dplayer-mask {
  display: none !important;
}
</style>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

4、实现过程

播放器在拿到XXX.m3u8视频地址(索引文件)后,会去请求拿到分片数据资源,也就是一大串的.ts文件列表,然后依次去请求这些.ts文件(当然这些是播放器内部自己实现的)

在这里插入图片描述

vue 实现.m3u8格式视频播放的方法有很多,可以看我上两篇博客,都有贴代码实现

1、原生videojs : vue使用原生videojs 播放m3u8格式的视频
2、vue-dplayer : vue使用vue-dplayer 播放m3u8格式的视频
3、dplayer : dplayer 播放m3u8格式的视频

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号