Skip to content

Instantly share code, notes, and snippets.

@TLabAltoh
Last active October 21, 2024 15:11
Show Gist options
  • Save TLabAltoh/28068557b7cc44dc4dbc6300f2a8231f to your computer and use it in GitHub Desktop.
Save TLabAltoh/28068557b7cc44dc4dbc6300f2a8231f to your computer and use it in GitHub Desktop.

MediaStreamTrack control bandwidth

Enviroment

site: webrtc-sample (bandwidth)
browser: Chrome, Firefox

stop encoding

// https://stackoverflow.com/a/77364499/22575350
const pause=()=>{
    pc1.getSenders().forEach(sender=>{
        console.log(sender.track.kind+' pause');
        const parameters=sender.getParameters();
        parameters.encodings[0].active=false;
        sender.setParameters(parameters);
    });
};

const resume=()=>{
    pc1.getSenders().forEach(sender=>{
        console.log(sender.track.kind+' resume');
        const parameters=sender.getParameters();
        parameters.encodings[0].active=true;
        sender.setParameters(parameters);
    });
};

(: Bitrate, : Packets sent per second)

Warning

Firefox doesn't stop audio encoding and send packets even when the audio track's encoding parameter is disabled. This is only seen in the audio track. Video track works fine with this approach.

replace track with empty frame

const pause=()=>{
    pc1.getSenders().forEach(sender=>{
        console.log(sender.track.kind+' pause');
        sender.track.enabled = false;
    });
};

const resume=()=>{
    pc1.getSenders().forEach(sender=>{
        console.log(sender.track.kind+' resume');
        sender.track.enabled = true;
    });
};

change min / max bitrate

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment