MediaDevices

Baseline 廣泛可用 *

此功能已成熟,可跨多種裝置和瀏覽器版本使用。自 2017 年 9 月以來,它已在瀏覽器中提供。

* 此特性的某些部分可能存在不同級別的支援。

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

MediaDevices 介面是 媒體捕獲和流 API 的一部分,它提供了對連線的媒體輸入裝置(如攝像頭和麥克風)以及螢幕共享的訪問。本質上,它允許您獲取對任何媒體資料硬體源的訪問許可權。

EventTarget MediaDevices

例項屬性

從其父介面 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

瀏覽器相容性

另見