這段時間一直在研究canvas,突發奇想想做一個可以截圖影片的功能,然後把圖片拉去做表情包,哈哈哈哈哈哈~~
製作方法:
1 .在頁面中加載視頻
在使用canvas製作這個截圖功能時,首先必須保證頁面上已經加載完成了這個視頻,這樣才能夠方便的對其操作。如果使用下面直接嵌入
<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 videop; function createVideo(){ videoElem=document.createElement("video");//创建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不具備截圖的接口,所以我們要把它複製到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)
這裡時間間隔的大小會影響到影片播放是否會卡片。
到這裡我們就把video搬到canvas上展示了。接下來製作截圖。
3.製作截圖展示canvas面板
這裡我們需要再在頁面上畫一個canvas畫布--contextImg,然後再利用drawImage方法,截圖。
contextImg.drawImage(canvasVideo,0,0,canvasVideo.width,canvasVideo.height);
這段程式碼將第一個canvas畫到了第二個canvas上。
4.製作截圖按鈕
製作一個按鈕,然後綁定click事件,點擊後就呼叫上一個步驟的函數,這樣就可以製作一個截圖了。
當圖截好後可以將圖右鍵儲存下來,然後倒入ps製作表情包了。
以上就是canvas與html5實作視訊截圖功能範例 的內容,更多相關內容請關注PHP中文網(www.php.cn)!

Microdatainhtml5enhancesseoanduserexperienceByByBybyBystructuredDatatoSearchEngines.1)useIteMscope,itemType,anditempropattributestomarkupcontentlikeSoreRoductSssSssSoRorevents.2)

html5introducesnewinputtypesthatenhanceSerexperience,簡化開發和iMproveAccessibility.1)自動validatesemailformat.2)優化優化,優化OmportizeSmizesemizesemizesemizesemizesemizeSmobobileWithAnumericKeyPad.3)和Simimplifydateandtimeputientupits,並重新替代了Forcustemolcustemolcustene。

H5是HTML5,是HTML的第五個版本。 HTML5提升了網頁的表現力和交互性,引入了語義化標籤、多媒體支持、離線存儲和Canvas繪圖等新特性,推動了Web技術的發展。

無障礙訪問和網絡標準遵循對網站至關重要。 1)無障礙訪問確保所有用戶都能平等訪問網站,2)網絡標準遵循提高網站的可訪問性和一致性,3)實現無障礙訪問需使用語義化HTML、鍵盤導航、顏色對比度和替代文本,4)遵循這些原則不僅是道德和法律要求,還能擴大用戶群體。

HTML中的H5標籤是第五級標題,用於標記較小的標題或子標題。 1)H5標籤幫助細化內容層次,提升可讀性和SEO。 2)結合CSS可定製樣式,增強視覺效果。 3)合理使用H5標籤,避免濫用,確保內容結構邏輯性。

HTML5構建網站的方法包括:1.使用語義化標籤定義網頁結構,如、、等;2.嵌入多媒體內容,使用和標籤;3.應用表單驗證和本地存儲等高級功能。通過這些步驟,你可以創建一個結構清晰、功能豐富的現代網頁。

通過合理的H5代碼結構可以讓頁面在眾多內容中脫穎而出。 1)使用語義化標籤如、、等組織內容,使結構清晰。 2)通過CSS佈局如Flexbox或Grid控制頁面在不同設備上的呈現效果。 3)實現響應式設計,確保頁面在不同屏幕尺寸上自適應。

HTML5(H5)與舊版本HTML的主要區別包括:1)H5引入了語義化標籤,2)支持多媒體內容,3)提供離線存儲功能。 H5通過新標籤和API增強了網頁的功能和表現力,如和標籤,提高了用戶體驗和SEO效果,但需注意兼容性問題。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

禪工作室 13.0.1
強大的PHP整合開發環境

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器