您好,欢迎来到汇智旅游网。
搜索
您的当前位置:首页javascript实现获取视频封面,实现本地预览功能

javascript实现获取视频封面,实现本地预览功能

来源:汇智旅游网

主要思路就是监听视频播放,然后通过canvas去绘制想要获取的某一时刻的画面

// videoFile: 要解析的视频文件资源, time: 获取视频某一时刻的画面
function captureFrame(videoFile, time = 0) {
  return new Promise((resolve) => {
    // 因为dom节点没有渲染到浏览器,视频播放到指定的时间就会停止播放
    const videoElement = document.createElement('video');
    videoElement.currentTime = time; // 设置截取的帧时间
    // 自动播放存在兼容性问题,设置静音解决自动播放在不同浏览器的兼容性问题
    videoElement.muted = true; 
    videoElement.autoplay = true;
    videoElement.src = URL.createObjectURL(videoFile);
    videoElement.oncanplay = async function () {
      const flame = await drawVideoToCanvas(videoElement);
      resolve(flame); 
    };
  });
}

将拿到的视频画面通过canvas绘制出来:

function drawVideoToCanvas(video) {
  return new Promise((resolve) => {
    const canvas = document.createElement('canvas');
    const ctx = canvas.getContext('2d');
    canvas.width = video.videoWidth;
    canvas.height = video.videoHeight;
    ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
    canvas.toBlob((blob) => {
      resolve({
        blob, // 将封面提交到服务端
        url: URL.createObjectURL(blob), // 实现本地预览
      });
    });
  });
}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- hzar.cn 版权所有 赣ICP备2024042791号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务