SlideShare a Scribd company logo
1 of 33
Introducción a WebRTC
Javier Cerviño Arriba
   jcervino@dit.upm.es
   @jcague


Grupo de Internet de Nueva Generación
Departamento de Ingeniería de Sistemas Telemáticos
Universidad Politécnica de Madrid
Índice
1.   WebRTC para Jefes
           1. Definición
           2. Ejemplo
           3. Demostración
2.   WebRTC para Profesores
           1. Cómo funciona?
           2. Grupos de estandarización
           3. Protocolos
3.   WebRTC para Desarrolladores
           1. Implementaciones
           2. API JavaScript
           3. Ejemplos
                                                            Javier Cerviño
                                            jcervino@dit.upm.es – DIT UPM
WebRTC para Jefes
Javier Cerviño
jcervino@dit.upm.es – DIT UPM
Videoconferencia en el navegador




                                      Javier Cerviño
                      jcervino@dit.upm.es – DIT UPM
Videoconferencia en el navegador




                                      Javier Cerviño
                      jcervino@dit.upm.es – DIT UPM
~30000 usuarios en Steam
    http://store.steampowered.com/stats/


~15 MB por usuario por hora



                                                       Javier Cerviño
                                       jcervino@dit.upm.es – DIT UPM
Coste diario
1400
1200
1000
800
600
400
200
  0
       Google App Engine   WebRTC

                                              Javier Cerviño
                              jcervino@dit.upm.es – DIT UPM
WebRTC para Profesores
Grupos de estandarización
      WEBRTC:
        API para crear aplicaciones de tiempo real
        http://dev.w3.org/2011/webrtc/editor/webrtc.html




      RTCWEB:
        Protocolos que harán posible la comunicación
       entre los participantes.
        http://trac.tools.ietf.org/wg/rtcweb/

                                               Javier Cerviño
                               jcervino@dit.upm.es – DIT UPM
PROTOCOLOS PROPIETARIOS
            HTTP/WEBSOCKETS

JS/CSS/HTML                     JS/CSS/HTML


              TRANSMISIÓN
 Navegador                         Navegador
               DE MEDIOS


                                            Javier Cerviño
                            jcervino@dit.upm.es – DIT UPM
Panorámica: detalle




                            Javier Cerviño
            jcervino@dit.upm.es – DIT UPM
Panorámica: detalle




                            Javier Cerviño
            jcervino@dit.upm.es – DIT UPM
Pila de Protocolos
Funciones de Soporte Local     • Recomendaciones


Presentación y configuración   • Control del navegador


  Gestión de la conexión       • Negociación de transporte y contenidos


    Formatos de Datos          • Códecs: H.264, VP8, ..


   Contenedores de Datos       • RTP/RTCP con seguridad


    Transporte de datos        • UDP basado en ICE

                                                          Javier Cerviño
                                          jcervino@dit.upm.es – DIT UPM
WebRTC para Desarrolladores
Implementaciones: Ericsson




                                  Javier Cerviño
                  jcervino@dit.upm.es – DIT UPM
Implementaciones

Proyecto de código libre escrito en C++


Respaldado por Google, Mozilla y Opera entre otros.


Implementación de todo WebRTC+rtcweb (W3C+IETF)


                                                          Javier Cerviño
                                          jcervino@dit.upm.es – DIT UPM
Desarrollo
Primera Fase
• Librería en C++ implementando rtcweb


      Segunda Fase
      • Inclusión de la librería en navegadores
        • Implica implementación del API JavaScript


             Actualmente:
             • Primera versión disponible: iteraciones y pruebas

                                                                         Javier Cerviño
                                                         jcervino@dit.upm.es – DIT UPM
Arquitectura




                           Javier Cerviño
           jcervino@dit.upm.es – DIT UPM
WebRTC W3C: JavaScript API
Obtener flujos multimedia locales
Guardar localmente
Conectarse a pares remotos
Enviar flujos
Representar Flujos
Mandar datos arbitrarios
                                                    Javier Cerviño
                                    jcervino@dit.upm.es – DIT UPM
JavaScript API
                         Estado Actual
Tres Grandes APIs
   getUserMedia
      Obtención de flujos locales


   StreamAPI
      Manejo de flujos multimedia


   PeerConnection
      Conexiones entre pares

                                                     Javier Cerviño
                                     jcervino@dit.upm.es – DIT UPM
1.    getUserMedia()                               5.     getUserMedia()
2.    pc = new PeerConnection()                    6.     pc = new PeerConnection()
3.    onLocalSignallingMessage(sdpOffer)           7.     pc.processSignalingMessage(sdpOffer)
                                                   8.     onLocalSignallingMessage(sdpAnswer)

10.   pc.processSignalingMessage(sdpAnswer)        13.    pc.processSignalingMessage(sdpOk)
11.   onLocalSignallingMessage(sdpOk)




                                              14

         Alice                                                                       Bob
                                                                    Javier Cerviño
                                                    jcervino@dit.upm.es – DIT UPM
Acceso a webcam y micrófono
navigator.webkitGetUserMedia("video,audio", gotStream, gotStreamFailed);


function gotStream(stream) {
    var url = webkitURL.createObjectURL(stream);
    document.getElementById("localView").src = url;
    trace("User has granted access to local media.”);
    localStream = stream;
}


function gotStreamFailed(error) {
    alert("Failed to get access to local media.”);
}

                                                                      Javier Cerviño
                                                      jcervino@dit.upm.es – DIT UPM
Inicialización PeerConnection I
function createPeerConnection() {
    pc = new webkitPeerConnection("STUN stun.l.google.com:19302", onLocalSignalingMessage);
    pc.onaddstream = onAddStream;
    pc.onremovestream = onRemoveStream;
    pc.addStream(localStream);
}


function onAddStream(e) {
    var url = webkitURL.createObjectURL(e.stream);
    document.getElementById("remoteView").src = url;
}
function onRemoveStream(e) {
    document.getElementById("remoteView").src = "”;
}

                                                                         Javier Cerviño
                                                         jcervino@dit.upm.es – DIT UPM
Inicialización PeerConnection II
function onLocalSignalingMessage(sdp) {

    send(sdp);

}



function receiveSignallingMessage(sdp) {

    pc.processSignalingMessage(sdp);

}


                                                           Javier Cerviño
                                           jcervino@dit.upm.es – DIT UPM
El que llama


function doCall() {

    createPeerConnection();

}




                                                    Javier Cerviño
                                    jcervino@dit.upm.es – DIT UPM
El que contesta

function onCall(sdp) {

    createPeerConnection();

    pc.processSignalingMessage(sdp);

}




                                                       Javier Cerviño
                                       jcervino@dit.upm.es – DIT UPM
Conexión WebRTC
   El que llama                               El que contesta
createPeerConnection();
send(sdpOffer);                      OFFER
                                              createPeerConnection();
                                              pc.processSignalingMessage(sdpOffer);

                                     ANSWER
                                              send(sdpAnswer);


pc.processSignalingMessage(sdpAnswer);
send(sdpOk);                             OK
                                              pc.processSignalingMessage(sdpOk);


onAddStream();                                onAddStream();

                                                                         Javier Cerviño
                                                         jcervino@dit.upm.es – DIT UPM
Finalización


function closeCall() {
    document.getElementById("remoteView").src = “”;
    pc.close();
}




                                                                Javier Cerviño
                                                jcervino@dit.upm.es – DIT UPM
DEMOS

                        Javier Cerviño
        jcervino@dit.upm.es – DIT UPM
WebRTC DEMO




                         Javier Cerviño
         jcervino@dit.upm.es – DIT UPM
Javier Cerviño
jcervino@dit.upm.es – DIT UPM
GRACIAS

                          Javier Cerviño
          jcervino@dit.upm.es – DIT UPM

More Related Content

Viewers also liked

Antequera, monumental
Antequera, monumentalAntequera, monumental
Antequera, monumentalTere
 
Marco legal del ecodiseño aplicado a productos que usan energía y productos r...
Marco legal del ecodiseño aplicado a productos que usan energía y productos r...Marco legal del ecodiseño aplicado a productos que usan energía y productos r...
Marco legal del ecodiseño aplicado a productos que usan energía y productos r...ServiDocu
 
Usuarios, experiencias, y más allá
Usuarios, experiencias, y más alláUsuarios, experiencias, y más allá
Usuarios, experiencias, y más alláEric Reiss
 
PERIDICO NOTIDIFUSION NACIONAL - ENERO 2010
PERIDICO NOTIDIFUSION NACIONAL - ENERO 2010PERIDICO NOTIDIFUSION NACIONAL - ENERO 2010
PERIDICO NOTIDIFUSION NACIONAL - ENERO 2010CECYTEM
 
Generedineroabajocosto universidadsanpedro nov2013
Generedineroabajocosto universidadsanpedro nov2013Generedineroabajocosto universidadsanpedro nov2013
Generedineroabajocosto universidadsanpedro nov2013Sr. Zegarra Villalobos
 
Unión Europea -Miguel E. Felipe, Jose Antonio G, Rafael
Unión Europea -Miguel E. Felipe, Jose Antonio G, RafaelUnión Europea -Miguel E. Felipe, Jose Antonio G, Rafael
Unión Europea -Miguel E. Felipe, Jose Antonio G, RafaelManuel Segura
 
La Cultura del Software Libre en la Psicologia Organizada - Marcelo Urra
La Cultura del Software Libre en la Psicologia Organizada - Marcelo UrraLa Cultura del Software Libre en la Psicologia Organizada - Marcelo Urra
La Cultura del Software Libre en la Psicologia Organizada - Marcelo UrraMarcelo Urra
 
Cambio Climatico y Agricultura
Cambio Climatico y AgriculturaCambio Climatico y Agricultura
Cambio Climatico y AgriculturaRoger0112
 
El mapa mental y la realidad
El mapa mental y la realidadEl mapa mental y la realidad
El mapa mental y la realidadcrownred
 
El Principio del Vacio
El Principio del VacioEl Principio del Vacio
El Principio del Vaciohjpsiot
 
Atractivos turisticos
Atractivos turisticosAtractivos turisticos
Atractivos turisticosjaldanam
 
PROCESOS DE DISPOSITIVOS DE INFORMACION:
PROCESOS DE DISPOSITIVOS DE INFORMACION:PROCESOS DE DISPOSITIVOS DE INFORMACION:
PROCESOS DE DISPOSITIVOS DE INFORMACION:xlsjlr
 
Curriculo alternativo integrado para el desarrollo de la identidad cultural c...
Curriculo alternativo integrado para el desarrollo de la identidad cultural c...Curriculo alternativo integrado para el desarrollo de la identidad cultural c...
Curriculo alternativo integrado para el desarrollo de la identidad cultural c...andavipe
 
Experiencia de ARC Distribución Ibérica con la factura electrónica
Experiencia de ARC Distribución Ibérica con la factura electrónicaExperiencia de ARC Distribución Ibérica con la factura electrónica
Experiencia de ARC Distribución Ibérica con la factura electrónicaServiDocu
 

Viewers also liked (20)

Antequera, monumental
Antequera, monumentalAntequera, monumental
Antequera, monumental
 
Aprendiendo de las Manos
Aprendiendo de las ManosAprendiendo de las Manos
Aprendiendo de las Manos
 
Marco legal del ecodiseño aplicado a productos que usan energía y productos r...
Marco legal del ecodiseño aplicado a productos que usan energía y productos r...Marco legal del ecodiseño aplicado a productos que usan energía y productos r...
Marco legal del ecodiseño aplicado a productos que usan energía y productos r...
 
Usuarios, experiencias, y más allá
Usuarios, experiencias, y más alláUsuarios, experiencias, y más allá
Usuarios, experiencias, y más allá
 
PERIDICO NOTIDIFUSION NACIONAL - ENERO 2010
PERIDICO NOTIDIFUSION NACIONAL - ENERO 2010PERIDICO NOTIDIFUSION NACIONAL - ENERO 2010
PERIDICO NOTIDIFUSION NACIONAL - ENERO 2010
 
Areacontenidos
AreacontenidosAreacontenidos
Areacontenidos
 
Generedineroabajocosto universidadsanpedro nov2013
Generedineroabajocosto universidadsanpedro nov2013Generedineroabajocosto universidadsanpedro nov2013
Generedineroabajocosto universidadsanpedro nov2013
 
Crear mi slideshare de powerpoint
Crear mi slideshare de powerpointCrear mi slideshare de powerpoint
Crear mi slideshare de powerpoint
 
Unión Europea -Miguel E. Felipe, Jose Antonio G, Rafael
Unión Europea -Miguel E. Felipe, Jose Antonio G, RafaelUnión Europea -Miguel E. Felipe, Jose Antonio G, Rafael
Unión Europea -Miguel E. Felipe, Jose Antonio G, Rafael
 
La Cultura del Software Libre en la Psicologia Organizada - Marcelo Urra
La Cultura del Software Libre en la Psicologia Organizada - Marcelo UrraLa Cultura del Software Libre en la Psicologia Organizada - Marcelo Urra
La Cultura del Software Libre en la Psicologia Organizada - Marcelo Urra
 
Cambio Climatico y Agricultura
Cambio Climatico y AgriculturaCambio Climatico y Agricultura
Cambio Climatico y Agricultura
 
El mapa mental y la realidad
El mapa mental y la realidadEl mapa mental y la realidad
El mapa mental y la realidad
 
El Principio del Vacio
El Principio del VacioEl Principio del Vacio
El Principio del Vacio
 
Atractivos turisticos
Atractivos turisticosAtractivos turisticos
Atractivos turisticos
 
Sonata claro-de-luna-1865
Sonata claro-de-luna-1865Sonata claro-de-luna-1865
Sonata claro-de-luna-1865
 
PROCESOS DE DISPOSITIVOS DE INFORMACION:
PROCESOS DE DISPOSITIVOS DE INFORMACION:PROCESOS DE DISPOSITIVOS DE INFORMACION:
PROCESOS DE DISPOSITIVOS DE INFORMACION:
 
Curriculo alternativo integrado para el desarrollo de la identidad cultural c...
Curriculo alternativo integrado para el desarrollo de la identidad cultural c...Curriculo alternativo integrado para el desarrollo de la identidad cultural c...
Curriculo alternativo integrado para el desarrollo de la identidad cultural c...
 
Cadiz
CadizCadiz
Cadiz
 
Experiencia de ARC Distribución Ibérica con la factura electrónica
Experiencia de ARC Distribución Ibérica con la factura electrónicaExperiencia de ARC Distribución Ibérica con la factura electrónica
Experiencia de ARC Distribución Ibérica con la factura electrónica
 
Tio
TioTio
Tio
 

Similar to WebRTC

Paper dialnet desarrollo-e_implementaciondeunprototipoparaunaplata-6523321 (1)
Paper dialnet desarrollo-e_implementaciondeunprototipoparaunaplata-6523321 (1)Paper dialnet desarrollo-e_implementaciondeunprototipoparaunaplata-6523321 (1)
Paper dialnet desarrollo-e_implementaciondeunprototipoparaunaplata-6523321 (1)LuisEnriqueMerinoSul
 
Microservicios sobre MEAN Stack
Microservicios sobre MEAN StackMicroservicios sobre MEAN Stack
Microservicios sobre MEAN StackPedro J. Molina
 
Opensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN StackOpensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN StackPedro J. Molina
 
Aula Virtual utilizando utilizando Conference XP de Microsoft
Aula Virtual utilizando utilizando Conference XP de MicrosoftAula Virtual utilizando utilizando Conference XP de Microsoft
Aula Virtual utilizando utilizando Conference XP de MicrosoftJulián Santiago Bruno
 
Arquitectura basada a Eventos para principiantes con Apache Kafka
Arquitectura basada a Eventos para principiantes con Apache KafkaArquitectura basada a Eventos para principiantes con Apache Kafka
Arquitectura basada a Eventos para principiantes con Apache KafkaSoftware Guru
 
Pablo San Emeterio - How to protect your hot pics with WHF [RootedSatellite V...
Pablo San Emeterio - How to protect your hot pics with WHF [RootedSatellite V...Pablo San Emeterio - How to protect your hot pics with WHF [RootedSatellite V...
Pablo San Emeterio - How to protect your hot pics with WHF [RootedSatellite V...RootedCON
 
Tablón de anuncios por web y móvil
Tablón de anuncios por web y móvilTablón de anuncios por web y móvil
Tablón de anuncios por web y móvileduar2
 
Implementación de microservicios en Vocento
Implementación de microservicios en VocentoImplementación de microservicios en Vocento
Implementación de microservicios en VocentoHector Prats Ortega
 
WebRTC - Una nueva tecnología web al servicio de la educación. Caso en Virtua...
WebRTC - Una nueva tecnología web al servicio de la educación. Caso en Virtua...WebRTC - Una nueva tecnología web al servicio de la educación. Caso en Virtua...
WebRTC - Una nueva tecnología web al servicio de la educación. Caso en Virtua...Jorge Rubiano
 
Breve introducción práctica al DevOps - (es) 2021_03_18
Breve introducción práctica al DevOps -  (es) 2021_03_18Breve introducción práctica al DevOps -  (es) 2021_03_18
Breve introducción práctica al DevOps - (es) 2021_03_18Young Suk Ahn Park
 
Webinar WebRTC y HTML5 (spanish) - Quobis
Webinar WebRTC y HTML5 (spanish) - QuobisWebinar WebRTC y HTML5 (spanish) - Quobis
Webinar WebRTC y HTML5 (spanish) - QuobisQuobis
 
Cesnavarra 2009-boletín 2
Cesnavarra 2009-boletín 2Cesnavarra 2009-boletín 2
Cesnavarra 2009-boletín 2Cein
 

Similar to WebRTC (20)

SignalR y dispositivos móviles
SignalR y dispositivos móvilesSignalR y dispositivos móviles
SignalR y dispositivos móviles
 
Paper dialnet desarrollo-e_implementaciondeunprototipoparaunaplata-6523321 (1)
Paper dialnet desarrollo-e_implementaciondeunprototipoparaunaplata-6523321 (1)Paper dialnet desarrollo-e_implementaciondeunprototipoparaunaplata-6523321 (1)
Paper dialnet desarrollo-e_implementaciondeunprototipoparaunaplata-6523321 (1)
 
Real time
Real timeReal time
Real time
 
Microservicios sobre MEAN Stack
Microservicios sobre MEAN StackMicroservicios sobre MEAN Stack
Microservicios sobre MEAN Stack
 
Opensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN StackOpensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN Stack
 
Aula Virtual utilizando utilizando Conference XP de Microsoft
Aula Virtual utilizando utilizando Conference XP de MicrosoftAula Virtual utilizando utilizando Conference XP de Microsoft
Aula Virtual utilizando utilizando Conference XP de Microsoft
 
Arquitectura basada a Eventos para principiantes con Apache Kafka
Arquitectura basada a Eventos para principiantes con Apache KafkaArquitectura basada a Eventos para principiantes con Apache Kafka
Arquitectura basada a Eventos para principiantes con Apache Kafka
 
Arquitectura
Arquitectura Arquitectura
Arquitectura
 
(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0
(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0
(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0
 
Pablo San Emeterio - How to protect your hot pics with WHF [RootedSatellite V...
Pablo San Emeterio - How to protect your hot pics with WHF [RootedSatellite V...Pablo San Emeterio - How to protect your hot pics with WHF [RootedSatellite V...
Pablo San Emeterio - How to protect your hot pics with WHF [RootedSatellite V...
 
Pablo sanemeteriovalencia
Pablo sanemeteriovalenciaPablo sanemeteriovalencia
Pablo sanemeteriovalencia
 
Tablón de anuncios por web y móvil
Tablón de anuncios por web y móvilTablón de anuncios por web y móvil
Tablón de anuncios por web y móvil
 
Implementación de microservicios en Vocento
Implementación de microservicios en VocentoImplementación de microservicios en Vocento
Implementación de microservicios en Vocento
 
Real-time web
Real-time webReal-time web
Real-time web
 
WebRTC - Una nueva tecnología web al servicio de la educación. Caso en Virtua...
WebRTC - Una nueva tecnología web al servicio de la educación. Caso en Virtua...WebRTC - Una nueva tecnología web al servicio de la educación. Caso en Virtua...
WebRTC - Una nueva tecnología web al servicio de la educación. Caso en Virtua...
 
Breve introducción práctica al DevOps - (es) 2021_03_18
Breve introducción práctica al DevOps -  (es) 2021_03_18Breve introducción práctica al DevOps -  (es) 2021_03_18
Breve introducción práctica al DevOps - (es) 2021_03_18
 
Int. Serv - Protocolo RSVP
Int. Serv - Protocolo RSVPInt. Serv - Protocolo RSVP
Int. Serv - Protocolo RSVP
 
Webinar WebRTC y HTML5 (spanish) - Quobis
Webinar WebRTC y HTML5 (spanish) - QuobisWebinar WebRTC y HTML5 (spanish) - Quobis
Webinar WebRTC y HTML5 (spanish) - Quobis
 
RPC
RPCRPC
RPC
 
Cesnavarra 2009-boletín 2
Cesnavarra 2009-boletín 2Cesnavarra 2009-boletín 2
Cesnavarra 2009-boletín 2
 

WebRTC

  • 1. Introducción a WebRTC Javier Cerviño Arriba jcervino@dit.upm.es @jcague Grupo de Internet de Nueva Generación Departamento de Ingeniería de Sistemas Telemáticos Universidad Politécnica de Madrid
  • 2. Índice 1. WebRTC para Jefes 1. Definición 2. Ejemplo 3. Demostración 2. WebRTC para Profesores 1. Cómo funciona? 2. Grupos de estandarización 3. Protocolos 3. WebRTC para Desarrolladores 1. Implementaciones 2. API JavaScript 3. Ejemplos Javier Cerviño jcervino@dit.upm.es – DIT UPM
  • 5. Videoconferencia en el navegador Javier Cerviño jcervino@dit.upm.es – DIT UPM
  • 6. Videoconferencia en el navegador Javier Cerviño jcervino@dit.upm.es – DIT UPM
  • 7. ~30000 usuarios en Steam http://store.steampowered.com/stats/ ~15 MB por usuario por hora Javier Cerviño jcervino@dit.upm.es – DIT UPM
  • 8. Coste diario 1400 1200 1000 800 600 400 200 0 Google App Engine WebRTC Javier Cerviño jcervino@dit.upm.es – DIT UPM
  • 10. Grupos de estandarización WEBRTC: API para crear aplicaciones de tiempo real http://dev.w3.org/2011/webrtc/editor/webrtc.html RTCWEB: Protocolos que harán posible la comunicación entre los participantes. http://trac.tools.ietf.org/wg/rtcweb/ Javier Cerviño jcervino@dit.upm.es – DIT UPM
  • 11. PROTOCOLOS PROPIETARIOS HTTP/WEBSOCKETS JS/CSS/HTML JS/CSS/HTML TRANSMISIÓN Navegador Navegador DE MEDIOS Javier Cerviño jcervino@dit.upm.es – DIT UPM
  • 12. Panorámica: detalle Javier Cerviño jcervino@dit.upm.es – DIT UPM
  • 13. Panorámica: detalle Javier Cerviño jcervino@dit.upm.es – DIT UPM
  • 14. Pila de Protocolos Funciones de Soporte Local • Recomendaciones Presentación y configuración • Control del navegador Gestión de la conexión • Negociación de transporte y contenidos Formatos de Datos • Códecs: H.264, VP8, .. Contenedores de Datos • RTP/RTCP con seguridad Transporte de datos • UDP basado en ICE Javier Cerviño jcervino@dit.upm.es – DIT UPM
  • 16. Implementaciones: Ericsson Javier Cerviño jcervino@dit.upm.es – DIT UPM
  • 17. Implementaciones Proyecto de código libre escrito en C++ Respaldado por Google, Mozilla y Opera entre otros. Implementación de todo WebRTC+rtcweb (W3C+IETF) Javier Cerviño jcervino@dit.upm.es – DIT UPM
  • 18. Desarrollo Primera Fase • Librería en C++ implementando rtcweb Segunda Fase • Inclusión de la librería en navegadores • Implica implementación del API JavaScript Actualmente: • Primera versión disponible: iteraciones y pruebas Javier Cerviño jcervino@dit.upm.es – DIT UPM
  • 19. Arquitectura Javier Cerviño jcervino@dit.upm.es – DIT UPM
  • 20. WebRTC W3C: JavaScript API Obtener flujos multimedia locales Guardar localmente Conectarse a pares remotos Enviar flujos Representar Flujos Mandar datos arbitrarios Javier Cerviño jcervino@dit.upm.es – DIT UPM
  • 21. JavaScript API Estado Actual Tres Grandes APIs getUserMedia Obtención de flujos locales StreamAPI Manejo de flujos multimedia PeerConnection Conexiones entre pares Javier Cerviño jcervino@dit.upm.es – DIT UPM
  • 22. 1. getUserMedia() 5. getUserMedia() 2. pc = new PeerConnection() 6. pc = new PeerConnection() 3. onLocalSignallingMessage(sdpOffer) 7. pc.processSignalingMessage(sdpOffer) 8. onLocalSignallingMessage(sdpAnswer) 10. pc.processSignalingMessage(sdpAnswer) 13. pc.processSignalingMessage(sdpOk) 11. onLocalSignallingMessage(sdpOk) 14 Alice Bob Javier Cerviño jcervino@dit.upm.es – DIT UPM
  • 23. Acceso a webcam y micrófono navigator.webkitGetUserMedia("video,audio", gotStream, gotStreamFailed); function gotStream(stream) { var url = webkitURL.createObjectURL(stream); document.getElementById("localView").src = url; trace("User has granted access to local media.”); localStream = stream; } function gotStreamFailed(error) { alert("Failed to get access to local media.”); } Javier Cerviño jcervino@dit.upm.es – DIT UPM
  • 24. Inicialización PeerConnection I function createPeerConnection() { pc = new webkitPeerConnection("STUN stun.l.google.com:19302", onLocalSignalingMessage); pc.onaddstream = onAddStream; pc.onremovestream = onRemoveStream; pc.addStream(localStream); } function onAddStream(e) { var url = webkitURL.createObjectURL(e.stream); document.getElementById("remoteView").src = url; } function onRemoveStream(e) { document.getElementById("remoteView").src = "”; } Javier Cerviño jcervino@dit.upm.es – DIT UPM
  • 25. Inicialización PeerConnection II function onLocalSignalingMessage(sdp) { send(sdp); } function receiveSignallingMessage(sdp) { pc.processSignalingMessage(sdp); } Javier Cerviño jcervino@dit.upm.es – DIT UPM
  • 26. El que llama function doCall() { createPeerConnection(); } Javier Cerviño jcervino@dit.upm.es – DIT UPM
  • 27. El que contesta function onCall(sdp) { createPeerConnection(); pc.processSignalingMessage(sdp); } Javier Cerviño jcervino@dit.upm.es – DIT UPM
  • 28. Conexión WebRTC El que llama El que contesta createPeerConnection(); send(sdpOffer); OFFER createPeerConnection(); pc.processSignalingMessage(sdpOffer); ANSWER send(sdpAnswer); pc.processSignalingMessage(sdpAnswer); send(sdpOk); OK pc.processSignalingMessage(sdpOk); onAddStream(); onAddStream(); Javier Cerviño jcervino@dit.upm.es – DIT UPM
  • 29. Finalización function closeCall() { document.getElementById("remoteView").src = “”; pc.close(); } Javier Cerviño jcervino@dit.upm.es – DIT UPM
  • 30. DEMOS Javier Cerviño jcervino@dit.upm.es – DIT UPM
  • 31. WebRTC DEMO Javier Cerviño jcervino@dit.upm.es – DIT UPM
  • 33. GRACIAS Javier Cerviño jcervino@dit.upm.es – DIT UPM