内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

canvas與h5怎么實現(xiàn)視頻截圖功能-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關(guān)canvas與h5怎么實現(xiàn)視頻截圖功能的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。

“只有客戶發(fā)展了,才有我們的生存與發(fā)展!”這是創(chuàng)新互聯(lián)的服務(wù)宗旨!把網(wǎng)站當作互聯(lián)網(wǎng)產(chǎn)品,產(chǎn)品思維更注重全局思維、需求分析和迭代思維,在網(wǎng)站建設(shè)中就是為了建設(shè)一個不僅審美在線,而且實用性極高的網(wǎng)站。創(chuàng)新互聯(lián)對成都做網(wǎng)站、網(wǎng)站設(shè)計、網(wǎng)站制作、網(wǎng)站開發(fā)、網(wǎng)頁設(shè)計、網(wǎng)站優(yōu)化、網(wǎng)絡(luò)推廣、探索永無止境。

制作方法:

1.在頁面中加載視頻

在使用canvas制作這個截圖功能時,首先必須保證頁面上已經(jīng)加載完成了這個視頻,這樣才能夠方便的對其操作。如果使用下面直接嵌入<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與視頻》中講到,瀏覽器對視頻的預(yù)加載progress以及l(fā)oad事件支持不同,會影響video的播放及其他事件的觸發(fā)。所以我們在這里使用js構(gòu)造video的方式來引入視頻。

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

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

canPlayType()方法需要傳入一個參數(shù),這個參數(shù)就是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"

返回值:表示網(wǎng)頁的支持級別:"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; 
}

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

1.2使用js動態(tài)加載video標簽

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

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

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

2.使用canvas復(fù)制視頻

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

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的用法了,這個函數(shù)非常的強大。

回到做截圖,我們現(xiàn)在已經(jīng)在瀏覽器上創(chuàng)建好了畫布--contextVideo,接著我們在這里把視頻畫出來:

contextVideo.drawImage(videoElem,0,0);

然后我們可以看到在canvas里畫了一張圖,但是視頻是不斷變化的,所以我們需要使用setInterval函數(shù)不斷的吧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事件,點擊后就調(diào)用上一步的函數(shù),這樣就可以制作一個截圖了。

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

感謝各位的閱讀!關(guān)于canvas與h5怎么實現(xiàn)視頻截圖功能就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

網(wǎng)站題目:canvas與h5怎么實現(xiàn)視頻截圖功能-創(chuàng)新互聯(lián)
鏈接地址:http://m.rwnh.cn/article44/iepee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、品牌網(wǎng)站制作電子商務(wù)、網(wǎng)站制作、手機網(wǎng)站建設(shè)、商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
上蔡县| 航空| 侯马市| 临高县| 额敏县| 苍南县| 仲巴县| 化隆| 永兴县| 南宫市| 商丘市| 林甸县| 玉山县| 临朐县| 本溪市| 黄骅市| 科技| 安庆市| 连城县| 宜川县| 和田县| 涿鹿县| 嘉荫县| 正镶白旗| 龙海市| 桃园市| 奉化市| 鄂托克前旗| 七台河市| 柳州市| 金湖县| 南康市| 临澧县| 寿宁县| 辛集市| 丽江市| 江门市| 垣曲县| 武宣县| 阿尔山市| 北碚区|