vue3同步播放视频

用到的视频播放插件是vue3-video-play

npm安装:npm i vue3-video-play --save
yarn安装:yarn add vue3-video-play --save

使用

全局引入,在main.js中写入:

import vue3videoPlay from 'vue3-video-play' // 引入组件
import 'vue3-video-play/dist/style.css' // 引入css
app.use(vue3videoPlay)

页面写入组件:

<!-- 视频同步播放对比 -->
      <div class="video_box_flex">
        <div class="video_box" style="border-radius: 18px 0 0 18px">
          <div class="video_title">修复前</div>
          <vue3VideoPlay v-bind="options" ref="videoPlayer1" @play="onPlayerPlay" @pause="onPlayerPause" />
        </div>
        <div class="video_box" style="border-radius: 0 18px 18px 0; margin-left: 20px">
          <div class="video_title">修复后</div>
          <vue3VideoPlay v-bind="options" ref="videoPlayer2" @play="onPlayerPlay" @pause="onPlayerPause" />
        </div>
      </div>

js方法:

<script setup>
import videoUrl from "@/assets/video/test2.mp4";
import { reactive, ref } from "vue";
let videoPlayer1 = ref(null);
let videoPlayer2 = ref(null);
const options = reactive({
  width: "100%", //播放器宽度
  height: "", //播放器高度
  color: "#FFC205", //主题色
  title: "", //视频名称
  src: videoUrl, //视频源
  muted: false, //静音
  webFullScreen: false,
  speedRate: ["0.75", "1.0", "1.25", "1.5", "2.0"], //播放倍速
  autoPlay: false, //自动播放
  loop: false, //循环播放
  mirror: false, //镜像画面
  ligthOff: false, //关灯模式
  volume: 0.3, //默认音量大小
  control: true, //是否显示控制器
});
// 点击播放
function onPlayerPlay() {
  videoPlayer1.value.play();
  videoPlayer2.value.play();
}
// 点击暂停
function onPlayerPause() {
  videoPlayer1.value.pause();
  videoPlayer2.value.pause();
}
</script>
	

页面效果展示:
在这里插入图片描述

Vue3中结合HTML5 Canvas和Video API可以实现在网页上绘制视频播放的功能。这是一种常见的技术用于创建交互式的可视化效果或者是将视频作为背景动画。以下是基本步骤: 1. **引入依赖**: - 首先,你需要在项目中安装`vue-video-player`库,它提供了一个轻量级的视频组件,支持基本的播放控制。 ```bash npm install vue-video-player ``` 2. **在Vue组件中使用Canvas和Video Player**: 在模板部分添加视频播放组件,并将其绑定到一个数据属性,比如`videoElement`。 ```html <template> <div> <v_video-player :src="videoSrc" @ready="onPlayerReady"></v_video-player> <canvas ref="canvas" :width="canvasWidth" :height="canvasHeight"></canvas> </div> </template> ``` 3. **处理视频准备和更新Canvas**: - `onPlayerReady`函数会在视频加载完成后触发,你可以在这个时候获取视频元素,并开始监听它的`play`、`pause`事件,以及`timeupdate`事件以同步画布内容。 ```javascript export default { data() { return { videoSrc: &#39;your-video-source&#39;, canvasWidth: window.innerWidth, canvasHeight: window.innerHeight, player: null, }; }, methods: { onPlayerReady(player) { this.player = player; // 添加事件监听 player.on(&#39;play&#39;, () => { // 开始绘制视频帧到Canvas }); player.on(&#39;pause&#39;, () => { // 清除Canvas或暂停绘制 }); player.on(&#39;timeupdate&#39;, () => { this.updateCanvas(); }); }, updateCanvas() { if (this.player && !this.player.paused) { const ctx = this.$refs.canvas.getContext(&#39;2d&#39;); // 获取当前视频帧并绘制到Canvas上 const frameData = this.player.getVideoFrame(); // ... 进行图像处理和绘制操作 } }, }, } ``` 4. **处理视频帧获取和处理**: 使用`getVideoFrame`方法从HTML5 Video API获取每一帧的Base64编码或者其他形式的数据,然后在`updateCanvas`方法中解码并绘制到Canvas上。这一步需要根据具体的解码和渲染算法来实现。 注意:直接在Canvas上显示视频可能会导致性能问题,特别是在高分辨率下。一种优化策略是只更新变化的部分,或者采用WebGL进行硬件加速渲染。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值