MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-dev-survey

MediaDevices.enumerateDevices()

这篇翻译不完整。请帮忙从英语翻译这篇文章

这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。

方法MediaDevices.enumerateDevices() 用于收集系统上可用的多媒体输入和输出设备的信息。

语法

navigator.mediaDevices.enumerateDevices()
.then(function(MediaDeviceInfo) { ... })

返回值

返回一个 Promise ,如果枚举成功that will be fulfilled with 一个包含MediaDeviceInfo 实例的数组, 它包含了可用的多媒体输入输出设备的信息.

示例

这是一个使用 mediaDevices.enumerateDevices() 的例子.

if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) {
  console.log("enumerateDevices() not supported.");
  return;
}

// 列出摄像头和麦克风

navigator.mediaDevices.enumerateDevices()
.then(function(devices) {
  devices.forEach(function(device) {
    console.log(device.kind + ": " + device.label +
                " id = " + device.deviceId);
  });
})
.catch(function(err) {
  console.log(err.name + ": " + err.message);
});

这将会输出以下内容:

videoinput: id = csO9c0YpAf274OuCPUA53CNE0YHlIr2yXCi+SqfBZZ8=
audioinput: id = RKxXByjnabbADGQNNZqLVLdmXlS0YkETYCIbg+XxnvM=
audioinput: id = r2/xw1xUPIyZunfV1lGrKOma5wTOvCkWfZ368XCndm0=

或者如果有一个或多个活动的 MediaStream,又或者获得了持久授权,将会输出以下内容:

videoinput: FaceTime HD Camera (Built-in) id=csO9c0YpAf274OuCPUA53CNE0YHlIr2yXCi+SqfBZZ8=
audioinput: default (Built-in Microphone) id=RKxXByjnabbADGQNNZqLVLdmXlS0YkETYCIbg+XxnvM=
audioinput: Built-in Microphone id=r2/xw1xUPIyZunfV1lGrKOma5wTOvCkWfZ368XCndm0=

权限

在一个可安装的app (如 Firefox OS app) 中使用 enumerateDevices(),你需要在声明文件中指定以下的权限:

"permissions": {
  "audio-capture": {
    "description": "Required to capture audio using getUserMedia()"
  },
  "video-capture": {
    "description": "Required to capture video using getUserMedia()"
  }
}

参见 permission: audio-capturepermission: video-capture 来获取更多信息。

规范

Specification Status Comment
Media Capture and Streams
mediaDevices.enumerateDevices
Editor's Draft Initial definition.

浏览器兼容

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 45.0 [1] 39 未实现 未实现 未实现
Feature Android Android Webview Firefox Mobile (Gecko) Firefox OS (Gecko) IE Phone Opera Mobile Safari Mobile Chrome for Android
Basic support 未实现 未实现 39 39 未实现 未实现 未实现 未实现

[1] Behind a flag.

Chrome 和 Opera 的兼容性

  • 通过 adapter.js 填充物,可以让该接口在Chrome和Opera上可用。

See also

文档标签和贡献者

 此页面的贡献者: lightrabbit
 最后编辑者: lightrabbit,