亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > HTML5 > 正文

video結合canvas實現視頻在線截圖功能

2024-09-05 07:19:22
字體:
來源:轉載
供稿:網友

給大家講解下我前幾天看到的一個有趣小demo:視頻在線截圖。以下是我修改和添加了新功能后的效果圖:

 

是不是很酷,其實挺簡單的,下面就給大家講講怎么弄哈。

這里主要分為三大塊功能,首先是第一個:

利用URL對象獲取視頻鏈接并展示:

js的URL對象有個 createObjectURL 方法,它可以獲取一個文件(File對象)的url,然后插入到 video 元素的 src 特性中,這樣就可以實現視屏的展示了。當然如何獲取File對象呢,方法有種,比如使用input元素,或者使用拖動的方式。一個完整的代碼段:

<input type="file"/>document.querySelector('input[type="file"]').addEventListener('change',function () {    document.querySelector('video').src = window.URL.createObjectURL(this.files[0])})

當然源碼中我并不是這樣寫的,僅僅是為了給大家一個演示而已。關于URL更加具體的使用,大家可以看看這篇文章或者MDN。

利用canvas實現視頻截圖:

接下來就是關鍵步驟了,但也很簡單,那就是使用 canvas 的 drawImage 方法,大家如果翻到高程三的第15.2.6節,就會發現 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;

繪制完成圖像后,再調用 canvas 的 toDataURl 方法把圖像變成 base64 編碼的url,就可插入到 img 元素中展示,一個縮略的圖的制作便完成了。關于圖片和base64的關系,具體的同學們可以看下這篇文章。

實現動畫效果:

該動畫實現的主要原理是:先在視頻原處創建一張大小和視頻一致的大圖片,設置為絕對布局( position:absolut ),在實際放置縮略圖處創建一張小圖片,設置為不可見( visibility:hidden ),然后大圖片通過 left 和 top 實現位移, width 和 height 實現縮小,至實際放置縮略圖處,并形成動畫效果。最后大圖片刪除,小圖片顯示即可。具體代碼段:

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;}

該函數是獲取小圖片距viewport(視口)的距離,并提供給大圖片作為位移參數的,高程三的12.2.3節有段幾乎一模一樣的代碼,并附有詳細說明,以及替代方案 getBoundingClientRect 函數也有提到,具體的大家翻書看看哈。

下面的代碼便是創建大圖片和小圖片并實現動畫效果了。為了方便易懂,我這兒使用了JQuery

var $imgBig = $("<img/>");//設置大圖片的初始位置,就是原視頻處。$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();//獲取小圖片的距離參數,實現大圖片的動畫效果。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();});

 

恩恩,主要的代碼部分到這就講完啦,當然具體的實現還有很多細節上的問題以及其他的功能可能沒有展示,我就不一一說明了,具體的大家看完源碼后可以再提問。

下面是我的源碼地址,大家可以試試哈:

在github上的demo

總結

以上所述是小編給大家介紹的video結合canvas實現視頻在線截圖功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美精品亚州精品| 清纯唯美亚洲激情| 国产精品久久久久久久久久| 亚洲福利小视频| 欧美激情视频网址| 欧美多人爱爱视频网站| 成人有码在线视频| 中文字幕国产亚洲| 久久久久久久色| 精品国产欧美成人夜夜嗨| 国内精品一区二区三区| 日韩精品视频免费在线观看| 亚洲最大激情中文字幕| 久久69精品久久久久久久电影好| 亚洲精品永久免费精品| 国产精品欧美风情| 午夜精品一区二区三区在线视| 欧美一级成年大片在线观看| 在线视频中文亚洲| 成人精品网站在线观看| 91免费欧美精品| 国外成人在线播放| 亚洲国产精品va| 欧美午夜片在线免费观看| 国产精品99久久久久久www| 国产精品久久久久久久av电影| 日韩av不卡在线| www.xxxx欧美| 久久久在线免费观看| 精品视频在线播放免| 91理论片午午论夜理片久久| www.国产精品一二区| 91精品国产色综合久久不卡98口| 亚洲人成网站在线播| 亚洲第一网中文字幕| 欧美夫妻性生活视频| 亚洲成人教育av| 欧美电影《睫毛膏》| 日韩中文在线中文网三级| 欧美另类69精品久久久久9999| 久久久久久久久久久免费精品| 国产精品成人在线| 97超级碰在线看视频免费在线看| 亚洲精品自拍视频| 欧美成人午夜免费视在线看片| 国内偷自视频区视频综合| 国产精品久久99久久| 懂色av影视一区二区三区| 日本精品久久中文字幕佐佐木| 久久成人人人人精品欧| 97超碰蝌蚪网人人做人人爽| 国产精品久久久久久久av电影| 国产成人精品优优av| 日韩最新在线视频| 久久男人av资源网站| 亚洲精品久久久久久久久久久久久| 亚洲一二三在线| 国产一区二区三区中文| 91在线高清免费观看| 成人女保姆的销魂服务| 日韩亚洲欧美中文高清在线| 国产精品偷伦一区二区| 国产精品女视频| 亚洲成人网在线| 国产精品免费视频xxxx| 国产又爽又黄的激情精品视频| 亚洲精品中文字幕有码专区| 尤物九九久久国产精品的特点| 欧美日韩精品在线| 亚洲人免费视频| 2019中文字幕在线| 久久久在线视频| 91国自产精品中文字幕亚洲| 97视频免费在线观看| 日韩动漫免费观看电视剧高清| 91亚洲精品久久久久久久久久久久| 性欧美在线看片a免费观看| 91精品视频大全| 美女久久久久久久| 91啪国产在线| 中文字幕亚洲欧美日韩2019| 久久久久久这里只有精品| 亚洲福利视频二区| 一本色道久久综合亚洲精品小说| 日韩在线播放视频| 中文字幕日韩欧美在线| 日韩高清av一区二区三区| 日韩中文字幕视频在线| 欧美巨猛xxxx猛交黑人97人| 伦伦影院午夜日韩欧美限制| 久久久av免费| 北条麻妃一区二区三区中文字幕| 国产精国产精品| 91精品国产精品| 高跟丝袜欧美一区| 日韩精品免费在线视频| 久久久久久久久久久91| 亚洲国产小视频在线观看| 欧美日韩国产黄| 激情成人在线视频| 国产视频精品在线| 91夜夜未满十八勿入爽爽影院| 亚洲性生活视频| 深夜福利日韩在线看| 成人免费xxxxx在线观看| 久久免费少妇高潮久久精品99| 日本成人激情视频| 日韩成人在线电影网| 69久久夜色精品国产69乱青草| 性欧美办公室18xxxxhd| 在线观看国产欧美| 日韩中文综合网| 日韩欧美亚洲综合| 黄色成人在线免费| 在线观看久久av| 91av在线视频观看| 美女999久久久精品视频| 亚洲级视频在线观看免费1级| 欧美成人精品不卡视频在线观看| 亚洲视频专区在线| 日韩一区二区欧美| 欧美韩国理论所午夜片917电影| 国产在线98福利播放视频| 国产一区二区三区毛片| 亚洲国产日韩欧美综合久久| 国产欧美日韩91| 高清欧美性猛交xxxx黑人猛交| 亚洲美女在线视频| 亚洲欧洲国产一区| 亚洲二区在线播放视频| 欧美日韩免费一区| 欧美视频不卡中文| 国产日韩av在线| 久久偷看各类女兵18女厕嘘嘘| 国产精品久久久久久久久久小说| 68精品国产免费久久久久久婷婷| 亚洲欧美日韩图片| 国产免费一区二区三区在线能观看| 26uuu另类亚洲欧美日本一| 日韩毛片在线观看| 欧美日韩综合视频网址| 成人www视频在线观看| 亚洲第一区中文字幕| 上原亚衣av一区二区三区| www.国产精品一二区| 成人欧美在线观看| 精品国产自在精品国产浪潮| 欧美香蕉大胸在线视频观看| 成人网欧美在线视频| 粉嫩av一区二区三区免费野| 国产精品福利在线观看网址| 欧美日韩色婷婷| 亚洲欧美日本精品| 2021国产精品视频| 欧美精品激情在线| 九色成人免费视频| 久久精品99国产精品酒店日本| 国产在线高清精品| 日韩精品在线私人| 亚洲日本中文字幕免费在线不卡| 538国产精品一区二区免费视频| xvideos成人免费中文版| 精品精品国产国产自在线| 亚洲香蕉成视频在线观看|