What is it all about?
Mediastreamer2 is a powerful and lightweight streaming engine specialized for voice/video telephony applications.
This open source library is responsible for all the receiving and sending of multimedia streams in Linphone, including voice/video capture, encoding and decoding, and rendering.
* Capture and playback from various platform dependent sound architectures (ALSA, PulseAudio, AudioUnit, AudioQueue, WaveApi, WASAPI, Android AudioTrack/AudioRecord, Android OpenSLES) * Send and receive RTP streams * Encode and decode the following audio formats: OPUS, speex, G711, GSM, iLBC, AMR, AMR-WB, G722, SILK, G729 * Encode and decode the following video formats: VP8 (WebM), H263, H263-1998, MPEG4, theora and H264 (thanks to a plugin based on OpenH264), with resolutions up to 1080P * RTP/AVPF support: RTCP control messages for video error recovery: PLI, SLI, RPSI, FIR. * Audio conferencing * Supports SRTP and zRTP (encryption of voice and video) * Supports any webcam, based on OS's camera API: quicktime, directshow, video4linux, android.camera * Acoustic echo cancellation using the speex echo canceler or webrtc AECm. * Read and write from/to a wav file * Optimized rendering of YUV pictures, using openGL, DrawDib, X11/Xv * Dual tones generation * Custom tone detector * Audio parametric equalizer * Volume control, automatic gain control * ICE for optimized NAT traversal (RFC5245) to allow peer to peer audio & video connections without media relay server * Adaptive bit rate control algorithm: for automatic adaption of encoder bit rate based on received RTCP feedback. * Can use plugins: to add new codecs, new sound input/output backend...