JavaScript操作摄像头主要靠MediaDevices.getUserMedia(),需HTTPS/localhost安全上下文;通过constraints指定视频、音频、分辨率、facingMode或deviceId;用enumerateDevices()枚举设备并切换;需妥善处理NotAllowedError、NotFoundError等错误。

JavaScript 操作摄像头主要靠 MediaDevices.getUserMedia(),它是 MediaDevices API 的核心方法,用于请求用户授权并获取音视频流(MediaStream)。只要浏览器支持(Chrome、Firefox、Edge、Safari 11+),就能用,无需插件。
获取摄像头权限并拿到视频流
调用 navigator.mediaDevices.getUserMedia(),传入约束对象(constraints)指定需要视频、音频或两者。最简示例:
const constraints = { video: true };
navigator.mediaDevices.getUserMedia(constraints)
.then(stream => {
const video = document.querySelector('video');
video.srcObject = stream; // 直接赋值给 <video> 元素
})
.catch(err => console.error('访问摄像头失败:', err));
登录后复制
注意:必须在安全上下文(HTTPS 或 localhost)中运行,否则会直接拒绝请求。
控制摄像头参数(如分辨率、帧率、设备选择)
通过更精细的 constraints 可以指定偏好设置。例如固定 720p 分辨率、启用高帧率、或指定某台物理摄像头:
立即学习“Java免费学习笔记(深入)”;
- 基础分辨率控制:
{ video: { width: { ideal: 1280 }, height: { ideal: 720 } } } - 强制最小尺寸:
{ width: { min: 640 }, height: { min: 480 } } - 选择前置/后置摄像头(移动端常用):
{ facingMode: 'user' }(前置)或'environment'(后置) - 指定设备 ID(需先用
enumerateDevices()获取):{ deviceId: { exact: 'xxx...' } }
不是所有参数都能强制生效,浏览器会尽力满足,但最终以实际可用能力为准。
标签: javascript java idea 浏览器 edge safari ai stream
还木有评论哦,快来抢沙发吧~