sdp-munger
v1.0.10
Published
Allows to prioritize the audio/video codecs of WebRTC SDPs without needing to deal with regular expressions
Downloads
2
Readme
sdp-munger
Allows to prioritize the audio/video codecs of WebRTC SDPs without needing to deal with regular expressions.
Requirements:
- A Web browser capable of interpreting ES6 JavaScript code.
Installation
$ npm install sdp-munger
Usage samples
Munge audio parameters:
The following code sample generates a new SDP with the audio codec named "Sample-Codec" moved to the end the priority list of the SDP audio codecs.
// Create a munger to perform the changes on SDP:
const munger = new Munger(oldSdp);
// Make sure the SDP supports audio:
if (munger.isAudioAvailable()) {
// Get all audio codecs:
const audioUpdater = munger.createUpdater(UpdaterType.AUDIO);
let audioCodecs = audioUpdater.getCodecsList();
// Audio codecs simply a string array. Make changes to
// this codec array: remove, change order of codecs, etc:
const audioIndex = audioCodecs.indexOf("Sample-Codec");
if (audioIndex > -1) {
audioCodecs.splice(audioIndex, 1);
audioCodecs.push("Sample-Codec");
}
// You must stage the codec changes in order to generate the
// updated SDP.
audioUpdater.stage(audioCodecs);
// Generate the SDP with updated codecs:
const newSdp = munger.getMungedSdp();
}
Create multiple updaters
It is possible to create multiple updaters. The following code, creates one video one audio updater:
if (munger.isAudioAvailable() && munger.isVideoAvailable()) {
// Create multiple updaters:
const videoUpdater = munger.createUpdater(UpdaterType.VIDEO);
const audioUpdater = munger.createUpdater(UpdaterType.AUDIO);
// ...
// Perform the necessary chenges to the list of SDP codecs.
// ...
// Stage the changes:
videoUpdater.stage(videoCodecs);
audioUpdater.stage(audioCodecs);
// Generate the SDP:
const newSdp = munger.getMungedSdp();
}
Clear changes made using specific updater
Sometimes it may be necessary to unstage the previously staged changes to SDP. The following code illustrates this usage:
updater.stage(codecs);
// ...
// Woops! Gotta' unstage the changes:
updater.clearStage();
// Phew! The changes staged by "updater" will not be
// visible in the generated SDP:
const newSdp = munger.getMungedSdp();
Disassociate updater from munger
const updater = munger.createUpdater(UpdaterType.VIDEO);
// The staged changes made by the removed "updater" will not
// be applied when generating SDP:
munger.removeUpdater(updater);