MDN
https://developer.mozilla.org/zh-CN/docs/Web/API/Canvas_API/Manipulating_video_using_canvas
实现原理:通过canvas将正在播放到的一定位置的video图像绘制到canvas上面,之后通过canva转码成base64
function getBase64ImgCodeFromVideo(url,width=400,height=240) { /// 返回一个 Promise return new Promise(function(resolve, reject) { // base64 的图片编码 let dataURL = ''; const video = document.createElement("video"); // 匿名 video.setAttribute('crossorigin', 'anonymous'); //处理跨域 video.setAttribute('src', url); // video.setAttribute('width', 400); // video.setAttribute('height', 240); video.setAttribute('controls', 'controls'); video.currentTime = 1 //视频时长,对应上面的实现原理,如果没有设置时间的话,现实的时候就是刚开始视频的一下子,就是白屏!!! video.addEventListener('loadeddata', function(e) { let canvas = document.createElement("canvas"); // width = video.width, //canvas的尺寸和图片一样 // height = video.height; canvas.width = width; canvas.height = height; canvas.getContext("2d").drawImage(video, 0, 0, width, height); //绘制canvas dataURL = canvas.toDataURL('image/png'); //转换为base64 // 设置视频的封面 // video.setAttribute('poster', dataURL); resolve(dataURL); }); }) }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步