DedicatedWorkerGlobalScope: rtctransform 事件
注意:此功能僅在 專用 Web Worker 中可用。
當一個編碼的影片或音訊幀已被排隊,供 WebRTC Encoded Transform 處理時,會在 worker 的 DedicatedWorkerGlobalScope 物件上觸發 rtctransform 事件。
該事件的 transformer 屬性會返回一個 RTCRtpScriptTransformer 物件,該物件公開了幀被排隊的 ReadableStream,以及一個可以寫入幀以將其注入 WebRTC 管道的 WritableStream。
此事件不可取消,也不會冒泡。
語法
在諸如 addEventListener() 之類的方法中使用事件名稱,或設定事件處理程式屬性。
addEventListener("rtctransform", (event) => { })
onrtctransform = (event) => { }
事件型別
一個 RTCTransformEvent。繼承自 Event。
事件屬性
此介面還繼承了其父級 Event 的屬性。
RTCTransformEvent.transformer只讀-
返回與事件關聯的
RTCRtpScriptTransformer。
示例
以下程式碼片段展示了 worker 中 rtctransform 事件的處理程式,它使用 addEventListener() 新增到全域性作用域。event.transformer 是一個 RTCRtpScriptTransformer 物件,它是 RTCRtpScriptTransform 在 worker 端的對應物。
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);
});
當編碼幀被加入 RTCRtpScriptTransformer 時,會觸發 rtctransform 事件,並且在 transformer 的相應 RTCRtpScriptTransformer 被構建時也會觸發一次。程式碼首先使用選項中傳遞的 name 值來確定要應用的轉換(這使得新增到傳入和傳出 WebRTC 管道的 RTCRtpScriptTransform 例項能夠共享一個 worker)。然後,編碼幀透過可讀流,經過選定的轉換 TransformStream,寫入可寫流。實際的轉換程式碼未顯示。
請注意,此程式碼是 使用 WebRTC 編碼轉換 中提供的更完整示例的一部分。
規範
| 規範 |
|---|
| WebRTC Encoded Transform # dom-dedicatedworkerglobalscope-onrtctransform |
瀏覽器相容性
載入中…