MediaTrackConstraints
MediaTrackConstraints 字典用於描述一組媒體功能以及每個功能可以採用的值。
約束字典被傳遞給 MediaStreamTrack 介面的 applyConstraints() 方法,以允許指令碼為軌道建立一組精確(必需)值或範圍和/或首選值或值範圍。
透過呼叫 getConstraints() 可以檢索最近請求的自定義約束集。
此型別的物件也可以傳遞給:
-
MediaDevices.getUserMedia()方法,用於指定從相機或麥克風等硬體請求的媒體流的約束。 -
MediaDevices.getDisplayMedia()方法,用於指定從螢幕或視窗捕獲請求的媒體流的約束。
約束
以下型別用於指定屬性的約束。它們允許您指定一個或多個 exact 值(其中一個必須是引數的值),或一組 ideal 值(如果可能,應使用這些值)。您還可以指定一個單一值(或一個值陣列),使用者代理將盡力匹配該值,一旦所有更嚴格的約束都已應用。
要了解有關約束如何工作的更多資訊,請參見功能、約束和設定。
注意:在 MediaDevices.getDisplayMedia() 呼叫中使用的約束中不允許使用 min 和 exact 值——它們會產生 TypeError——但它們允許在 MediaStreamTrack.applyConstraints() 呼叫中使用的約束中。
ConstrainBoolean
ConstrainBoolean 約束型別用於指定值為布林值的屬性的約束。其值可以設定為布林值(true 或 false)或包含以下屬性的物件:
ConstrainBooleanOrDOMString
ConstrainBooleanOrDOMString 約束型別用於指定值為布林值或字串值的屬性的約束。它可以採用 ConstrainBoolean 和 ConstrainDOMString 部分中指定的值。
ConstrainDouble
ConstrainDouble 約束型別用於指定值為雙精度浮點數的屬性的約束。其值可以設定為數字或包含以下屬性的物件:
ConstrainDOMString
ConstrainDOMString 約束型別用於指定值為字串的屬性的約束。其值可以設定為字串、字串陣列或包含以下屬性的物件:
ConstrainULong
ConstrainULong 約束型別用於指定值為整數的屬性的約束。其值可以設定為數字或包含以下屬性的物件:
例項屬性
物件上將存在以下屬性的某些組合(但不一定是全部)。這可能是因為給定瀏覽器不支援該屬性,或者因為它不適用。例如,由於 RTP 在 WebRTC 連線協商期間不提供其中一些值,因此與 RTCPeerConnection 關聯的軌道將不包括某些值,例如 facingMode 或 groupId。
所有媒體軌道的例項屬性
deviceId-
一個
ConstrainDOMString物件,指定可接受和/或必需的裝置 ID 或裝置 ID 陣列。 groupId-
一個
ConstrainDOMString物件,指定可接受和/或必需的組 ID 或組 ID 陣列。
音軌的例項屬性
autoGainControl-
一個
ConstrainBoolean物件,指定是否首選和/或需要自動增益控制。 channelCount-
一個
ConstrainULong,指定可接受和/或必需的聲道數或聲道數範圍。 echoCancellation-
一個
ConstrainBooleanOrDOMString物件,指定是否首選和/或需要回聲消除,如果支援,指定型別。 latency-
一個
ConstrainDouble,指定可接受和/或必需的延遲或延遲範圍。 noiseSuppression-
一個
ConstrainBoolean,指定是否首選和/或需要降噪。 sampleRate-
一個
ConstrainULong,指定可接受和/或必需的取樣率或採樣率範圍。 sampleSize-
一個
ConstrainULong,指定可接受和/或必需的取樣大小或採樣大小範圍。 volume已廢棄 非標準-
一個
ConstrainDouble,指定可接受和/或必需的音量或音量範圍。
影像軌道的例項屬性
whiteBalanceMode-
一個
String,指定"none"、"manual"、"single-shot"或"continuous"之一。 exposureMode-
一個
String,指定"none"、"manual"、"single-shot"或"continuous"之一。 focusMode-
一個
String,指定"none"、"manual"、"single-shot"或"continuous"之一。 pointsOfInterest-
感測器上一個或多個興趣點的畫素座標。這要麼是 { x:value, y:value } 形式的物件,要麼是此類物件的陣列,其中 value 是雙精度整數。
exposureCompensation-
一個
ConstrainDouble(雙精度整數),指定 f 值調整高達 ±3。 colorTemperature-
一個
ConstrainDouble(雙精度整數),指定所需的開爾文色溫。 iso-
一個
ConstrainDouble(雙精度整數),指定所需的 ISO 設定。 brightness-
一個
ConstrainDouble(雙精度整數),指定所需的亮度設定。 contrast-
一個
ConstrainDouble(雙精度整數),指定明暗之間的差異程度。 saturation(飽和度)-
一個
ConstrainDouble(雙精度整數),指定顏色強度的程度。 -
一個
ConstrainDouble(雙精度整數),指定邊緣的強度。 focusDistance-
一個
ConstrainDouble(雙精度整數),指定到聚焦物件的距離。 zoom-
一個
ConstrainDouble(雙精度整數),指定所需的焦距。 torch-
一個布林值,定義補光燈是否持續連線,這意味著只要軌道處於活動狀態,它就會保持開啟。
影片軌道的例項屬性
aspectRatio-
一個
ConstrainDouble,指定可接受和/或必需的影片 寬高比 或寬高比範圍。 facingMode-
一個
ConstrainDOMString物件,指定可接受和/或必需的面向模式或面向模式陣列。 frameRate-
一個
ConstrainDouble,指定可接受和/或必需的幀率或幀率範圍。 height-
一個
ConstrainULong,指定可接受和/或必需的影片高度或高度範圍。 width-
一個
ConstrainULong,指定可接受和/或必需的影片寬度或寬度範圍。 resizeMode-
一個
ConstrainDOMString物件,指定使用者代理可用於推導影片軌道解析度和幀率的模式或模式陣列。允許的值為:crop-and-scale-
使用者代理可以使用硬體/作業系統的原始輸出的裁剪和解析度或幀率的縮減,以滿足其他約束。此約束允許開發人員即使其約束指示的特定格式不被硬體原生支援,也能獲得縮減後的影片。
none-
使用者代理使用底層硬體(如攝像頭或其驅動程式)或作業系統提供的解析度。
如果未指定
resizeMode,瀏覽器將根據考慮指定約束和允許值兩者的“適應度距離”來選擇解析度。
共享螢幕軌道的例項屬性
這些約束適用於傳遞給 getDisplayMedia() 以獲取螢幕共享流的物件的 video 屬性。
displaySurface-
一個
ConstrainDOMString,指定使用者可以選擇的顯示錶面型別。這可以是以下字串中的一個,或一個列表以允許多個源表面: logicalSurface-
一個
ConstrainBoolean值,可以包含單個布林值或一組布林值,指示是否允許使用者選擇不直接對應於顯示區域的源表面。這些可能包括視窗的後備緩衝區,以允許捕獲被前面其他視窗隱藏的視窗內容,或包含需要滾動以檢視其視窗中全部內容的更大文件的緩衝區。 suppressLocalAudioPlayback實驗性-
一個
ConstrainBoolean值,描述對suppressLocalAudioPlayback可約束屬性值的請求或強制約束。此屬性控制當選項卡被捕獲時,選項卡中播放的音訊是否會繼續透過使用者的本地揚聲器播放。 restrictOwnAudio實驗性-
一個
ConstrainBoolean值,指定對restrictOwnAudio可約束屬性值的請求或強制約束。此屬性控制源自捕獲選項卡的系統音訊是否從螢幕捕獲中過濾掉。
規範
| 規範 |
|---|
| 媒體捕獲和流 # dom-mediatrackconstraints |
| 螢幕捕獲 # extensions-to-mediatrackconstraintset |