長期以來,音訊與視訊訊息的捕捉一直是Web開發中的一個難點。多年來,我們一直依賴瀏覽器插件來實現這個需求。
在HTML 5中,出現了許多可以存取硬體設備的API,例如存取GPS設備的Geolocation API、存取accelerometer設備的Orientation API、存取GPU設備的WebGL API、存取音訊播放設備的Web Audio API等等。這些API是非常強大的,因為開發者可以直接透過編寫JavaSccript腳本程式碼來存取底層硬體設備。
本文介紹一種新的API,該API透過使用navigatior.getUserMedia()方法來讓Web應用程式擁有存取使用者攝影機與麥克風設備的能力。
捕捉媒體資料的技術發展歷史
在過去幾年裡,開始出現了在Web應用程式中存取客戶端本地設備的需求,因此,W3C組織決定組織一個DAP(Device APIS POLICY)工作小組,來為該需求的實現制定一個統一的標準。
接下來讓我們來看看在2011年發生了哪些事情:
在HTML頁面文件中實現媒體資料的捕捉
DAP工作小組的第一個要製定的標準就是如何在Web應用程式的HTML頁面中實現媒體資料的捕捉。他們決定重載類型為file的input元素(),並且為accept屬性增加一個新的屬性值。
如果開發者想實現使用者透過相機拍照的功能,可以書寫如下所示的程式碼。
錄影資料與音訊資料的程式碼與之類似:
在這些程式碼中,只需使用file控制(類型為file的input元素)即可完成拍照或錄製媒體資料的功能。但是在因為這些程式碼中尚缺乏一些實現與之相關的需求(例如在canvas元素中渲染捕捉到的視訊資料,或者對捕捉到的視訊資料應用WEBGL濾鏡)的能力,所以沒有得到開發者的廣泛應用。
支援瀏覽器:
Android 3.0瀏覽器
Chrome for Android (0.16)
Firefox Mobile 10.0
device元素
如果使用files,捕捉媒體資料後對其進行處理的能力是非常有限的,所以出現了一種新的可支援任何設備的標準。該標準使用device元素。
Opera瀏覽器是第一個透過device元素實現視訊資料捕捉的瀏覽器。幾乎在同一天,WhatWG組織決定使用navigator.getUserMedia()方法來捕捉媒體資料。一個星期後,Opera推出一個新的支援navigator.getUserMedia()方法的瀏覽器。後來,Microsoft工具推出支援此方法的IE 9瀏覽器。
device元素的使用方法如下所示。
<script> <br />function update(stream) { <br />document.querySelector('video') .src = stream.url; <br />} <br /></script>
支援瀏覽器:
不幸的是,目前為止尚沒有一個正式版的瀏覽器中支援device元素。
WEBRTC
最近,由於WebRTC(Web Real Time Communication:Web即時通訊)API的出現,媒體資料捕捉技術又有了一個很大的發展。 Google、Opera、Mozilla等公司都正在努力將其實現在自己的瀏覽器中。
WebRTC API是一個與getUserMedia方法緊密相關的API,它提供一種存取客戶端本地的攝影機或麥克風設備的能力。
支援瀏覽器:
目前為止,在Chrome 18版瀏覽器中,在chrome://flags頁面中進行設定後可使用WebRTC,在Chrome 21版本的瀏覽器中,該API被預設使用,不再需要設定。在Opera 12以上與Firefox 17版本的瀏覽器中預設支援WebRTC API。
使用getUserMedia方法
透過使用getUserMedia方法,我們可以不依靠插件而直接存取客戶端本地的攝影機設備與麥克風設備。
偵測瀏覽器支援
可以透過如下所示的方法來偵測瀏覽器是否支援getUserMedia方法。
function hasG有>程式碼如下:
function hasGethasGetUser) /請注意:在Opera瀏覽器中不使用前綴
return !!(navigator.getUserMedia || navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia || navigator.msGetUserMedia); if; (hasGetUserMedia()) {
alert('您的瀏覽器支援getUserMedia方法');
}
else {
alert('您的瀏覽器不支援getUserMedia方法');
}
取得存取裝置的權限
為了存取客戶端攝影機裝置與麥克風裝置,我們首先需要取得權限。 getUserMedia方法的第一個參數是用來指定媒體類型的物件。例如,當你想存取攝影機裝置時,第一個參數應該為{video:true},為了同時存取攝影機裝置與麥克風裝置,需要使用{video:true,audio:true}參數,程式碼如下所示:
在這段程式碼中,同時為video元素使用autoplay屬性,如果不使用該屬性,則video元素將停留在所取得的第一幀畫面處。
請注意:在Chrome瀏覽器中,如果只使用{audio:true},則引發BUG,在Opera瀏覽器中,同樣不能使用audio元素。
如果你想讓多個瀏覽器同時支援getUserMedia方法,請使用如下所示的程式碼:
程式碼如下:
window.URL = window.URL || window.webkitURL;
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserator.webkitGet mozGetUserMedia || navigator.msGetUserMedia;
var video = document.getElementById('video');
if (navigator.getUserMedia) {
navigator.getUserMedia({vidaudio: trueeounction (stream) {
video.src = window.URL.createObjectURL(stream);
}, onFailSoHard);
}
else {
alert('您的瀏覽器不支援getUserMedia方法');
セキュリティ
一部のブラウザでは、getUserMedia メソッドが呼び出されるときに、カメラまたはマイクへのアクセスを許可するか拒否するかをユーザーに尋ねるプロンプト ウィンドウが表示されます。
写真を撮る
Canvas API では、ctx.drawImage(video,0,0) メソッドを使用して、video 要素内の特定のフレームを Canvas 要素に出力できます。もちろん、ユーザーのカメラから撮影した画像情報をvideo要素に出力しているので、video要素を介してcanvas要素に画像情報を出力することも可能です。つまり、リアルタイムの写真撮影を実現します。関数は次のとおりです。
コードをコピーします
-webkit-filter: グレースケール(1);
}
.sepia {
-webkit-filter: sepia(1);
- webkit-filter:blur(3px);
}
...
スクリプト>
var idx = 0;
var フィルター = ['グレースケール'、'セピア'、'ぼかし'、'明るさ'、'コントラスト'、'色相回転'、
'色相回転2 ', ' hue-rotate3', 'saturate', 'invert', ''];
function changeFilter(e) {
var el = e.target;
el.className = ''; 🎜>var effect = filters[idx % filters.length]; // フィルターをループします。
el.classList.add(effect);
>document.getElementById('video').addEventListener('click',changeFilter,false);

html5isamajorrevisionofthehtmlStandardThatRevolutionsWebDevelopmentBybyIntroDucingNewSemanticeLementSemelementsandAndCapabilities.1)itenhancesCodereAdabilityAndSeowitability andSeowithelientsLike,and.2)

H5的高級技巧包括:1.利用進行複雜圖形繪製,2.使用WebWorkers提升性能,3.通過WebStorage增強用戶體驗,4.實現響應式設計,5.利用WebRTC實現實時通信,6.進行性能優化和最佳實踐。這些技巧幫助開發者構建更動態、互動和高效的Web應用。

H5(HTML5)將通過新元素和API提升網頁內容和設計。 1)H5增強了語義化標記和多媒體支持。 2)它引入了Canvas和SVG,豐富了網頁設計。 3)H5的工作原理是通過新標籤和API擴展HTML功能。 4)基本用法包括使用創建圖形,高級用法涉及WebStorageAPI。 5)開發者需注意瀏覽器兼容性和性能優化。

H5帶來了多項新功能和能力,極大提升了網頁的互動性和開發效率。 1.語義化標籤如、增強了SEO。 2.多媒體支持通過和標籤簡化了音視頻播放。 3.Canvas繪圖提供了動態圖形繪製工具。 4.本地存儲通過localStorage和sessionStorage簡化了數據存儲。 5.地理位置API便於開發基於位置的服務。

HTML5帶來了五個關鍵改進:1.語義化標籤提升了代碼清晰度和SEO效果;2.多媒體支持簡化了視頻和音頻嵌入;3.表單增強簡化了驗證;4.離線與本地存儲提高了用戶體驗;5.畫布與圖形功能增強了網頁的可視化效果。

HTML5的核心特性包括語義化標籤、多媒體支持、離線存儲與本地存儲、表單增強。 1.語義化標籤如、等,提升代碼可讀性和SEO效果。 2.和標籤簡化多媒體嵌入。 3.離線存儲和本地存儲如ApplicationCache和LocalStorage,支持無網絡運行和數據存儲。 4.表單增強引入新輸入類型和驗證屬性,簡化處理和驗證。

H5提供了多種新特性和功能,極大地增強了前端開發的能力。 1.多媒體支持:通過和元素嵌入媒體,無需插件。 2.畫布(Canvas):使用元素動態渲染2D圖形和動畫。 3.本地存儲:通過localStorage和sessionStorage實現數據持久化存儲,提升用戶體驗。

H5和HTML5是不同的概念:HTML5是HTML的一個版本,包含新元素和API;H5是基於HTML5的移動應用開發框架。 HTML5通過瀏覽器解析和渲染代碼,H5應用則需要容器運行並通過JavaScript與原生代碼交互。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

SublimeText3漢化版
中文版,非常好用

WebStorm Mac版
好用的JavaScript開發工具

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