This is a quite simple computation or validation of the network bandwidth, but can be tricky if you don't take into account the "quality" parameter used in Speex.
Speex is designed to change bitrate depending on the desired quality, and there are 10 different levels of quality per type (narrowband (8 KHz), wideband (16 KHz), ultra-wideband (32 KHz)).
All you have to do is take the expected encoding bitrate for that quality (e.g. 28 Kbps for wideband at quality 8/10), compute the payload per frame, optionally sum the payload when you have more than 1 frame per packet, add the overhead of IP, UDP and RTP, then recompute the overall bitrate.
Each Speex frame has 20 msec duration.
The payload for Speex wideband at quality 8 (28 kbps) is:
P = (28*10^3 kbps * 20*10^-3 msec/frame) = 70 B/frame
Consider 1 frame per packet and add the overhead from IP, UDP and RTP:
Ptot = 70 B + 40 B = 110 B/packet
Compute the final network bandwidth:
BW = (110 B)*8 / (20 * 10^-3) = 44 Kbps
I needed an efficient way to programmatically extract RTP streams from a network capture. In addition I wanted to: save each stream into a s...
Verto is a newly designed signalling protocol for WebRTC clients interacting with FreeSWITCH . It has an intuitive, JSON-based RPC whic...
On a previous post I shared my experiments with node.js as a WebSocket server. This is quite useful for people working on WebRTC prototyp...
SILK is a codec defined by Skype, but can be found in many VoIP clients, like CSipSimple . It comes in different flavours (sample rates ...