MediaDevices
Baseline Widely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2017.
* Some parts of this feature may have varying levels of support.
MediaDevices
介面可以存取連接的媒體輸入設備,像是相機、麥克風,以及螢幕分享。它可以存取任何硬體資源的媒體數據。
屬性
繼承父類EventTarget
的屬性。
方法
繼承父類EventTarget
的方法。
enumerateDevices()
-
取得一系列關於系統中可用的媒體輸入和媒體輸出設備的資訊。
getSupportedConstraints()
-
返回一個符合
MediaTrackSupportedConstraints
的物件,該物件標示出MediaStreamTrack
介面支援哪些可約束的屬性。請參考 Media Streams API 瞭解更多關於constraints
的資訊。 getDisplayMedia()
-
出現提示視窗讓使用者選擇要捕捉整個螢幕或是部分(例如一個視窗)的畫面做為
MediaStream
,用於分享或錄製。返回值為一個解析為MediaStream
的 promise。 getUserMedia()
-
透過提示視窗獲得使用者的許可後,打開系統上的相機和/或麥克風麥克風,並返回一包含視訊輸入軌道和/或音訊輸入軌道的
MediaStream
。 selectAudioOutput()
-
出現提示視窗讓使用者選擇特定的音訊輸出設備。
事件
devicechange
-
在媒體輸入或媒體輸出設備連接上使用者的系統裝置,或是從使用者的系統裝置移除時觸發。
範例
js
"use strict";
// Put variables in global scope to make them available to the browser console.
var video = document.querySelector("video");
var constraints = (window.constraints = {
audio: false,
video: true,
});
var errorElement = document.querySelector("#errorMsg");
navigator.mediaDevices
.getUserMedia(constraints)
.then(function (stream) {
var videoTracks = stream.getVideoTracks();
console.log("Got stream with constraints:", constraints);
console.log("Using video device: " + videoTracks[0].label);
stream.onremovetrack = function () {
console.log("Stream ended");
};
window.stream = stream; // make variable available to browser console
video.srcObject = stream;
})
.catch(function (error) {
if (error.name === "ConstraintNotSatisfiedError") {
errorMsg(
"The resolution " +
constraints.video.width.exact +
"x" +
constraints.video.height.exact +
" px is not supported by your device.",
);
} else if (error.name === "PermissionDeniedError") {
errorMsg(
"Permissions have not been granted to use your camera and " +
"microphone, you need to allow the page access to your devices in " +
"order for the demo to work.",
);
}
errorMsg("getUserMedia error: " + error.name, error);
});
function errorMsg(msg, error) {
errorElement.innerHTML += "<p>" + msg + "</p>";
if (typeof error !== "undefined") {
console.error(error);
}
}
規範
Specification |
---|
Media Capture and Streams # mediadevices |
瀏覽器兼容性
BCD tables only load in the browser
參見
- Media Capture and Streams API: The API this interface is part of.
- Screen Capture API: The API defining the
getDisplayMedia()
method. - WebRTC API
Navigator.mediaDevices
: Returns a reference to aMediaDevices
object that can be used to access devices.- CameraCaptureJS: HTML5 video capture and playback using
MediaDevices
and the MediaStream Recording API (source on GitHub) - OpenLang: HTML5 video language lab web application using
MediaDevices
and the MediaStream Recording API for video recording (source on GitHub)