1. 程式人生 > >HTML5的多個video標籤:擷取視訊源的封面圖poster,監聽視訊播放狀態的功能;

HTML5的多個video標籤:擷取視訊源的封面圖poster,監聽視訊播放狀態的功能;

// 視訊------視訊截圖 ~~ 視訊播放狀態 ~~ const setMedia = function(video, scale = 0.8) { // 設定poster屬性:(非本地視訊資源會有跨域截圖問題) video.addEventListener('loadeddata', function(e) { // 拿到圖片 let canvas = document.createElement('canvas'); canvas.width = video.videoWidth * scale; canvas.height = video.videoHeight * scale; canvas.getContext('2d'
).drawImage(video, 0, 0, canvas.width, canvas.height); let src = canvas.toDataURL('image/png'); // 顯示在dom,測試用 (function(flag = true) { if (!flag) {return;} let img = document.createElement('img'); img.src = src; document.body.appendChild(img); })(0
); // 設定屬性 video.setAttribute('poster', src); }); // ------------------------------------------------------------------------------------- //檢測視訊播放狀態: //播放按鈕 let playBtn = video.parentNode.childNodes[2].nextSibling; //設定狀態 function vidplaySate
(e) {
if (video.paused) { video.play(); playBtn.classList.add('pause'); } else { video.pause(); playBtn.classList.remove('pause'); } } //點選監聽 video.addEventListener('click', vidplaySate, false); playBtn.addEventListener('click', vidplaySate, false); //結束監聽 video.addEventListener('ended',function () { playBtn.classList.remove('pause'); }); }; //視訊: let videos = document.querySelectorAll('video'); videos.forEach((video) => { setMedia(video); });