WebRTC Core APIs and Interfaces , WebAudio API and context analyser, new audio API implementation Panner and MIDI . Plivo WebRTC SDK working with plivo's Voice Core Network .
ALTANAI BISHTR&D , Senior VOIP Engineer - WebRTC , SIP , IMS, VoLTE , SaaS , SBC , REST , Cloud at Plivo
2. I am Altanai
7+ yrs of Exp in VOIP
Current : Core Voice Engineer @ Plivo
Communication Pvt. Ltd.
Author Of WebRTC Integrator’s Guide
@altanai
telecom.altanai.com
4. The problem
Many plugins to make VOIP calls ( flash , java )
Proprietary Codecs
High Carrier Cost for phone call
No interoperability between existing VOIP players
Steep learning curve for developers
@altanai
8. D main 3 APIs
● MediaStream
● RTCPeerConnection
● RTCDataChannel
9. Media Stream
navigator.getUserMedia({ audio : true , video :true},
successCallback, errorCallback);
Outputs audio and / or Video Stream
Can have many tracks
Asks for permissions
Constraint can contain attributes like size , farmerate etc
10. RTC Peer Connection
Signal processing
Codec handling
Peer to peer communication
SRTP
Bandwidth management
pc = new RTCPeerConnection(null);
pc.onaddstream = gotRemoteStream;
pc.addStream(localStream);
pc.createOffer(gotOffer);
11. RTC Data Channel
Send any arbitrary data Peer to peer
DTLS
Free from Server side inspection or third party monitoring
Low latency
Independent of other networks as long as peer is connected
sendChannel = pc.createDataChannel("sendDataChannel",{reliable: false});
sendChannel.send(data);
12. + Other Features
TURN support
Echo cancellation
MediaStream API
mediaConstraints
Multiple Streams
Simulcast
Screen Sharing
Stream re-broadcasting
getStats API
ORTC API
H.264 video
VP8 video
Solid interoperability
srcObject in media element
Promise based getUserMedia
Promise based PeerConnection API
WebAudio Integration
MediaRecorder Integration
Canvas Integration
Test support
14. Audio API + more ...
var audioContext = new AudioContext();
// Create an AudioNode from the stream.
var mediaStreamSource = audioContext.createMediaStreamSource( stream );
// Connect it to the destination (or any other node for processing!)
mediaStreamSource.connect( audioContext.destination );
15. Audio API + more ...
var audioContext = new AudioContext();
// Create an AudioNode from the stream.
var mediaStreamSource = audioContext.createMediaStreamSource( stream );
// Connect it to the destination (or any other node for processing!)
mediaStreamSource.connect( audioContext.destination );
16. Audio API + more ...
var analyser = audioCtx.createAnalyser();
gainNode.connect(audioCtx.destination);
gainNode.gain.setValueAtTime(1,
audioCtx.currentTime);
17. Audio API + more ...
var splitter = ac.createChannelSplitter(2);
source.connect(splitter);
var panNode = audioCtx.createStereoPanner();
panNode.pan.setValueAtTime(panControl.value, audioCtx.currentTime);