js截取视频帧,任意一帧,解决第一帧空白问题
getVideoFirstFrame(videoUrl) {
const video = document.createElement('video');
video.src = videoUrl;
video.setAttribute('crossOrigin', 'Anonymous');
video.setAttribute('preload', 'auto');
video.muted = true;
video.autoplay = true;
video.preload = true;
return new Promise((resolve, reject) => {
video.addEventListener('loadedmetadata', () => {
video.play()
setTimeout(() => {
video.pause()
const canvas = document.createElement('canvas');
canvas.width = video.videoWidth;
canvas.height = video.videoHeight;
const ctx = canvas.getContext('2d');
console.log(video);
ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
const dataUrl = canvas.toDataURL('image/png');
console.log(dataUrl);
resolve(dataUrl);
}, 500);
});
video.addEventListener('error', () => {
reject(`Failed to load video: ${videoUrl}`);
});
});
},