今天我們來講一下如何使用JavaScript控制攝像頭。在Web開發(fā)中,我們常常需要使用相機來拍照或錄制視頻。而隨著HTML5的普及,現(xiàn)在我們可以使用JavaScript來輕松實現(xiàn)這一功能。下面是一個例子。
var video = document.querySelector('video'); var constraints = { audio: true, video: true }; navigator.mediaDevices.getUserMedia(constraints) .then(function(mediaStream) { video.srcObject = mediaStream; video.onloadedmetadata = function(e) { video.play(); }; }) .catch(function(err) { console.log(err.name + ": " + err.message); });
上面的代碼首先獲取了一個video元素,然后指定了使用audio和video來獲取媒體流。接著,我們調(diào)用了navigator.mediaDevices.getUserMedia()方法來獲取媒體流,如果成功獲取到了媒體流,我們就把它賦給video的srcObject屬性。然后我們監(jiān)聽video的onloadedmetadata事件,當(dāng)視頻的metadata加載完成后,就調(diào)用video.play()方法播放視頻。
當(dāng)我們需要拍照時,我們可以使用Canvas來實現(xiàn)。下面是一個例子:
var video = document.querySelector('video'); var canvas = document.querySelector('canvas'); var ctx = canvas.getContext('2d'); navigator.mediaDevices.getUserMedia({ video: true }) .then(function(stream) { video.srcObject = stream; video.play(); }) .catch(function(err) { console.log(err.name + ": " + err.message); }); document.querySelector('#take-photo').addEventListener('click', function() { canvas.width = video.videoWidth; canvas.height = video.videoHeight; ctx.drawImage(video, 0, 0, canvas.width, canvas.height); var imgData = canvas.toDataURL('image/png'); document.querySelector('#photo').src = imgData; });
這段代碼首先獲取了一個video和一個canvas元素,然后獲取了視頻流并將其賦給video的srcObject屬性。當(dāng)我們點擊拍照按鈕時,我們首先設(shè)置canvas的寬高等于視頻的寬高,然后調(diào)用ctx.drawImage()方法將視頻的圖像繪制到canvas上。最后調(diào)用canvas.toDataURL()方法將canvas轉(zhuǎn)換為base64字符串,并將其作為圖片的src屬性。
通過以上兩個例子,我們可以看到JavaScript很容易就可以控制攝像頭。當(dāng)然,還有很多其它的方法可以實現(xiàn)更多功能,例如錄制視頻、添加濾鏡等等,這些都需要我們自己去探索。