RTCRtpSender: transform-Eigenschaft
Baseline
2025
Newly available
Since October 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Die transform-Eigenschaft des RTCRtpSender-Objekts wird verwendet, um einen Transform-Stream (TransformStream), der in einem Worker-Thread läuft, in die Sender-Pipeline einzufügen.
Dies ermöglicht es, Stream-Transformationen auf kodierte Video- und Audioframes anzuwenden, nachdem sie von einem Codec ausgegeben wurden und bevor sie gesendet werden.
Der Transform, der hinzugefügt werden soll, wird mit einem RTCRtpScriptTransform und seinem zugehörigen Worker definiert.
Wenn der Transform synchron unmittelbar nach der Erstellung des RTCRtpSender gesetzt wird, erhält er den ersten vollständigen Frame, der vom Encoder des Senders erzeugt wird.
Wert
Ein RTCRtpScriptTransform oder null, wenn der Sender keinen zugehörigen Transform-Stream hat.
Beispiel
Dieses Beispiel zeigt, wie Sie Video von der Webcam eines Benutzers über WebRTC streamen können, indem ein WebRTC-kodierter Transform hinzugefügt wird, um die ausgehenden Streams zu modifizieren. Beachten Sie, dass dies Teil eines größeren Beispiels im Leitfaden Verwendung von WebRTC-kodierten Transformationen ist.
Der Code geht davon aus, dass eine RTCPeerConnection namens peerConnection bereits mit einem Remote-Peer verbunden ist.
Zunächst wird ein MediaStreamTrack erhalten, indem getUserMedia() verwendet wird, um einen Video-MediaStream von einem Mediengerät zu erhalten, und dann die Methode MediaStream.getTracks() aufgerufen wird, um den ersten MediaStreamTrack im Stream zu erhalten.
Der Track wird mit addTrack() zur Peer-Verbindung hinzugefügt. Dies gibt einen neuen RTCRtpSender zurück, der verwendet wird, um ihn zu senden.
const mediaStream = await navigator.mediaDevices.getUserMedia({ video: true });
const [track] = mediaStream.getTracks();
const videoSender = peerConnection.addTrack(track, mediaStream);
Der oben gezeigte Code richtet die Verbindung ein und beginnt, den Track zu senden.
Um einen Transform-Stream in die Pipeline einzufügen, müssen wir einen RTCRtpScriptTransform konstruieren und dem transform-Eigenschaft des Senders zuweisen.
Da der Transform unmittelbar nach der Erstellung des RTCRtpSender konstruiert wird, erhält er den ersten Frame, der vom Encoder des Senders erzeugt wird, bevor er gesendet wird.
const worker = new Worker("worker.js");
videoSender.transform = new RTCRtpScriptTransform(worker, {
name: "senderTransform",
});
Beachten Sie, dass Sie den Transform jederzeit hinzufügen können.
Indem Sie ihn jedoch unmittelbar nach dem Aufruf von addTrack() hinzufügen, erhält der Transform den ersten kodierten Frame, der gesendet wird.
Spezifikationen
| Specification |
|---|
| WebRTC Encoded Transform> # dom-rtcrtpsender-transform> |