navigator.mediaDevices.getUserMedia({ video: true, audio: false })
.then(stream => {
const video = document.querySelector('video');
video.srcObject = stream;
video.play();
})
.catch(err => console.error('攝像頭存取失敗:', err));
<video id="camera" autoplay playsinline width="100%"></video>
<button onclick="capture()">拍照</button>
<canvas id="snapshot" style="display:none"></canvas>
function capture() {
const video = document.getElementById('camera');
const canvas = document.getElementById('snapshot');
canvas.width = video.videoWidth;
canvas.height = video.videoHeight;
canvas.getContext('2d').drawImage(video, 0, 0);
// 轉 Base64 或 Blob 上傳
canvas.toBlob(blob => {
const formData = new FormData();
formData.append('image', blob, 'photo.jpg');
fetch('/upload', { method: 'POST', body: formData });
}, 'image/jpeg', 0.9);
}
localhost),HTTP 環境瀏覽器拒絕 getUserMedia。<video playsinline> 否則全屏播放無法在頁面內拍照。WebChromeClient 中實作 onPermissionRequest 授權攝像頭權限。navigator.webkitGetUserMedia。詳細教程:9RIA H5 攝像頭實戰