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

首頁 > 開發 > HTML5 > 正文

canvas與html5實現視頻截圖功能示例

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

這段時間一直在研究canvas,突發奇想想做一個可以截屏視頻的功能,然后把圖片拉去做表情包,哈哈哈哈哈哈~~

制作方法:

1.在頁面中加載視頻

在使用canvas制作這個截圖功能時,首先必須保證頁面上已經加載完成了這個視頻,這樣才能夠方便的對其操作。如果使用下面直接嵌入<video>標簽的方式:

<video loop controls id="testmp4" width="500" height="400" >    <source src="test.mp4" type="video/mp4">  <source src="test.webm" type="video/webm">   <source src="test.ogg" type="video/ogg"></video> 

在我的那篇《html5與視頻》中講到,瀏覽器對視頻的預加載progress以及load事件支持不同,會影響video的播放及其他事件的觸發。所以我們在這里使用js構造video的方式來引入視頻。

這種方式引入視頻要注意,不能引入多個source,所以要先判斷瀏覽器對視頻格式的支持。

1.1使用video的canPlayType()方法判斷支持格式

canPlayType()方法需要傳入一個參數,這個參數就是video的格式,

常用值:video/ogg;

    video/mp4;

    video/webm;

或者包括編碼器:

    video/ogg;codecs="theora,vorbis"

    video/mp4;codecs="avc1.4D401E, mp4a.40.2"

    video/webm;codesc="vp8.0, vorbis"

返回值:表示網頁的支持級別:"probably"-最有可能支持(輸入值帶編碼器的時候只返回這個);"maybe" - 可能支持;"" - (空字符串)不支持;

function videoType(video){    var returnType='';    if(video.canPlayType('video/mp4')=='probably'||video.canPlayType('video/mp4')=='maybe'){      returnType= 'mp4';    }else if(video.canPlayType('video/ogg')=='probably'||video.canPlayType('video/ogg')=='maybe'){<br>     returnType= 'ogg';    <br>   }else if(video.canPlayType('video/webm')=='probably'||video.canPlayType('video/webm')=='maybe'){<br>     returnType= 'webm';    <br>   }<br>   return returnType; } 

這個函數可以判斷瀏覽器對video支持的格式。

 1.2使用js動態加載video標簽

這里判斷了瀏覽器的支持格式后,由于我用的是chrome,所以我的瀏覽器支持mp4格式的視頻,然后我們動態創建一個video標簽。

var videoElem;var videoDiv;function createVideo(){     videoElem=document.createElement("video");//創建video     videoDiv=document.getElementById("videopanel");//獲取video的外層容器     videoDiv.appendChild(videoElem);     var vtype=videoType(videoElem);//判斷瀏覽器支持的格式     if(vtype==""){        videoDiv.innerHtml('不支持video')    }else{        videoElem.setAttribute('src',"text."+vtype);    }}         

由于這里我們要制作截圖功能,單純的video不具備截圖的接口,所以我們要把它復制到canvas上,在canvas上播出這個視頻,所以這里我們先把video給隱藏掉(display:none)。

2.使用canvas復制視頻

現在video已經在瀏覽器上播放了,接下來我們把它復制到canvas里,首先建立canvas,然后得到畫布context,這些就不說了。如何把video畫在canvas上,這里我們要使用一個函數。drawImage函數的用法

1.drawImage(img,x,y):在畫布的(x,y)這個位置畫一個img;

2.drawImage(img,x,y,width,height):在畫布的(x,y)這個位置畫一個width寬,height高的img;

3.drawImage(img,sx,sy,swidth,sheight,x,y,width,height):在畫布的(x,y)位置畫一個img的(sx,sy)位置的swidth寬,sheight高的一塊截圖,畫在畫布上要縮放到width寬和height高。

以上就是drawImage的用法了,這個函數非常的強大。

回到做截圖,我們現在已經在瀏覽器上創建好了畫布--contextVideo,接著我們在這里把視頻畫出來:

contextVideo.drawImage(videoElem,0,0);

然后我們可以看到在canvas里畫了一張圖,但是視頻是不斷變化的,所以我們需要使用setInterval函數不斷的吧video作為源來畫圖。

setInterval(function(){<br>    contextVideo,drawImage(videoElem,0,0);<br>},100) 

這里時間間隔的大小會影響到視頻播放是否會卡?! ?/p>

到這里我們就把video搬到canvas上展示了。接下來制作截圖。

 3.制作截圖展示canvas面板

這里我們需要再在頁面上畫一個canvas畫布--contextImg,然后再次利用drawImage方法,截圖。

contextImg.drawImage(canvasVideo,0,0,canvasVideo.width,canvasVideo.height); 

這段代碼將第一個canvas畫到了第二個canvas上。

4.制作截圖按鈕

制作一個按鈕,然后綁定click事件,點擊后就調用上一步的函數,這樣就可以制作一個截圖了。

當圖截好后可以將圖右鍵保存下來,然后倒入ps制作表情包了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91中文字幕在线| 欧美日韩一区二区免费视频| 国产精品扒开腿做爽爽爽男男| 亚洲三级免费看| 亚洲精品v欧美精品v日韩精品| 亚洲自拍偷拍第一页| 欧美日韩国产麻豆| 欧美二区在线播放| 午夜精品美女自拍福到在线| 日韩在线观看免费高清| 色综合91久久精品中文字幕| 日韩激情在线视频| 久久国产精品久久久久| 午夜精品久久久久久久99热浪潮| 亚洲欧美日韩在线一区| 日韩女优在线播放| 久久久免费观看视频| 亚洲欧美国产va在线影院| 成人国产精品色哟哟| 亚洲aⅴ日韩av电影在线观看| 中文字幕久久久av一区| 亚洲国产精品久久久久久| 九九热最新视频//这里只有精品| 成人av资源在线播放| 日韩精品免费在线播放| 中文字幕亚洲天堂| 日韩中文字幕av| 国产成人亚洲精品| 日韩精品视频在线观看免费| 51视频国产精品一区二区| 91视频九色网站| 亚洲欧美国产va在线影院| 狠狠色狠色综合曰曰| 国产欧美精品在线播放| 国产精品久久久久久久一区探花| 亚洲黄页视频免费观看| 国产日韩欧美黄色| 久久精品小视频| 亚洲乱码国产乱码精品精| 欧美综合在线第二页| 欧美黄色片免费观看| 伊人久久久久久久久久| 国产成人精品国内自产拍免费看| 欧美情侣性视频| 国产成+人+综合+亚洲欧美丁香花| 国产综合在线视频| 久久久精品免费视频| 97在线观看免费| 欧美乱妇40p| 久久久精品2019中文字幕神马| 日韩成人在线视频| 深夜福利国产精品| 日韩美女视频免费看| 国产有码在线一区二区视频| 亚洲国产一区自拍| 正在播放国产一区| 日韩av高清不卡| 欧美大肥婆大肥bbbbb| 亚洲自拍另类欧美丝袜| 久久精品电影一区二区| 欧美俄罗斯乱妇| 国内精品视频在线| 亚洲欧美在线免费| 精品国产一区二区三区在线观看| 成人综合国产精品| 91爱爱小视频k| 亚洲国产精品人久久电影| 欧美激情视频给我| 亚洲一区二区久久久久久久| 日韩中文字幕免费看| 亚洲美女又黄又爽在线观看| 国产亚洲视频在线| 成人xvideos免费视频| 国产精品视频导航| 日韩精品中文在线观看| 欧美大胆在线视频| 国产精品久久久精品| 国产91精品久久久| 欧美日韩免费看| 欧美亚洲午夜视频在线观看| 日韩在线精品视频| 国产精品www网站| 日韩亚洲国产中文字幕| 国产精品扒开腿做爽爽爽视频| 色妞一区二区三区| www国产亚洲精品久久网站| 亚洲综合日韩在线| 欧美色播在线播放| xvideos成人免费中文版| xx视频.9999.com| 国产精品三级美女白浆呻吟| 国产精品吴梦梦| 国产亚洲日本欧美韩国| 亚洲国产精品久久久久| 亚洲精品小视频| 精品国产欧美一区二区五十路| 亚洲精品久久久久久下一站| 久久久噜噜噜久久| 亚洲免费一级电影| 亚洲国产精品久久精品怡红院| 在线视频国产日韩| 精品亚洲男同gayvideo网站| 日韩国产高清视频在线| 国产suv精品一区二区三区88区| 国产精品天天狠天天看| 欧美高清性猛交| 亚洲精品在线观看www| 国产suv精品一区二区| 久久久精品久久| 成人在线中文字幕| 国产欧美久久久久久| 俺去亚洲欧洲欧美日韩| 国产精品久久久久久网站| 97视频免费观看| 色婷婷久久一区二区| 久久精品视频va| 国产97在线播放| 亚洲free性xxxx护士hd| 欧美成人精品在线播放| 欧美日韩国产中文精品字幕自在自线| 亚洲美女精品成人在线视频| 麻豆成人在线看| 日韩av黄色在线观看| 欧美黑人巨大精品一区二区| 欧美最猛性xxxxx亚洲精品| 欧美华人在线视频| 日韩欧美在线免费观看| 日韩精品在线免费观看视频| 久热精品视频在线免费观看| 在线视频欧美日韩精品| 97免费视频在线播放| 精品中文字幕久久久久久| 欧美人交a欧美精品| 亚洲精品第一国产综合精品| 亚洲人a成www在线影院| 久久免费视频在线观看| 亚洲欧美中文日韩v在线观看| 国产精品入口免费视频一| 亚洲香蕉成人av网站在线观看| 欧美性猛交99久久久久99按摩| 国产精品成av人在线视午夜片| 日本国产欧美一区二区三区| 91情侣偷在线精品国产| 久久男人资源视频| 美女国内精品自产拍在线播放| 中文字幕久久精品| 在线观看欧美日韩国产| 亚洲精品国产免费| 91精品国产色综合| 久久久亚洲影院| 尤物tv国产一区| 日韩精品视频在线播放| 国产精品第一区| 国产做受69高潮| 欧美午夜性色大片在线观看| 久久精品电影一区二区| 成人激情视频小说免费下载| 久久免费少妇高潮久久精品99| 成人在线视频福利| 秋霞午夜一区二区| 欧美亚洲在线视频| 欧美日韩国产一区在线| 亚洲日本欧美日韩高观看| 亚洲欧洲国产一区|