On Github XescuGC / webrtc-slides
by Francesc Gil
Web Real-Time Communication (WebRTC) es una colección de estandares, protocolos y APIs de JavaScript, la combinación de las cuales habilita la posibilidad de compartir Audio, Video y Datos entre navegadores (peers).
Toda esta complexidad esta abstraida en las siguientes APIs del navegador (Firefox o Chrome):
El equipo encargado de mantener y desarrollar WebRTC es:
El Audio i Video recogido por el getUserMedia se tiene que 'tratar' para poder ser enviado, WebRTC se encara de codificar al enviar y al recibir el Audio o Video.
<video autoplay></video> %script var constraints = { audio: true, video: { mandatory: { width: {min: 320}, height: {min: 180} }, optional: [ { width: {max: 1280}}, { frameRate: 30 }, { facingMode: "user"} ] } } navigator.getUserMedia(constraints, gotStream, logError); function gotStream(stream) { var video = document.querySelector('video'); video.src = window.URL.createObjectURL(stream); }
Todos los Protocolos que hemos explicado antes los incorpora WebRTC con la API de RTCPeerConnection que es la encargada de mantener el ciclo de vida de cada 'peer'
Esta parte no la define WebRTC, es de libre elección a la aplicación. La funcionalidad es la de saber e informar que las dos 'Peers' estan preparadas para recibir/enviar audio y video. Seria el hecho de 'Llamar', Signaling and Session Negotiation.
Las posibilidades que recomiendan son:
Session Description Protocol describe los parametros de la conexion Peer-to-Peer (tipo de media, ancho de banda ...) un ejemplo seria:
(... snip ...) m=audio 1 RTP/SAVPF 111 ... a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level a=candidate:1862263974 1 udp 2113937151 192.168.1.73 60834 typ host ... a=mid:audio a=rtpmap:111 opus/48000/2 a=fmtp:111 minptime=10 (... snip ...)
WebRTC no trata directamente con SDP, JSEP (JavaScript Session Establishment Protocol) lo abstrae con RTCPeerConnection.
Responsable de:
Una vez establecidas las SD locales o remotas el ICE agent empieza a:
Una vez se tiene la SD local y remota el ICE agent empieza a intentar conectarse al otro Peer (tiene una lista de Candidatos) enviando mensages al otro Peer esperando un ACK de respuesta OK!.