RTCRtpSender: transform 屬性
RTCRtpSender 物件的 transform 屬性用於將一個執行在 worker 執行緒中的 transform stream ( TransformStream ) 插入到傳送管道中。這允許在編碼器輸出編碼後的影片和音訊幀之後、傳送之前,對它們應用流轉換。
要新增的轉換使用 RTCRtpScriptTransform 及其關聯的 Worker 來定義。如果 transform 是在建立 RTCRtpSender 後立即同步設定的,它將接收到傳送者編碼器生成的第一個完整幀。
值
一個 RTCRtpScriptTransform,或者在傳送者沒有關聯的轉換流時為 null。
示例
此示例展示瞭如何透過 WebRTC 將使用者攝像頭的影片流傳輸出去,並新增一個 WebRTC 編碼轉換來修改出站流。請注意,這是 guides 主題 使用 WebRTC 編碼轉換 中更大型示例的一部分。
程式碼假定存在一個名為 peerConnection 的 RTCPeerConnection 物件,並且該物件已連線到遠端對等端。它首先使用 getUserMedia() 從媒體裝置獲取影片 MediaStream,然後使用 MediaStream.getTracks() 方法獲取流中的第一個 MediaStreamTrack。
使用 addTrack() 將該軌道新增到對等連線。這將返回一個新的 RTCRtpSender 物件,用於傳送該軌道。
const mediaStream = await navigator.mediaDevices.getUserMedia({ video: true });
const [track] = mediaStream.getTracks();
const videoSender = peerConnection.addTrack(track, mediaStream);
上面的程式碼設定了連線並開始傳送軌道。為了將轉換流新增到管道中,我們需要構建一個 RTCRtpScriptTransform 並將其分配給傳送者的 transform 屬性。由於轉換是在建立 RTCRtpSender 後立即構造的,因此它將在傳送者編碼器生成的第一個幀被髮送之前接收到該幀。
const worker = new Worker("worker.js");
videoSender.transform = new RTCRtpScriptTransform(worker, {
name: "senderTransform",
});
請注意,您可以隨時新增轉換。但是,在呼叫 addTrack() 後立即新增轉換,轉換將獲得傳送的第一個編碼幀。
規範
| 規範 |
|---|
| WebRTC Encoded Transform # dom-rtcrtpsender-transform |
瀏覽器相容性
載入中…