媒體擷取和限制

WebRTC 的媒體部分介紹瞭如何存取具有擷取功能的硬體 影片和音訊 (例如攝影機和麥克風),以及媒體串流方式 這些研究有助於我們找出 能引導後續作業的標準並介紹多媒體媒體,也是應用程式執行螢幕的方式 擷取。

媒體裝置

瀏覽器支援的所有攝影機和麥克風都能存取 透過 navigator.mediaDevices 物件管理應用程式可以擷取 目前的連線裝置清單,也會監聽變更,因為許多 攝影機和微型音訊會透過 USB 連接,然後可以連接 但在應用程式生命週期內會中斷連結由於媒體狀態 裝置可能會隨時變更,不過建議您為應用程式註冊 才能妥善處理變更。

限制

存取媒體裝置時,建議您根據 雖然您可以開啟預設攝影機 都有簡單的限制 可能會放送距離更遠的媒體串流 來選擇我們最需要的功能

特定限制是在 MediaTrackConstraint 物件中定義, 另一個用途是影片這個物件中的屬性屬於以下類型: ConstraintLongConstraintBooleanConstraintDoubleConstraintDOMString。這可以是特定值 (例如數字、 布林值或字串)、範圍 (LongRangeDoubleRange,最小值為 最大值),或是具有 idealexact 定義的物件。換 特定的值,瀏覽器會嘗試盡可能選擇最接近該值的項目。 指定範圍時,系統會使用該範圍內的最佳值。exact為 只有與該限製完全相符的媒體串流才會 。

靠近

// Camera with a resolution as close to 640x480 as possible
{
    "video": {
        "width": 640,
        "height": 480
    }
}

範圍

// Camera with a resolution in the range 640x480 to 1024x768
{
    "video": {
        "width": {
            "min": 640,
            "max": 1024
        },
        "height": {
            "min": 480,
            "max": 768
        }
    }
}

完全

// Camera with the exact resolution of 1024x768
{
    "video": {
        "width": {
            "exact": 1024
        },
        "height": {
            "exact": 768
        }
    }
}

如要判斷媒體串流追蹤的實際設定, 我們可以呼叫 MediaStreamTrack.getSettings(),以傳回 目前套用的MediaTrackSettings

你也可以在我們的媒體裝置上更新音軌的限制 在軌道上呼叫 applyConstraints()。這樣一來 應用程式才能重新設定媒體裝置,而不必先關閉 現有直播影片。

多媒體

需要具備執行螢幕畫面擷取和錄製功能的應用程式 都必須使用 Display Media API。getDisplayMedia() 函式 (屬於 的 navigator.mediaDevicesgetUserMedia() 類似,會用於 目的在於開啟螢幕的內容 (或其中一部分,例如 視窗)。傳回的 MediaStream 和使用 getUserMedia()

getDisplayMedia() 的限制與一般使用的限制條件不同 影片、影片或音訊輸入

{
    video: {
        cursor: 'always' | 'motion' | 'never',
        displaySurface: 'application' | 'browser' | 'monitor' | 'window'
    }
}

上方的程式碼片段顯示螢幕錄影的特殊限制 能夠正常運作。請注意,並非所有顯示螢幕的瀏覽器都支援這些功能 媒體支援

串流和追蹤

MediaStream 代表由軌道組成的媒體內容串流 (MediaStreamTrack)。您可以從以下位置擷取所有足跡: 呼叫 MediaStream.getTracks() 即可 MediaStream,系統會傳回 MediaStreamTrack 物件。

MediaStreamTrack

MediaStreamTrackkind 屬性可以是 audiovideo。 用於表示其所代表的媒體類型可以切換開關,將每首曲目靜音 其 enabled 屬性。音軌的布林值屬性 remote 會指出 如果資料來源為 RTCPeerConnection 且來自遠端對等節點。