canvas获取视频封面及个别电脑获取到空图

读取视频封面:

csharp 复制代码
        let video = document.createElement("video");
        video.src = videosrc;
        video.currentTime= 10 // 可能出现黑屏,从10帧
        video.muted = true; // 解决个别电脑获取到空图
        video.autoplay = true; // 解决个别电脑获取到空图
        video.preload = true; // 解决个别电脑获取到空图
        video.addEventListener('loadeddata', async () => {
          video.pause();
          var canvas = document.createElement('canvas')
          canvas.width = video.videoWidth
          canvas.height = video.videoHeight
          canvas.getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height)
          const cover = canvas.toDataURL('image/png')
           console.log('图片base64是:',cover)
          video.remove();
    }}

base64转file:

csharp 复制代码
const convertFile = base64 => {
  let fileArray = base64.split(','),
    fileType = fileArray[0].match(/:(.*?);/)[1],
    bstr = atob(fileArray[1]),
    n = bstr.length,
    u8arr = new Uint8Array(n)
  while (n--) {
    u8arr[n] = bstr.charCodeAt(n)
  }
  return new File([u8arr], '文件名', { type: fileType })
}

下载:

csharp 复制代码
const buttonClick = (base64) => {
  let file = convertFile(base64)
  const node = document.createElement('a')
  node.href = URL.createObjectURL(file)
  node.download = file.name
  node.click()
  URL.revokeObjectURL(node.href)
  document.body.appendChild(node)
  document.body.removeChild(node)
}
相关推荐
纯爱掌门人12 分钟前
聊聊 HarmonyOS 上的应用内通知授权弹窗
前端·harmonyos·arkts
Cdlblbq15 分钟前
搜索会员中心 创作中心Vue2项目一键打包成桌面应用
前端·javascript·vue.js·electron
IT观测23 分钟前
2026年六家视频音频格式转换软件品牌深度解析:格式转化器选型指南
音视频
eason_fan37 分钟前
前端避坑指南:一文吃透 npm 幽灵依赖(Phantom Dependency)
前端·前端工程化
前端小万38 分钟前
2026年3月面20个前端
前端
大学生小郑44 分钟前
如何定义图像质量,如何评价图像质量
图像处理·学习·音视频·视频
葡萄城技术团队1 小时前
智慧表格(SpreadJS + AI):拥抱 Web 端对话式办公新时代
前端·人工智能
OpenTiny社区1 小时前
电商系统集成GenUI SDK实操指南
前端·开源·ai编程
A_nanda1 小时前
vue实现后端传输逐帧图像数据
前端·javascript·vue.js
YGY顾n凡1 小时前
我开源了一个项目:一句话创造一个AI世界!
前端·后端·aigc