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

1、安装依赖

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

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";

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>

常见问题

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. CSS设置不可见
<style lang="less" scoped>
// 禁用视频右键
::v-deep .dplayer-menu,.dplayer-mask {
  display: none !important;
}
</style>

4、实现过程

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

在这里插入图片描述

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

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

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Vue 3 可以使用方的视频播放库来实现播放 .265 M3U8 格式视频。一个常用的库是 `video.js`,它是一个开源的 HTML5 视频播放器。以下是一个示例代码: 首先,安装 `video.js` 和 `videojs-contrib-hls`(用于支持 M3U8 格式): ```bash npm install video.js npm install videojs-contrib-hls ``` 然后,在 Vue 组件中使用 `video.js`: ```html <template> <div> <video ref="videoPlayer" class="video-js vjs-default-skin" controls></video> </div> </template> <script> import videojs from 'video.js'; import 'video.js/dist/video-js.css'; import 'videojs-contrib-hls'; export default { mounted() { // 创建 video.js 实例 this.player = videojs(this.$refs.videoPlayer, { techOrder: ['html5'] }, () => { // 播放 M3U8 格式视频 this.player.src({ src: '视频地址.m3u8', type: 'application/x-mpegURL' }); }); }, beforeDestroy() { // 销毁 video.js 实例 if (this.player) { this.player.dispose(); } } }; </script> <style> /* video.js 样式 */ @import '~video.js/dist/video-js.css'; </style> ``` 在上述代码中,我们首先导入并引入了 `video.js` 和 `videojs-contrib-hls` 库。然后,在组件的 `mounted` 钩子函数中,创建了一个 `video.js` 实例,并设置 `techOrder` 为 `['html5']`,表示优先使用 HTML5 播放器。 在 `video.js` 的回调函数中,使用 `player.src()` 方法来设置视频源,其中 `src` 为视频地址,`type` 为视频类型,这里是 M3U8 格式视频。 最后,在组件的 `beforeDestroy` 钩子函数中,销毁 `video.js` 实例。 在使用时,将视频地址替换为实际的 .265 M3U8 格式视频的地址即可。希望对你有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值