Vue中如何截取视频的第一帧作为封面

1,073 阅读1分钟

vue中获取视频的第一帧作为封面展示

由于我在项目中多次遇到需要使用该方法的情景,于是将其封装在了一个工具类文件中,方便多个地方调用。

import Vue from 'vue'
export function getVideoFirstFrame(url, file) {
  const video = document.createElement('video') // 创建video对象
  video.src = url // url地址
  const canvas = document.createElement('canvas') // 创建 canvas 对象
  const ctx = canvas.getContext('2d') // 绘制2d
  video.crossOrigin = 'anonymous' // 解决跨域问题,也就是提示污染资源无法转换视频
  video.currentTime = 1 // 第一秒帧
  video.oncanplay = () => {
    canvas.width = 90
    canvas.height = 90
    // 利用canvas对象方法绘图
    ctx.drawImage(video, 0, 0, 90, 90)
    // 转换成base64形式
    Vue.set(file, 'imageShow', canvas.toDataURL('image/png')) // 获取视频第一帧作为imageShow展示
  }
}

在需要调用的文件中引入上面的工具类,调用方法并传入需要处理的视频链接跟对象即可