<!DOCTYPE html> <html> <head> <title>Get Video Frame Example</title> </head> <body> <div id="result"></div> <script> // 獲取視頻第一幀的函數 function getVideoFi ...
<!DOCTYPE html> <html> <head> <title>Get Video Frame Example</title> </head> <body> <div id="result"></div> <script> // 獲取視頻第一幀的函數 function getVideoFirstFrame(videoUrl) { // 創建video元素 const video = document.createElement('video'); video.src = videoUrl; video.setAttribute('crossOrigin', 'Anonymous'); // 處理跨域 video.setAttribute('preload', 'auto'); // auto|metadata|none // 等待視頻載入完成 return new Promise((resolve, reject) => { video.addEventListener('loadedmetadata', () => { debugger; // 創建canvas元素 const canvas = document.createElement('canvas'); canvas.width = video.videoWidth; canvas.height = video.videoHeight; // 將視頻第一幀繪製到canvas上 const ctx = canvas.getContext('2d'); ctx.drawImage(video, 0, 0, canvas.width, canvas.height); debugger; // 將canvas圖像轉換為base64格式的數據URI const dataUrl = canvas.toDataURL(); // 返回base64格式的數據URI resolve(dataUrl); }); // 如果視頻載入出錯,則返回錯誤信息 video.addEventListener('error', () => { reject(`Failed to load video: ${videoUrl}`); }); }); } // 使用示例 getVideoFirstFrame("https://xxx.com//medias/b20a7c4b68475153194a00f54ed3dbba5.mp4") .then((dataUrl) => { console.log(dataUrl); // 列印獲取到的base64格式的數據URI const resultDiv = document.getElementById('result'); resultDiv.innerHTML = `<img src="${dataUrl}" />`; }) .catch((error) => { console.error(error); // 列印錯誤信息 }); </script> </body> </html>