MediaDevices
MediaDevices
是媒体捕获和流 API的一个接口,它提供了对连接的媒体输入设备(如摄像头和麦克风)以及屏幕共享的访问权限。从本质上讲,它允许您访问任何媒体数据的硬件源。
实例属性
继承自其父接口EventTarget
的属性。
实例方法
继承自其父接口EventTarget
的方法。
enumerateDevices()
-
获取有关系统上可用的媒体输入和输出设备的信息数组。
getSupportedConstraints()
-
返回一个符合
MediaTrackSupportedConstraints
的对象,指示MediaStreamTrack
接口上支持哪些可约束属性。请参阅媒体流 API,以了解有关约束以及如何使用它们的更多信息。 getDisplayMedia()
-
提示用户选择一个显示器或显示器的一部分(例如窗口)以捕获为
MediaStream
,用于共享或录制目的。返回一个解析为MediaStream
的 Promise。 getUserMedia()
-
在获得用户的许可(通过提示)后,打开系统上的摄像头和/或麦克风,并提供一个包含视频轨道和/或音频轨道的
MediaStream
作为输入。 selectAudioOutput()
实验性-
提示用户选择特定的音频输出设备。
事件
devicechange
-
当媒体输入或输出设备连接到或从用户的计算机上移除时触发。
示例
js
// Put variables in global scope to make them available to the browser console.
const video = document.querySelector("video");
const constraints = {
audio: false,
video: true,
};
navigator.mediaDevices
.getUserMedia(constraints)
.then((stream) => {
const videoTracks = stream.getVideoTracks();
console.log("Got stream with constraints:", constraints);
console.log(`Using video device: ${videoTracks[0].label}`);
stream.onremovetrack = () => {
console.log("Stream ended");
};
video.srcObject = stream;
})
.catch((error) => {
if (error.name === "OverconstrainedError") {
console.error(
`The resolution ${constraints.video.width.exact}x${constraints.video.height.exact} px is not supported by your device.`,
);
} else if (error.name === "NotAllowedError") {
console.error(
"You need to grant this page permission to access your camera and microphone.",
);
} else {
console.error(`getUserMedia error: ${error.name}`, error);
}
});
规范
规范 |
---|
媒体捕获和流 # mediadevices |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。
另请参阅
- 媒体捕获和流 API:此接口所属的 API。
- 屏幕捕获 API:定义
getDisplayMedia()
方法的 API。 - WebRTC API
Navigator.mediaDevices
:返回对MediaDevices
对象的引用,该对象可用于访问设备。- CameraCaptureJS: 使用
MediaDevices
和媒体流录制 API 进行 HTML 视频捕获和回放 - OpenLang:使用
MediaDevices
和媒体流录制 API 进行视频录制的 HTML 视频语言实验室 Web 应用程序