RTCRtpScriptTransformer: writable 屬性
RTCRtpScriptTransformer 介面的只讀屬性 writable 返回一個 WritableStream 例項,該例項可用作對應 RTCRtpScriptTransformer.readable 上入隊的已編碼媒體幀的接收器。
當對應的 RTCRtpScriptTransform 被插入到 WebRTC 傳送方和接收方管道時,已編碼媒體幀(RTCEncodedVideoFrame 或 RTCEncodedAudioFrame)可能會入隊到 RTCRtpScriptTransformer.readable。WebRTC 已編碼轉換可以從 readable 讀取幀,根據需要進行修改,然後透過將其傳送到此 writable 來將其傳送回 WebRTC 管道。執行此操作的常用方法是透過 TransformStream 管道傳輸幀。
值
一個 WritableStream。
示例
以下示例顯示瞭如何將 RTCRtpScriptTransformer.readable 透過 TransformStream 管道傳輸到 RTCRtpScriptTransformer.writable。
addEventListener("rtctransform", (event) => {
let transform;
// Select a transform based on passed options
if (event.transformer.options.name === "senderTransform")
transform = createSenderTransform(); // A TransformStream
else if (event.transformer.options.name === "receiverTransform")
transform = createReceiverTransform(); // A TransformStream
else return;
// Pipe frames from the readable to writeable through TransformStream
event.transformer.readable
.pipeThrough(transform)
.pipeTo(event.transformer.writable);
});
該程式碼實現了 rtctransform 事件的處理程式,該事件在構造對應的 RTCRtpScriptTransform 時以及在入隊新幀進行處理時,在全域性 worker 物件上觸發。event.transformer 是具有 writable 和 readable 屬性的 RTCRtpScriptTransformer。
使用 createSenderTransform() 或 createReceiverTransform()(未顯示實現)建立了一個不同的 TransformStream 來處理傳出和傳入的幀。事件處理程式根據從 RTCRtpScriptTransform 建構函式 傳遞的選項來選擇要使用的正確轉換流,並將其分配給 transform。
該程式碼在 readable 上呼叫 ReadableStream.pipeThrough() 將已編碼幀透過選定的 TransformStream 管道傳輸,然後呼叫 ReadableStream.pipeTo() 將其管道傳輸到 RTCRtpScriptTransformer.writable。
規範
| 規範 |
|---|
| WebRTC Encoded Transform # dom-rtcrtpscripttransformer-writable |
瀏覽器相容性
載入中…