demo · v130
Encoded frame metadata editor
The demo sets up a real local PeerConnection with an Encoded Transform on the sender. Mutate the per-frame metadata using setMetadata() and watch the before/after on the receiving side.
incoming raw metadata
(waiting)
after setMetadata()
(waiting)
the code
const sender = pc.getSenders()[0];
const { readable, writable } = new RTCRtpScriptTransform(worker, {});
sender.transform = new RTCRtpScriptTransform(worker, {});
// Inside the worker:
onrtctransform = (ev) => {
const t = ev.transformer;
t.readable.pipeThrough(new TransformStream({
transform(frame, ctl) {
const meta = frame.getMetadata();
// v130: setMetadata exists and mutates in place.
frame.setMetadata({
...meta,
payloadType: 96,
synchronizationSource: 1234567,
});
ctl.enqueue(frame);
},
})).pipeTo(t.writable);
};
see also
- WebRTC encoded transform: modify metadata — feature index
- ChromeStatus entry