RTCRtpSender: transform-Eigenschaft

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Die transform-Eigenschaft des RTCRtpSender-Objekts wird verwendet, um einen Transformationsstrom (TransformStream), der in einem Worker-Thread läuft, in die Sender-Pipeline einzufügen. Dies ermöglicht die Anwendung von Transformationen auf codierte Video- und Audio-Frames, nachdem sie von einem Codec ausgegeben wurden und bevor sie gesendet werden.

Die hinzuzufügende Transformation wird mittels eines RTCRtpScriptTransform und dessen zugehörigem Worker definiert. Wenn die Transformation synchron unmittelbar nach der Erstellung des RTCRtpSender gesetzt wird, wird sie den ersten vollständigen Frame empfangen, der vom Encoder des Senders erzeugt wird.

Wert

Ein RTCRtpScriptTransform, oder null, wenn der Sender keinen zugeordneten Transformationsstrom hat.

Beispiel

Dieses Beispiel zeigt, wie Sie Video von einer Webcam eines Benutzers über WebRTC streamen, wobei ein WebRTC-codierter Transformationsstrom hinzugefügt wird, um die ausgehenden Streams zu ändern. Beachten Sie, dass dies Teil eines größeren Beispiels im Leitfaden-Thema Verwendung von WebRTC Encoded Transforms ist.

Der Code geht davon aus, dass es eine RTCPeerConnection namens peerConnection gibt, die bereits mit einem entfernten Peer verbunden ist. Es wird zunächst ein MediaStreamTrack abgerufen, indem getUserMedia() verwendet wird, um einen Video-MediaStream von einem Mediengerät zu erhalten, und dann die Methode MediaStream.getTracks(), um den ersten MediaStreamTrack im Stream zu erhalten.

Der Track wird mithilfe von addTrack() zur Peer-Verbindung hinzugefügt. Dies gibt einen neuen RTCRtpSender zurück, der zum Senden verwendet wird.

js
const mediaStream = await navigator.mediaDevices.getUserMedia({ video: true });
const [track] = mediaStream.getTracks();
const videoSender = peerConnection.addTrack(track, mediaStream);

Der obige Code richtet die Verbindung ein und beginnt, den Track zu senden. Um einen Transformationsstrom in die Pipeline einzufügen, müssen wir ein RTCRtpScriptTransform konstruieren und es der transform-Eigenschaft des Senders zuweisen. Da die Transformation unmittelbar nach der Erstellung des RTCRtpSender konstruiert wird, wird sie den ersten Frame des Senders erhalten, bevor er gesendet wird.

js
const worker = new Worker("worker.js");
videoSender.transform = new RTCRtpScriptTransform(worker, {
  name: "senderTransform",
});

Beachten Sie, dass Sie die Transformation jederzeit hinzufügen können. Indem Sie sie jedoch unmittelbar nach dem Aufruf von addTrack() hinzufügen, erhält die Transformation den ersten codierten Frame, der gesendet wird.

Spezifikationen

Specification
WebRTC Encoded Transform
# dom-rtcrtpsender-transform

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
transform

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
See implementation notes.

Siehe auch