1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
      canvas與html5如何實(shí)現(xiàn)視頻截圖功能-創(chuàng)新互聯(lián)

      這篇文章主要介紹了canvas與html5如何實(shí)現(xiàn)視頻截圖功能,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

      成都創(chuàng)新互聯(lián)主要從事成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)扶風(fēng),10多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):13518219792

      制作方法:

      1.在頁(yè)面中加載視頻

      在使用canvas制作這個(gè)截圖功能時(shí),首先必須保證頁(yè)面上已經(jīng)加載完成了這個(gè)視頻,這樣才能夠方便的對(duì)其操作。如果使用下面直接嵌入

          
      
        
      
         
      
      
      
      

      在我的那篇《html5與視頻》中講到,瀏覽器對(duì)視頻的預(yù)加載progress以及l(fā)oad事件支持不同,會(huì)影響video的播放及其他事件的觸發(fā)。所以我們?cè)谶@里使用js構(gòu)造video的方式來(lái)引入視頻。

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

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

      canPlayType()方法需要傳入一個(gè)參數(shù),這個(gè)參數(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)頁(yè)的支持級(jí)別:"probably"-最有可能支持(輸入值帶編碼器的時(shí)候只返回這個(gè));"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'){
           returnType= 'ogg';    
         }else if(video.canPlayType('video/webm')=='probably'||video.canPlayType('video/webm')=='maybe'){
           returnType= 'webm';    
         }
         return returnType;  }

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

       1.2使用js動(dòng)態(tài)加載video標(biāo)簽

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

      var videoElem;
      
      var videoDiv;
      
      function createVideo(){
      
           videoElem=document.createElement("video");//創(chuàng)建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不具備截圖的接口,所以我們要把它復(fù)制到canvas上,在canvas上播出這個(gè)視頻,所以這里我們先把video給隱藏掉(display:none)。

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

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

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

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

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

      以上就是drawImage的用法了,這個(gè)函數(shù)非常的強(qiáng)大。

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

      contextVideo.drawImage(videoElem,0,0);

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

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

      這里時(shí)間間隔的大小會(huì)影響到視頻播放是否會(huì)卡。  

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

       3.制作截圖展示canvas面板

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

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

      這段代碼將第一個(gè)canvas畫(huà)到了第二個(gè)canvas上。

      4.制作截圖按鈕

      制作一個(gè)按鈕,然后綁定click事件,點(diǎn)擊后就調(diào)用上一步的函數(shù),這樣就可以制作一個(gè)截圖了。

      當(dāng)圖截好后可以將圖右鍵保存下來(lái),然后倒入ps制作表情包了。

      感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“canvas與html5如何實(shí)現(xiàn)視頻截圖功能”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,,關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!


      網(wǎng)頁(yè)標(biāo)題:canvas與html5如何實(shí)現(xiàn)視頻截圖功能-創(chuàng)新互聯(lián)
      瀏覽地址:http://www.ef60e0e.cn/article/jhije.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        葫芦岛市| 康平县| 博爱县| 丘北县| 嘉义县| 东辽县| 香河县| 晋州市| 峨山| 沂源县| 明溪县| 杭锦旗| 获嘉县| 苍溪县| 临西县| 金昌市| 峨山| 临武县| 老河口市| 平武县| 阿克陶县| 锦州市| 调兵山市| 郯城县| 德钦县| 哈巴河县| 交城县| 防城港市| 潮安县| 蚌埠市| 正定县| 明星| 桦川县| 安顺市| 长乐市| 承德市| 政和县| 阿拉善右旗| 东山县| 绵竹市| 乌拉特前旗|