demo · v139

Encoded Frame Audio Level Meter

Each encoded audio frame carries an audioLevel field (0–127 dBov). Pipelines doing per-frame transforms can read it without decoding. Click "Start" to mic-test against a real getUserMedia stream — the meter and trace render the level frame by frame.

Click "Start" to request mic permission.
level
dBov

the code

const sender = pc.getSenders().find(s => s.track.kind === "audio");
const encodedStream = sender.createEncodedStreams();

const transformer = new TransformStream({
  transform(frame, ctl) {
    const md = frame.getMetadata();
    // v139: md.audioLevel is 0..127 dBov (lower = louder)
    levelMeter.update(md.audioLevel);
    ctl.enqueue(frame);
  }
});

encodedStream.readable.pipeThrough(transformer).pipeTo(encodedStream.writable);

see also