MediaStreamTrack: getCapabilities() 方法

Baseline 2024
新推出

自 2024 年 10 月以來,此功能已可在最新的裝置和瀏覽器版本上使用。此功能可能不適用於舊裝置或瀏覽器。

getCapabilities() 方法是 MediaStreamTrack 介面的一部分,它會返回一個物件,該物件根據平臺和 使用者代理 詳細說明了關聯 MediaStreamTrack 的每個可約束屬性的接受值或值範圍。

一旦您瞭解了瀏覽器的能力,您的指令碼就可以使用 applyConstraints() 來請求將軌道配置為匹配理想或可接受的設定。有關如何處理可約束屬性的詳細資訊,請參閱 能力、約束和設定

語法

js
getCapabilities()

引數

無。

返回值

一個 MediaTrackCapabilities 物件,它指定了使用者代理的可約束屬性的每個屬性支援的接受值或值範圍。請注意,並非所有屬性都出現在每個軌道上,可用的成員取決於軌道是音訊還是影片。這可能包含以下成員:

對於音訊和影片軌道

deviceId

一個標識捕獲裝置的字串。

groupId

一個對相關裝置進行分組的字串。

注意: 出於歷史原因,這兩個屬性是字串,而不是像所有其他能力那樣是字串陣列。

僅適用於音訊軌道

autoGainControl

一個布林值陣列。如果源無法進行自動增益控制,則報告單個 false。如果無法關閉自動增益控制,則報告單個 true。如果指令碼可以控制該功能,則源將報告 truefalse

channelCount

一個範圍物件,包含 minmax 屬性(均包含一個非負整數),描述了支援的通道數。

echoCancellation

一個布林值或字串陣列,指示是否支援回聲消除。如果源無法進行回聲消除,則報告單個 false。如果源可以進行回聲消除,則陣列以 true 開頭。如果指令碼可以控制該功能,則陣列以 true, false 開頭。此外,如果源允許控制將取消哪些音訊源,則陣列還包括 "all" 和/或 "remote-only" 的值。

latency

一個範圍物件,包含 minmax 屬性(均包含一個數字),描述了從聲音開始到資料可用之間的預期延遲(以秒為單位)。

noiseSuppression

一個布林值陣列,指示降噪功能是否可用。如果源無法進行降噪,則報告單個 false。如果無法關閉降噪,則報告單個 true。如果指令碼可以控制該功能,則源將報告 truefalse

sampleRate

一個範圍物件,包含 minmax 屬性(均包含一個非負整數),描述了支援的音訊取樣率範圍。

sampleSize

一個範圍物件,包含 minmax 屬性(均包含一個非負整數),描述了支援的線性取樣位深度範圍。

僅適用於影片軌道

aspectRatio

一個範圍物件,包含 minmax 屬性(均包含一個數字),描述了支援的影片寬高比範圍(寬度除以高度)。

facingMode

一個字串陣列,指示攝像頭方向。有關支援的值,請參閱 MediaTrackConstraints.facingMode。在某些裝置上,可能會報告多個朝向模式;例如,在一個具有多個面向使用者的攝像頭的、高階的遠端呈現解決方案中,使用者左側的攝像頭可以同時報告 "left""user"

frameRate

一個範圍物件,包含 minmax 屬性(均包含一個數字),描述了支援的幀率範圍。

height

一個範圍物件,包含 minmax 屬性(均包含一個非負整數),描述了支援的高度範圍(以畫素為單位)。

width

一個範圍物件,包含 minmax 屬性(均包含一個非負整數),描述了支援的寬度範圍(以畫素為單位)。

resizeMode

一個字串陣列,指示使用者代理如何從攝像頭解析度推匯出所需解析度。有關支援的值,請參閱 MediaTrackConstraints.resizeMode。始終包含 "none" 值。

有關每個屬性含義的更多資訊,請參閱 MediaTrackConstraints

示例

以下程式碼片段將請求使用者授權訪問其本地攝像頭和麥克風。一旦授權,每個 MediaStreamTrack 的能力將以 MediaTrackCapabilities 物件的格式記錄到控制檯。

js
navigator.mediaDevices
  .getUserMedia({ video: true, audio: true })
  .then((stream) => {
    const tracks = stream.getTracks();
    tracks.map((t) => console.log(t.getCapabilities()));
  });

一個示例能力物件如下所示:

json
{
  "autoGainControl": [true, false],
  "channelCount": {
    "max": 1,
    "min": 1
  },
  "deviceId": "jjxEMqxIhGdryqbTjDrXPWrkjy55Vte70kWpMe3Lge8=",
  "echoCancellation": [true, false],
  "groupId": "o2tZiEj4MwOdG/LW3HwkjpLm1D8URat4C5kt742xrVQ=",
  "noiseSuppression": [true, false]
}

物件的具體內容將取決於瀏覽器和媒體硬體。

規範

規範
媒體捕獲和流
# dom-mediastreamtrack-getcapabilities

瀏覽器相容性

另見