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

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

MediaDevices 的方法 enumerateDevices() 请求一个可用的媒体输入和输出设备的列表,例如麦克风,摄像机,耳机设备等。 返回的 Promise 完成时,会带有一个描述设备的 MediaDeviceInfo 的数组。

语法

var enumeratorPromise = navigator.mediaDevices.enumerateDevices();

返回值

返回一个 Promise 。当完成时,它接收一个 MediaDeviceInfo 对象的数组。每个对象描述一个可用的媒体输入输出设备。.

如果枚举失败,promise 将失败(rejected)。

示例

这是一个使用  enumerateDevices()的例子。它只是输出一个带有标签(有标签的情况下)的 device ID的列表。

 

if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) {
  console.log("不支持 enumerateDevices() .");
  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 来获取更多信息。

规范

规范 状态 注释
Media Capture and Streams
mediaDevices: enumerateDevices
Candidate Recommendation Initial definition.

浏览器兼容

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
enumerateDevicesChrome Full support 47Edge Full support 12Firefox Full support 63
Notes
Full support 63
Notes
Notes Prior to Firefox 63, enumerateDevices() only returned input devices. Starting with Firefox 63, output devices are also included.
Full support 39
IE No support NoOpera Full support 34Safari Full support 11WebView Android Full support 47Chrome Android Full support 47Edge Mobile Full support YesFirefox Android Full support 39Opera Android Full support 34Safari iOS Full support 11Samsung Internet Android Full support Yes

Legend

Full support  
Full support
No support  
No support
See implementation notes.
See implementation notes.

 

 

参考

文档标签和贡献者

此页面的贡献者: mmdext, mdnwebdocs-bot, lightrabbit
最后编辑者: mmdext,