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

BCD tables only load in the browser

Siehe auch