您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關(guān)怎么在video中使用canvas截圖視頻,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
利用canvas實現(xiàn)視頻截圖:
接下來就是關(guān)鍵步驟了,但也很簡單,那就是使用 canvas 的 drawImage 方法,大家如果翻到高程三的第15.2.6節(jié),就會發(fā)現(xiàn) drawImage 的方法的使用描述得非常詳細,但漏講了一個,那就是 video 元素也可傳入 drawImage 方法中,并且繪制圖形。具體代碼段:
var canvas = document.createElement("canvas"); var canvasCtx = canvas.getContext("2d"); var video=document.querySelector('video'); //坐原圖像的x,y軸坐標,大小,目標圖像的x,y軸標,大小。 canvasCtx.drawImage(video, 0, 0, videoWidth, videoHeight, 0, 0, imgWidth, imgHeight); //把圖標base64編碼后變成一段url字符串 var dataUrl = canvas.toDataURL("image/png"); //插入圖片得src特性中 document.createElement('img').src=dataUrl;
繪制完成圖像后,再調(diào)用 canvas 的 toDataURl 方法把圖像變成 base64 編碼的url,就可插入到 img 元素中展示,一個縮略的圖的制作便完成了。關(guān)于圖片和base64的關(guān)系,具體的同學們可以看下這篇文章。
實現(xiàn)動畫效果:
該動畫實現(xiàn)的主要原理是:先在視頻原處創(chuàng)建一張大小和視頻一致的大圖片,設(shè)置為絕對布局( position:absolut ),在實際放置縮略圖處創(chuàng)建一張小圖片,設(shè)置為不可見( visibility:hidden ),然后大圖片通過 left 和 top 實現(xiàn)位移, width 和 height 實現(xiàn)縮小,至實際放置縮略圖處,并形成動畫效果。最后大圖片刪除,小圖片顯示即可。具體代碼段:
function getOffset(elem) { var pos = {x: elem.offsetLeft, y: elem.offsetTop}; var offsetParent = elem.offsetParent; while (offsetParent) { pos.x += offsetParent.offsetLeft; pos.y += offsetParent.offsetTop; offsetParent = offsetParent.offsetParent; } return pos; }
該函數(shù)是獲取小圖片距viewport(視口)的距離,并提供給大圖片作為位移參數(shù)的,高程三的12.2.3節(jié)有段幾乎一模一樣的代碼,并附有詳細說明,以及替代方案 getBoundingClientRect 函數(shù)也有提到,具體的大家翻書看看哈。
下面的代碼便是創(chuàng)建大圖片和小圖片并實現(xiàn)動畫效果了。為了方便易懂,我這兒使用了JQuery
var $imgBig = $("<img/>"); //設(shè)置大圖片的初始位置,就是原視頻處。 $imgBig.css({ position: "absolute", left: video.offsetLeft, top: video.offsetTop, width: video.offsetWidth+ "px", height: video.offsetHeight+ "px" }).attr("src", dataUrl); var $img = $("<img/>"); $img.hide(); //獲取小圖片的距離參數(shù),實現(xiàn)大圖片的動畫效果。 var offset = getOffset($img[0]); //添加動畫效果 $imgBig.animate({ left: offset.x + "px", top: offset.y + "px", width: $img.width() + "px", height: $img.height() + "px" }, 500, function () { $img.show(); $imgBig.remove(); });
關(guān)于怎么在video中使用canvas截圖視頻就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。