Vue3,使用shaka -player,支持hls视频格式

Shaka Player 是谷歌公司对外开源的一款 
javascript 类库,详细请看谷歌官方api文档。

下载 

npm i shaka-player@4.8.5 --save
yarn add shaka-player@4.8.5 --save

 更多版本:shaka-player (v4.4.1) - DASH/EME video player library | BootCDN - Bootstrap 中文网开源项目免费 CDN 加速服务

代码

<template>
  <div ref="videoContainer" data-shaka-player-container style="max-width: 100%" data-shaka-player-cast-receiver-id="7B25EC44">
    <video ref="videoPlayer" id="video" data-shaka-player style="width: 100%; height: 100%"></video>
  </div>
</template>
import { ref, onMounted, onBeforeUnmount, computed } from "vue";
import shaka from "shaka-player/dist/shaka-player.ui.js";
import "shaka-player/dist/controls.css"; //样式文件 注意路径
//import "https://cdn.jsdelivr.net/npm/mux.js@5.5.3/dist/mux.min.js"//低版本,有这个文件hls才能正常播放,当前版本不需要

const props = defineProps({
  api: {
    type: String,
  },
});
let manifestUri =
  // "https://storage.googleapis.com/shaka-demo-assets/bbb-dark-truths-hls/hls.m3u8";//可以用这个测试
  computed(() => {
    return props.api;
  }).value;
onMounted(() => {
  initApp();
});
onBeforeUnmount(() => {
  player && player.destroy();
});
const initApp = () => {
  if (shaka.Player.isBrowserSupported()) {
    initPlayer();
  } else {
    console.error("Browser not supported!");
  }
};
const videoPlayer = ref();
const videoContainer = ref();
let player = null;
const initPlayer = () => {
  player = new shaka.Player(videoPlayer.value);
  const ui = new shaka.ui.Overlay(player, videoContainer.value, videoPlayer.value);
  ui.configure({
    // 自定义控件
    controlPanelElements: [
      "time_and_duration", // 进度
      "spacer",
      "mute", // 静音
      "volume", // 音量
      "fullscreen", // 全屏
      "overflow_menu",
    ],
   overflowMenuButtons: [
      "quality", //分辨率
      "language", //语言,识别不出不显示
      "picture_in_picture", //画中画
      "playback_rate"//倍速
    ],
  });
  loadPlayer();
};
const loadPlayer = async () => {
  try {
    await player.load(manifestUri);
  } catch (e) {
    onError(e);
  }
};
const onError = error => {
  console.error("Error code", error.code, "object", error);
};

效果

  

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用vue-video-player实现实时视频播放,需要先安装vue-video-player插件并引入相关的组件和样式文件。具体步骤如下: 1. 安装vue-video-player插件: ``` npm install vue-video-player --save ``` 2. 在Vue3的入口文件main.js中引入vue-video-player插件和相关的样式文件: ``` import { createApp } from 'vue'; import App from './App.vue'; import VueVideoPlayer from 'vue-video-player'; import 'video.js/dist/video-js.css'; import 'vue-video-player/src/custom-theme.css'; const app = createApp(App); app.use(VueVideoPlayer); app.mount('#app'); ``` 3. 在Vue3的模板中,使用vue-video-player组件来加载视频文件,并设置autoplay和controls属性来自动播放和显示控制条: ``` <template> <div> <video-player ref="videoPlayer" autoplay controls></video-player> </div> </template> ``` 4. 在Vue3的组件中,使用mounted生命周期方法来获取video-player组件的引用,并添加事件监听器来实时监控视频播放: ``` <script> export default { mounted() { const videoPlayer = this.$refs.videoPlayer.$refs.video; videoPlayer.addEventListener('timeupdate', this.handleTimeUpdate); }, methods: { handleTimeUpdate() { const videoPlayer = this.$refs.videoPlayer.$refs.video; const currentTime = videoPlayer.currentTime; // 在这里可以处理视频播放时间的更新 } } } </script> ``` 5. 在handleTimeUpdate方法中,可以获取当前视频播放的时间,并进行处理。例如,可以将当前时间展示在页面上,或者根据时间来触发其他的事件。 需要注意的是,vue-video-player是基于video.js和Vue.js的开源插件,支持多种视频格式和播放器样式。使用vue-video-player可以方便地实现视频播放和控制,同时也提供了一些自定义的配置选项和事件回调函数。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值