RTCRtpScriptTransformer: readable-Eigenschaft
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Die readable
-Eigenschaft der RTCRtpScriptTransformer
-Schnittstelle gibt eine Instanz von ReadableStream
zurück, die eine Quelle für kodierte Medienrahmen darstellt.
Wenn der entsprechende RTCRtpScriptTransform
in die WebRTC-Sender- und -Empfänger-Pipelines eingefügt wird, kann dieser Stream mit ausgehenden oder eingehenden kodierten Medienrahmen (RTCEncodedVideoFrame
oder RTCEncodedAudioFrame
) belegt werden.
Eine WebRTC-enkodierte Transformation kann die Rahmen lesen, nach Bedarf modifizieren und sie dann durch Schreiben in RTCRtpScriptTransformer.writable
wieder in die WebRTC-Pipeline zurücksenden.
Eine gängige Methode, um diese Operation auszuführen, besteht darin, die Rahmen durch einen TransformStream
zu leiten.
Wert
Ein ReadableStream
.
Beispiele
Das folgende Beispiel zeigt, wie readable
durch einen TransformStream
zu RTCRtpScriptTransformer.writable
geleitet wird.
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);
});
Der Code implementiert einen Handler für das rtctransform
-Ereignis, das beim globalen Worker-Objekt beim Erstellen des entsprechenden RTCRtpScriptTransform
ausgelöst wird und wenn neue Rahmen zur Verarbeitung hinzugefügt werden.
event.transformer
ist der RTCRtpScriptTransformer
, der die Eigenschaften readable
und writable
hat.
Ein unterschiedlicher TransformStream
wird erstellt, um ausgehende und eingehende Rahmen zu verarbeiten, unter Verwendung von createSenderTransform()
oder createReceiverTransform()
, jeweils (Implementierungen nicht gezeigt).
Der Ereignishandler wählt den richtigen Transformationsstrom basierend auf den durch den RTCRtpScriptTransform
-Konstruktor übermittelten Optionen aus und weist ihn transform
zu.
Der Code ruft ReadableStream.pipeThrough()
auf readable
auf, um kodierte Rahmen durch den ausgewählten TransformStream
zu leiten, und dann ReadableStream.pipeTo()
, um sie zu RTCRtpScriptTransformer.writable
zu leiten.
Spezifikationen
Specification |
---|
WebRTC Encoded Transform # dom-rtcrtpscripttransformer-readable |