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.
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.
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