2.4.2 获取摄像头与话筒

WebRTC使用getUserMedia()方法获取摄像头与话筒对应的媒体流。

const promise = navigator.mediaDevices.getUserMedia(constraints);
  • 参数:constraints,这是一个MediaStreamConstraints对象,指定了获取媒体流的约束需求,MediaStreamConstraints对象的使用详见2.2节。
  • 返回值:promise,如果方法调用成功则得到一个MediaStream对象。如果调用失败,则抛出DOMException异常,异常对象的name属性可取值如表2-8所示。

表2-8 getUserMedia()异常说明

039-01

代码清单2-33调用getUserMedia()方法请求音频和视频,如果调用成功则将stream关联到<video>元素,并在加载完meta数据后播放视频。如果调用失败,则打印错误对象的name和message。

代码清单2-33 getUserMedia()方法示例

const constraints = {
  audio: true,
  video: { width: 1280, height: 720 }
};

navigator.mediaDevices.getUserMedia(constraints)
.then((stream) => {
  const video = document.querySelector('video');
  video.srcObject = stream;
  video.onloadedmetadata = (e) => {
    video.play();
  };
})
.catch((err) => {
  console.log(err.name + ": " + err.message);
});