SlideShare una empresa de Scribd logo
1 de 38
Micael Gallego
Cómo Incluir Videollamadas en Grupo en tu
Página Web con WebRTC y Kurento
Except where otherwise noted, this work is licensed under: http://creativecommons.org/licenses/by-nc-sa/3.0/
Leganés
12-13 Febrero 2015
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
2
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
3
¿Qué es
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
WebRTC: Comunicación en tiempo
real para la web
• Permite comunicar un browser directamente con otro,
peer-to-peer, sin que los datos tengan que pasar por el
servidor (siempre que sea posible)
• Usa el framework ICE para traspasar los NATs y permitir
una comunicación directa entre navegadores
• WebRTC es un working draft del W3C
4
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
5
¿Cómo funciona?
Servidor Web
Los browsers se conocen conectándose
a la misma aplicación web usando
Websockets o REST
1
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
6
¿Cómo funciona?
Servidor Web
Los browsers se conectan directamente
entre sí. Pueden usar UDP , TCP o SCTP2
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
WebRTC: Comunicación en tiempo
real para la web
• La conexión directa proporciona muy baja latencia
• Se puede transmitir audio, vídeo o datos
• La conexión entre los browsers puede ser por TCP,
UDP o SCTP
7
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
Fuentes de audio y vídeo en WebRTC
8
Webcam Micrófono Compartición de
Escritorio
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
Can I use WebRTC?
9
(en desarrollo)
También como librerías nativas para apps
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
10
Tipos de apps WebRTC
Videoconferencia / chat
Emisión de media
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
11
Tipos de apps WebRTC
Videoconferencia / chat
Emisión de media
La conexión directa entre browsers es
adecuada en todos los casos ?
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
12
Servidores de media WebRTC
Servidor de media
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
13
Servidores de media WebRTC
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
14
¿Qué suelen hacer los servidores de media?
Transcodificar
VP8 H.264
Reenviar
(Media Conference Unit)
Grabar
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
15
¿Qué pueden llegar a hacer?
Analizar
Transformar
Almacenar
Enriquecer
Aumentar
Adaptar
Sensores
Eventos
• Procesamiento del media
• Realidad aumentada
• Mezcla de fuentes de vídeo
• Análisis
• Detección de movimientos
• Visión artificial
• Etc…
Servidor de media
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
16
¿y es muy complicado?
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
17
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
18
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
19
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
20
Servidor de media WebRTC
Software libre (LGPL 2.1)
Fácil de usar: se controla con librerías Java o Node.js
Protocolo de red JSON-RPC sobre websockets
Ampliable a elementos de visión artificial personalizados
http://www.kurento.org
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
21
Enviar
Recibir
Analizar
Aumentar
Enriquecer
Transformar
Transcodificar
Grabar
Procesar
Replicar
Entrada
de media
Salida
de media
Kurento Media Server
Arquitectura
de Kurento
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
22
Entrada
de media
Salida
de mediaKurento Media Server
Cliente Java
Las aplicaciones definen cómo
procesar el media que llega a Kurento
Media Server
Cliente JS
Browser
Cliente JS
node.js
Arquitectura
de Kurento
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
23
Media Element
• Proporciona una funcionalidad básica
• Enviar/Recibir media por WebRTC
• Guardar/Leer media del disco duro
• Analizar el media
• Transformar media
• Existen diferentes media elements
disponibles
• Se pueden añadir nuevos con C/C++
Sink
SRC
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
24
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
25
Media Pipeline
• Cadena de elementos que implementan la funcionalidad
deseada
26
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
27
Media pipeline
Kurento Media Server
¿Cómo implementar un espejo mágico?
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
28
Transmisión de media
Browser
Kurento
Media Server
Servidor Web
Java
Kurento
Client
Código de aplicación Código de aplicación JSON-RPC
sobre
WebSockets
Protocolo de
señalización
(AJAX)
¿Cómo implementar un espejo mágico?
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
29
Browser Servidor Web Kurento
Datos de intercambio
de media (SDP offer)
Creación del pipeline
y negociación de la
transmisión de media
Resultado de la negociación
de media (SDP Answer)
Fase de
creación
del pipeline
Fase de
intercambio
de media
1
2 Intercambio de media entre el browser y Kurento
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
30
Cliente web: Petición AJAX
var webRtcPeer;
function start() {
webRtcPeer = kurentoUtils.WebRtcPeer.startSendRecv(videoInput, videoOutput,
onOffer, onError);
}
function onOffer(sdpOffer) {
$.ajax({
url : location.protocol + '/magicmirror',
type : 'POST',
dataType : 'text',
contentType : 'application/sdp',
data : sdpOffer,
success : function(sdpAnswer) {
webRtcPeer.processSdpAnswer(sdpAnswer);
}
});
}
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
31
Servidor web: Controlador Spring MVC
@RestController
public class MagicMirrorController {
@Autowired private KurentoClient kurento;
@RequestMapping(value = "/magicmirror", method = RequestMethod.POST)
private String processRequest(@RequestBody String sdpOffer) throws IOException {
// Creación del pipeline
// Negociación del media (SDP)
return responseSdp;
}
}
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
32
Servidor web: Creación del pipeline y negociación
// Creación del pipeline
MediaPipeline pipeline = kurento.createMediaPipeline();
WebRtcEndpoint webRtcEndpoint = new WebRtcEndpoint.Builder(pipeline).build();
FaceOverlayFilter faceOverlayFilter = new FaceOverlayFilter.Builder(pipeline).build();
faceOverlayFilter.setOverlayedImage("http://files.kurento.org/imgs/mario-wings.png",
-0.35F, -1.2F, 1.6F, 1.6F);
webRtcEndpoint.connect(faceOverlayFilter);
faceOverlayFilter.connect(webRtcEndpoint);
// Negociación del media (SDP)
String responseSdp = webRtcEndpoint.processOffer(sdpOffer);
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
33
¿Cómo implementar un espejo mágico?
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
34
¿Cómo implementar un espejo mágico?
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
35
WebRTC ofrece la oportunidad de ofrecer servicios avanzados de
comunicación multimedia a cualquier persona (vía web)
Kurento facilita la implementación de esos servicios ofreciendo una API
familiar a los desarrolladores de aplicaciones web
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
36
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
37
Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento
Leganés
12-13 Febrero 2015
38
Micael Gallego
@micael_gallego
Gracias!!
http://www.kurento.org
http://www.github.com/kurento
@kurentoms

Más contenido relacionado

La actualidad más candente

Hack2Progress - Consejos para afrontar un Hackathon
Hack2Progress - Consejos para afrontar un HackathonHack2Progress - Consejos para afrontar un Hackathon
Hack2Progress - Consejos para afrontar un HackathonCarlos Azaustre
 
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallosTesteando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallosMicael Gallego
 
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...Micael Gallego
 
Tema 3: Despliegue de aplicaciones web (Desarrollo Aplicaciones Web)
Tema 3: Despliegue de aplicaciones web (Desarrollo Aplicaciones Web)Tema 3: Despliegue de aplicaciones web (Desarrollo Aplicaciones Web)
Tema 3: Despliegue de aplicaciones web (Desarrollo Aplicaciones Web)Micael Gallego
 
Codemotion 2015 crash y youdebug
Codemotion 2015   crash y youdebugCodemotion 2015   crash y youdebug
Codemotion 2015 crash y youdebugjmiguel rodriguez
 
Aplicaciones Web SPA con WebAPI y TypeScript
Aplicaciones Web SPA con WebAPI y TypeScriptAplicaciones Web SPA con WebAPI y TypeScript
Aplicaciones Web SPA con WebAPI y TypeScriptLuis Guerrero
 
T3chFest 2016 - De Java a Groovy: ¡Hora de Aventuras!
T3chFest 2016 - De Java a Groovy: ¡Hora de Aventuras!T3chFest 2016 - De Java a Groovy: ¡Hora de Aventuras!
T3chFest 2016 - De Java a Groovy: ¡Hora de Aventuras!Iván López Martín
 
GWT y SmartGWT - Introducción
GWT y SmartGWT - IntroducciónGWT y SmartGWT - Introducción
GWT y SmartGWT - IntroducciónVLASLOV
 
Catalyst: Framework para el desarrollo de aplicaciones Web
Catalyst: Framework para el desarrollo de aplicaciones WebCatalyst: Framework para el desarrollo de aplicaciones Web
Catalyst: Framework para el desarrollo de aplicaciones WebEsteban Saavedra
 
[ES] Primeros pasos con Maven
[ES] Primeros pasos con Maven[ES] Primeros pasos con Maven
[ES] Primeros pasos con MavenEudris Cabrera
 
Gwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoGwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoManuel Carrasco Moñino
 

La actualidad más candente (20)

Hack2Progress - Consejos para afrontar un Hackathon
Hack2Progress - Consejos para afrontar un HackathonHack2Progress - Consejos para afrontar un Hackathon
Hack2Progress - Consejos para afrontar un Hackathon
 
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallosTesteando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
 
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
 
Implementando una Arquitectura de Microservicios
Implementando una Arquitectura de MicroserviciosImplementando una Arquitectura de Microservicios
Implementando una Arquitectura de Microservicios
 
Tema 3: Despliegue de aplicaciones web (Desarrollo Aplicaciones Web)
Tema 3: Despliegue de aplicaciones web (Desarrollo Aplicaciones Web)Tema 3: Despliegue de aplicaciones web (Desarrollo Aplicaciones Web)
Tema 3: Despliegue de aplicaciones web (Desarrollo Aplicaciones Web)
 
Codemotion 2015 crash y youdebug
Codemotion 2015   crash y youdebugCodemotion 2015   crash y youdebug
Codemotion 2015 crash y youdebug
 
Aplicaciones Web SPA con WebAPI y TypeScript
Aplicaciones Web SPA con WebAPI y TypeScriptAplicaciones Web SPA con WebAPI y TypeScript
Aplicaciones Web SPA con WebAPI y TypeScript
 
20170405 - Ecosistema Javascript
20170405 - Ecosistema Javascript20170405 - Ecosistema Javascript
20170405 - Ecosistema Javascript
 
T3chFest 2016 - De Java a Groovy: ¡Hora de Aventuras!
T3chFest 2016 - De Java a Groovy: ¡Hora de Aventuras!T3chFest 2016 - De Java a Groovy: ¡Hora de Aventuras!
T3chFest 2016 - De Java a Groovy: ¡Hora de Aventuras!
 
Grails en SG08
Grails en SG08Grails en SG08
Grails en SG08
 
Aprendiendo GWT
Aprendiendo GWTAprendiendo GWT
Aprendiendo GWT
 
GWT y SmartGWT - Introducción
GWT y SmartGWT - IntroducciónGWT y SmartGWT - Introducción
GWT y SmartGWT - Introducción
 
Catalyst: Framework para el desarrollo de aplicaciones Web
Catalyst: Framework para el desarrollo de aplicaciones WebCatalyst: Framework para el desarrollo de aplicaciones Web
Catalyst: Framework para el desarrollo de aplicaciones Web
 
Framework Catalyst
Framework CatalystFramework Catalyst
Framework Catalyst
 
DevOps: una breve introducción
DevOps: una breve introducciónDevOps: una breve introducción
DevOps: una breve introducción
 
Introducción a microservicios
Introducción a microserviciosIntroducción a microservicios
Introducción a microservicios
 
[ES] Primeros pasos con Maven
[ES] Primeros pasos con Maven[ES] Primeros pasos con Maven
[ES] Primeros pasos con Maven
 
Creación de Plataformas
Creación de PlataformasCreación de Plataformas
Creación de Plataformas
 
Gwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoGwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrasco
 
Comenzando con GWT
Comenzando con GWTComenzando con GWT
Comenzando con GWT
 

Destacado

El mundo real en el aula, con la ayuda del profesor
El mundo real en el aula, con la ayuda del profesorEl mundo real en el aula, con la ayuda del profesor
El mundo real en el aula, con la ayuda del profesorMicael Gallego
 
La priorización de historias de usuario (versión reducida)
La priorización de historias de usuario (versión reducida)La priorización de historias de usuario (versión reducida)
La priorización de historias de usuario (versión reducida)Micael Gallego
 
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casaTypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casaMicael Gallego
 
GRASP con PR para el SRFLP en el MAEB 2016
GRASP con PR para el SRFLP en el MAEB 2016GRASP con PR para el SRFLP en el MAEB 2016
GRASP con PR para el SRFLP en el MAEB 2016Micael Gallego
 
TypeScript - Angular 2 - ionic 2
TypeScript - Angular 2 - ionic 2TypeScript - Angular 2 - ionic 2
TypeScript - Angular 2 - ionic 2Micael Gallego
 
La priorización de historias de usuario (versión ampliada)
La priorización de historias de usuario (versión ampliada)La priorización de historias de usuario (versión ampliada)
La priorización de historias de usuario (versión ampliada)Micael Gallego
 
TypeScript para Javeros. Por fin un lenguaje 'de verdad' en el browser
TypeScript para Javeros. Por fin un lenguaje 'de verdad' en el browserTypeScript para Javeros. Por fin un lenguaje 'de verdad' en el browser
TypeScript para Javeros. Por fin un lenguaje 'de verdad' en el browserMicael Gallego
 
Tema 1: ¿Qué es la web? (Desarrollo Aplicaciones Web)
Tema 1: ¿Qué es la web? (Desarrollo Aplicaciones Web)Tema 1: ¿Qué es la web? (Desarrollo Aplicaciones Web)
Tema 1: ¿Qué es la web? (Desarrollo Aplicaciones Web)Micael Gallego
 
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?Micael Gallego
 
Angular 2 Campus Madrid Septiembre 2016
Angular 2 Campus Madrid Septiembre 2016Angular 2 Campus Madrid Septiembre 2016
Angular 2 Campus Madrid Septiembre 2016Micael Gallego
 
Using Docker to build and test in your laptop and Jenkins
Using Docker to build and test in your laptop and JenkinsUsing Docker to build and test in your laptop and Jenkins
Using Docker to build and test in your laptop and JenkinsMicael Gallego
 
Tema2: Tecnologías de desarrollo web (Desarrollo Aplicaciones Web)
Tema2: Tecnologías de desarrollo web (Desarrollo Aplicaciones Web)Tema2: Tecnologías de desarrollo web (Desarrollo Aplicaciones Web)
Tema2: Tecnologías de desarrollo web (Desarrollo Aplicaciones Web)Micael Gallego
 

Destacado (12)

El mundo real en el aula, con la ayuda del profesor
El mundo real en el aula, con la ayuda del profesorEl mundo real en el aula, con la ayuda del profesor
El mundo real en el aula, con la ayuda del profesor
 
La priorización de historias de usuario (versión reducida)
La priorización de historias de usuario (versión reducida)La priorización de historias de usuario (versión reducida)
La priorización de historias de usuario (versión reducida)
 
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casaTypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
 
GRASP con PR para el SRFLP en el MAEB 2016
GRASP con PR para el SRFLP en el MAEB 2016GRASP con PR para el SRFLP en el MAEB 2016
GRASP con PR para el SRFLP en el MAEB 2016
 
TypeScript - Angular 2 - ionic 2
TypeScript - Angular 2 - ionic 2TypeScript - Angular 2 - ionic 2
TypeScript - Angular 2 - ionic 2
 
La priorización de historias de usuario (versión ampliada)
La priorización de historias de usuario (versión ampliada)La priorización de historias de usuario (versión ampliada)
La priorización de historias de usuario (versión ampliada)
 
TypeScript para Javeros. Por fin un lenguaje 'de verdad' en el browser
TypeScript para Javeros. Por fin un lenguaje 'de verdad' en el browserTypeScript para Javeros. Por fin un lenguaje 'de verdad' en el browser
TypeScript para Javeros. Por fin un lenguaje 'de verdad' en el browser
 
Tema 1: ¿Qué es la web? (Desarrollo Aplicaciones Web)
Tema 1: ¿Qué es la web? (Desarrollo Aplicaciones Web)Tema 1: ¿Qué es la web? (Desarrollo Aplicaciones Web)
Tema 1: ¿Qué es la web? (Desarrollo Aplicaciones Web)
 
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
 
Angular 2 Campus Madrid Septiembre 2016
Angular 2 Campus Madrid Septiembre 2016Angular 2 Campus Madrid Septiembre 2016
Angular 2 Campus Madrid Septiembre 2016
 
Using Docker to build and test in your laptop and Jenkins
Using Docker to build and test in your laptop and JenkinsUsing Docker to build and test in your laptop and Jenkins
Using Docker to build and test in your laptop and Jenkins
 
Tema2: Tecnologías de desarrollo web (Desarrollo Aplicaciones Web)
Tema2: Tecnologías de desarrollo web (Desarrollo Aplicaciones Web)Tema2: Tecnologías de desarrollo web (Desarrollo Aplicaciones Web)
Tema2: Tecnologías de desarrollo web (Desarrollo Aplicaciones Web)
 

Similar a WebRTC y Kurento en el T3cgFest 2015

RoadShow-Azure-PartnersMicrosoft-Nov-2010-Caso de éxito de Softeng Portal Bul...
RoadShow-Azure-PartnersMicrosoft-Nov-2010-Caso de éxito de Softeng Portal Bul...RoadShow-Azure-PartnersMicrosoft-Nov-2010-Caso de éxito de Softeng Portal Bul...
RoadShow-Azure-PartnersMicrosoft-Nov-2010-Caso de éxito de Softeng Portal Bul...SOFTENG
 
[ES] Construyendo Servicios Web con JDeveloper
[ES] Construyendo Servicios Web con JDeveloper[ES] Construyendo Servicios Web con JDeveloper
[ES] Construyendo Servicios Web con JDeveloperEudris Cabrera
 
Web matrix session1
Web matrix session1Web matrix session1
Web matrix session1Gonzalo C.
 
Experiencia de uso de WebRTC en la educación
Experiencia de uso de WebRTC en la educaciónExperiencia de uso de WebRTC en la educación
Experiencia de uso de WebRTC en la educaciónJorge Rubiano
 
12-Unidad 3: Webservices-3.3. Inicio de Proyecto (Introducción, Contenidos In...
12-Unidad 3: Webservices-3.3. Inicio de Proyecto (Introducción, Contenidos In...12-Unidad 3: Webservices-3.3. Inicio de Proyecto (Introducción, Contenidos In...
12-Unidad 3: Webservices-3.3. Inicio de Proyecto (Introducción, Contenidos In...Luis Fernando Aguas Bucheli
 
Prog. web. equipo 5
Prog. web. equipo 5Prog. web. equipo 5
Prog. web. equipo 5Luis Mendez
 
Programación Reactiva, Javascript Isomorfo y Meteorjs !
Programación Reactiva, Javascript Isomorfo y Meteorjs !Programación Reactiva, Javascript Isomorfo y Meteorjs !
Programación Reactiva, Javascript Isomorfo y Meteorjs !ouuyeah
 
Webinar WebRTC y HTML5 (spanish) - Quobis
Webinar WebRTC y HTML5 (spanish) - QuobisWebinar WebRTC y HTML5 (spanish) - Quobis
Webinar WebRTC y HTML5 (spanish) - QuobisQuobis
 
[4K Conf 2012] SIP y WebRTC para Seres Humanos (tm)
[4K Conf 2012] SIP y WebRTC para Seres Humanos (tm)[4K Conf 2012] SIP y WebRTC para Seres Humanos (tm)
[4K Conf 2012] SIP y WebRTC para Seres Humanos (tm)Iñaki Baz Castillo
 
12-Unidad 3: Webservices-3.3 Inicio del Proyecto
12-Unidad 3: Webservices-3.3 Inicio del Proyecto12-Unidad 3: Webservices-3.3 Inicio del Proyecto
12-Unidad 3: Webservices-3.3 Inicio del ProyectoLuis Fernando Aguas Bucheli
 
TenerifeDev - Desarrollando WebApps en la nube
TenerifeDev - Desarrollando WebApps en la nubeTenerifeDev - Desarrollando WebApps en la nube
TenerifeDev - Desarrollando WebApps en la nubeintelequiass
 

Similar a WebRTC y Kurento en el T3cgFest 2015 (20)

RoadShow-Azure-PartnersMicrosoft-Nov-2010-Caso de éxito de Softeng Portal Bul...
RoadShow-Azure-PartnersMicrosoft-Nov-2010-Caso de éxito de Softeng Portal Bul...RoadShow-Azure-PartnersMicrosoft-Nov-2010-Caso de éxito de Softeng Portal Bul...
RoadShow-Azure-PartnersMicrosoft-Nov-2010-Caso de éxito de Softeng Portal Bul...
 
Kit para crear un Sitio Web Móvil asombroso!
Kit para crear un Sitio Web Móvil asombroso!Kit para crear un Sitio Web Móvil asombroso!
Kit para crear un Sitio Web Móvil asombroso!
 
[ES] Construyendo Servicios Web con JDeveloper
[ES] Construyendo Servicios Web con JDeveloper[ES] Construyendo Servicios Web con JDeveloper
[ES] Construyendo Servicios Web con JDeveloper
 
Web matrix session1
Web matrix session1Web matrix session1
Web matrix session1
 
WebSockets
WebSocketsWebSockets
WebSockets
 
Experiencia de uso de WebRTC en la educación
Experiencia de uso de WebRTC en la educaciónExperiencia de uso de WebRTC en la educación
Experiencia de uso de WebRTC en la educación
 
12-Unidad 3: Webservices-3.3. Inicio de Proyecto (Introducción, Contenidos In...
12-Unidad 3: Webservices-3.3. Inicio de Proyecto (Introducción, Contenidos In...12-Unidad 3: Webservices-3.3. Inicio de Proyecto (Introducción, Contenidos In...
12-Unidad 3: Webservices-3.3. Inicio de Proyecto (Introducción, Contenidos In...
 
Prog. web. equipo 5
Prog. web. equipo 5Prog. web. equipo 5
Prog. web. equipo 5
 
Servicios Web
Servicios WebServicios Web
Servicios Web
 
Programación Reactiva, Javascript Isomorfo y Meteorjs !
Programación Reactiva, Javascript Isomorfo y Meteorjs !Programación Reactiva, Javascript Isomorfo y Meteorjs !
Programación Reactiva, Javascript Isomorfo y Meteorjs !
 
Webinar WebRTC y HTML5 (spanish) - Quobis
Webinar WebRTC y HTML5 (spanish) - QuobisWebinar WebRTC y HTML5 (spanish) - Quobis
Webinar WebRTC y HTML5 (spanish) - Quobis
 
[4K Conf 2012] SIP y WebRTC para Seres Humanos (tm)
[4K Conf 2012] SIP y WebRTC para Seres Humanos (tm)[4K Conf 2012] SIP y WebRTC para Seres Humanos (tm)
[4K Conf 2012] SIP y WebRTC para Seres Humanos (tm)
 
Web 2.0
Web 2.0Web 2.0
Web 2.0
 
Web 2.0
Web 2.0Web 2.0
Web 2.0
 
Web 2.0
Web 2.0Web 2.0
Web 2.0
 
Web 2.0
Web 2.0Web 2.0
Web 2.0
 
12-Unidad 3: Webservices-3.3 Inicio del Proyecto
12-Unidad 3: Webservices-3.3 Inicio del Proyecto12-Unidad 3: Webservices-3.3 Inicio del Proyecto
12-Unidad 3: Webservices-3.3 Inicio del Proyecto
 
TenerifeDev - Desarrollando WebApps en la nube
TenerifeDev - Desarrollando WebApps en la nubeTenerifeDev - Desarrollando WebApps en la nube
TenerifeDev - Desarrollando WebApps en la nube
 
GOOGLE ESTANDARES EJEMPLOS
GOOGLE ESTANDARES EJEMPLOSGOOGLE ESTANDARES EJEMPLOS
GOOGLE ESTANDARES EJEMPLOS
 
Pdfwebservices
PdfwebservicesPdfwebservices
Pdfwebservices
 

Más de Micael Gallego

La evaluación con realimentación y posibilidad de recuperación para evitar el...
La evaluación con realimentación y posibilidad de recuperación para evitar el...La evaluación con realimentación y posibilidad de recuperación para evitar el...
La evaluación con realimentación y posibilidad de recuperación para evitar el...Micael Gallego
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?Micael Gallego
 
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...Micael Gallego
 
Testing cloud and kubernetes applications - ElasTest
Testing cloud and kubernetes applications - ElasTestTesting cloud and kubernetes applications - ElasTest
Testing cloud and kubernetes applications - ElasTestMicael Gallego
 
Introducción a las Pruebas Software
Introducción a las Pruebas SoftwareIntroducción a las Pruebas Software
Introducción a las Pruebas SoftwareMicael Gallego
 
Node para Javeros: Conoce a tu enemigo
Node para Javeros: Conoce a tu enemigoNode para Javeros: Conoce a tu enemigo
Node para Javeros: Conoce a tu enemigoMicael Gallego
 
Testing fácil con Docker: Gestiona dependencias y unifica entornos
Testing fácil con Docker: Gestiona dependencias y unifica entornosTesting fácil con Docker: Gestiona dependencias y unifica entornos
Testing fácil con Docker: Gestiona dependencias y unifica entornosMicael Gallego
 
Desarrollo centrado en tareas en Eclipse con Mylyn 2009
Desarrollo centrado en tareas en Eclipse con Mylyn 2009Desarrollo centrado en tareas en Eclipse con Mylyn 2009
Desarrollo centrado en tareas en Eclipse con Mylyn 2009Micael Gallego
 
Como ser mas productivo en el desarrollo de aplicaciones
Como ser mas productivo en el desarrollo de aplicacionesComo ser mas productivo en el desarrollo de aplicaciones
Como ser mas productivo en el desarrollo de aplicacionesMicael Gallego
 
TypeScript: Un lenguaje aburrido para programadores torpes y tristes
TypeScript: Un lenguaje aburrido para programadores torpes y tristesTypeScript: Un lenguaje aburrido para programadores torpes y tristes
TypeScript: Un lenguaje aburrido para programadores torpes y tristesMicael Gallego
 
El Aprendizaje Basado en Proyectos y la Clase Invertida para acercar el mundo...
El Aprendizaje Basado en Proyectos y la Clase Invertida para acercar el mundo...El Aprendizaje Basado en Proyectos y la Clase Invertida para acercar el mundo...
El Aprendizaje Basado en Proyectos y la Clase Invertida para acercar el mundo...Micael Gallego
 

Más de Micael Gallego (11)

La evaluación con realimentación y posibilidad de recuperación para evitar el...
La evaluación con realimentación y posibilidad de recuperación para evitar el...La evaluación con realimentación y posibilidad de recuperación para evitar el...
La evaluación con realimentación y posibilidad de recuperación para evitar el...
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?
 
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
 
Testing cloud and kubernetes applications - ElasTest
Testing cloud and kubernetes applications - ElasTestTesting cloud and kubernetes applications - ElasTest
Testing cloud and kubernetes applications - ElasTest
 
Introducción a las Pruebas Software
Introducción a las Pruebas SoftwareIntroducción a las Pruebas Software
Introducción a las Pruebas Software
 
Node para Javeros: Conoce a tu enemigo
Node para Javeros: Conoce a tu enemigoNode para Javeros: Conoce a tu enemigo
Node para Javeros: Conoce a tu enemigo
 
Testing fácil con Docker: Gestiona dependencias y unifica entornos
Testing fácil con Docker: Gestiona dependencias y unifica entornosTesting fácil con Docker: Gestiona dependencias y unifica entornos
Testing fácil con Docker: Gestiona dependencias y unifica entornos
 
Desarrollo centrado en tareas en Eclipse con Mylyn 2009
Desarrollo centrado en tareas en Eclipse con Mylyn 2009Desarrollo centrado en tareas en Eclipse con Mylyn 2009
Desarrollo centrado en tareas en Eclipse con Mylyn 2009
 
Como ser mas productivo en el desarrollo de aplicaciones
Como ser mas productivo en el desarrollo de aplicacionesComo ser mas productivo en el desarrollo de aplicaciones
Como ser mas productivo en el desarrollo de aplicaciones
 
TypeScript: Un lenguaje aburrido para programadores torpes y tristes
TypeScript: Un lenguaje aburrido para programadores torpes y tristesTypeScript: Un lenguaje aburrido para programadores torpes y tristes
TypeScript: Un lenguaje aburrido para programadores torpes y tristes
 
El Aprendizaje Basado en Proyectos y la Clase Invertida para acercar el mundo...
El Aprendizaje Basado en Proyectos y la Clase Invertida para acercar el mundo...El Aprendizaje Basado en Proyectos y la Clase Invertida para acercar el mundo...
El Aprendizaje Basado en Proyectos y la Clase Invertida para acercar el mundo...
 

Último

Tema 1 - Fundamentos de gestión contable.pptx
Tema 1 - Fundamentos de gestión contable.pptxTema 1 - Fundamentos de gestión contable.pptx
Tema 1 - Fundamentos de gestión contable.pptxchinojosa17
 
COMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfCOMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfOscarBlas6
 
Producto académico 03 - Habilidades Comunicativas.pptx
Producto académico 03 - Habilidades Comunicativas.pptxProducto académico 03 - Habilidades Comunicativas.pptx
Producto académico 03 - Habilidades Comunicativas.pptx46828205
 
2º SOY LECTOR PART 2- MD EDUCATIVO (6).pdf
2º SOY LECTOR PART 2- MD  EDUCATIVO (6).pdf2º SOY LECTOR PART 2- MD  EDUCATIVO (6).pdf
2º SOY LECTOR PART 2- MD EDUCATIVO (6).pdfFernandaHernandez312615
 
ChatGPT Inteligencia artificial, funciones, limitaciones y ventajas.
ChatGPT Inteligencia artificial, funciones, limitaciones y ventajas.ChatGPT Inteligencia artificial, funciones, limitaciones y ventajas.
ChatGPT Inteligencia artificial, funciones, limitaciones y ventajas.Aldo Fernandez
 
FLUIDEZ-Teatro-Leido-4to-Grado-El-leon-y-el-raton- (1).pdf
FLUIDEZ-Teatro-Leido-4to-Grado-El-leon-y-el-raton- (1).pdfFLUIDEZ-Teatro-Leido-4to-Grado-El-leon-y-el-raton- (1).pdf
FLUIDEZ-Teatro-Leido-4to-Grado-El-leon-y-el-raton- (1).pdfYuriFuentesMartinez2
 
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptx
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptxrodriguez_DelAngel_MariaGPE_M1S3AL6.pptx
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptxssuser61dda7
 
CamposGarcia_MariaMagdalena_M1S3AI6.pptx
CamposGarcia_MariaMagdalena_M1S3AI6.pptxCamposGarcia_MariaMagdalena_M1S3AI6.pptx
CamposGarcia_MariaMagdalena_M1S3AI6.pptx241518192
 
El uso de las tic en la vida continúa , ambiente positivo y negativo.
El uso de las tic  en la vida continúa , ambiente positivo y negativo.El uso de las tic  en la vida continúa , ambiente positivo y negativo.
El uso de las tic en la vida continúa , ambiente positivo y negativo.ayalayenifer617
 
GRUPO 5 Software en el campo de la salud.pptx
GRUPO 5 Software en el campo de la salud.pptxGRUPO 5 Software en el campo de la salud.pptx
GRUPO 5 Software en el campo de la salud.pptxNicolas Villarroel
 
que es Planimetría definición importancia en topografia.pptx
que es Planimetría definición importancia en topografia.pptxque es Planimetría definición importancia en topografia.pptx
que es Planimetría definición importancia en topografia.pptxmrzreyes12
 
libro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdflibro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdfFAUSTODANILOCRUZCAST
 
Practica guiada Menu_ tecnología (Tic's)
Practica guiada Menu_ tecnología (Tic's)Practica guiada Menu_ tecnología (Tic's)
Practica guiada Menu_ tecnología (Tic's)BrianaFrancisco
 
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsxactividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx241532171
 
Fisica General.pdf ESCUELA D QUIMICA E INGENIERIA
Fisica General.pdf ESCUELA D QUIMICA E INGENIERIAFisica General.pdf ESCUELA D QUIMICA E INGENIERIA
Fisica General.pdf ESCUELA D QUIMICA E INGENIERIAcoloncopias5
 
GRUPO 10 SOFTWARE DE EL CAMPO DE LA SAULD
GRUPO 10 SOFTWARE DE EL CAMPO DE LA SAULDGRUPO 10 SOFTWARE DE EL CAMPO DE LA SAULD
GRUPO 10 SOFTWARE DE EL CAMPO DE LA SAULDLeslie Villar
 

Último (16)

Tema 1 - Fundamentos de gestión contable.pptx
Tema 1 - Fundamentos de gestión contable.pptxTema 1 - Fundamentos de gestión contable.pptx
Tema 1 - Fundamentos de gestión contable.pptx
 
COMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfCOMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdf
 
Producto académico 03 - Habilidades Comunicativas.pptx
Producto académico 03 - Habilidades Comunicativas.pptxProducto académico 03 - Habilidades Comunicativas.pptx
Producto académico 03 - Habilidades Comunicativas.pptx
 
2º SOY LECTOR PART 2- MD EDUCATIVO (6).pdf
2º SOY LECTOR PART 2- MD  EDUCATIVO (6).pdf2º SOY LECTOR PART 2- MD  EDUCATIVO (6).pdf
2º SOY LECTOR PART 2- MD EDUCATIVO (6).pdf
 
ChatGPT Inteligencia artificial, funciones, limitaciones y ventajas.
ChatGPT Inteligencia artificial, funciones, limitaciones y ventajas.ChatGPT Inteligencia artificial, funciones, limitaciones y ventajas.
ChatGPT Inteligencia artificial, funciones, limitaciones y ventajas.
 
FLUIDEZ-Teatro-Leido-4to-Grado-El-leon-y-el-raton- (1).pdf
FLUIDEZ-Teatro-Leido-4to-Grado-El-leon-y-el-raton- (1).pdfFLUIDEZ-Teatro-Leido-4to-Grado-El-leon-y-el-raton- (1).pdf
FLUIDEZ-Teatro-Leido-4to-Grado-El-leon-y-el-raton- (1).pdf
 
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptx
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptxrodriguez_DelAngel_MariaGPE_M1S3AL6.pptx
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptx
 
CamposGarcia_MariaMagdalena_M1S3AI6.pptx
CamposGarcia_MariaMagdalena_M1S3AI6.pptxCamposGarcia_MariaMagdalena_M1S3AI6.pptx
CamposGarcia_MariaMagdalena_M1S3AI6.pptx
 
El uso de las tic en la vida continúa , ambiente positivo y negativo.
El uso de las tic  en la vida continúa , ambiente positivo y negativo.El uso de las tic  en la vida continúa , ambiente positivo y negativo.
El uso de las tic en la vida continúa , ambiente positivo y negativo.
 
GRUPO 5 Software en el campo de la salud.pptx
GRUPO 5 Software en el campo de la salud.pptxGRUPO 5 Software en el campo de la salud.pptx
GRUPO 5 Software en el campo de la salud.pptx
 
que es Planimetría definición importancia en topografia.pptx
que es Planimetría definición importancia en topografia.pptxque es Planimetría definición importancia en topografia.pptx
que es Planimetría definición importancia en topografia.pptx
 
libro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdflibro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdf
 
Practica guiada Menu_ tecnología (Tic's)
Practica guiada Menu_ tecnología (Tic's)Practica guiada Menu_ tecnología (Tic's)
Practica guiada Menu_ tecnología (Tic's)
 
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsxactividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx
 
Fisica General.pdf ESCUELA D QUIMICA E INGENIERIA
Fisica General.pdf ESCUELA D QUIMICA E INGENIERIAFisica General.pdf ESCUELA D QUIMICA E INGENIERIA
Fisica General.pdf ESCUELA D QUIMICA E INGENIERIA
 
GRUPO 10 SOFTWARE DE EL CAMPO DE LA SAULD
GRUPO 10 SOFTWARE DE EL CAMPO DE LA SAULDGRUPO 10 SOFTWARE DE EL CAMPO DE LA SAULD
GRUPO 10 SOFTWARE DE EL CAMPO DE LA SAULD
 

WebRTC y Kurento en el T3cgFest 2015

  • 1. Micael Gallego Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Except where otherwise noted, this work is licensed under: http://creativecommons.org/licenses/by-nc-sa/3.0/ Leganés 12-13 Febrero 2015
  • 2. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 2
  • 3. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 3 ¿Qué es
  • 4. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 WebRTC: Comunicación en tiempo real para la web • Permite comunicar un browser directamente con otro, peer-to-peer, sin que los datos tengan que pasar por el servidor (siempre que sea posible) • Usa el framework ICE para traspasar los NATs y permitir una comunicación directa entre navegadores • WebRTC es un working draft del W3C 4
  • 5. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 5 ¿Cómo funciona? Servidor Web Los browsers se conocen conectándose a la misma aplicación web usando Websockets o REST 1
  • 6. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 6 ¿Cómo funciona? Servidor Web Los browsers se conectan directamente entre sí. Pueden usar UDP , TCP o SCTP2
  • 7. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 WebRTC: Comunicación en tiempo real para la web • La conexión directa proporciona muy baja latencia • Se puede transmitir audio, vídeo o datos • La conexión entre los browsers puede ser por TCP, UDP o SCTP 7
  • 8. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 Fuentes de audio y vídeo en WebRTC 8 Webcam Micrófono Compartición de Escritorio
  • 9. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 Can I use WebRTC? 9 (en desarrollo) También como librerías nativas para apps
  • 10. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 10 Tipos de apps WebRTC Videoconferencia / chat Emisión de media
  • 11. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 11 Tipos de apps WebRTC Videoconferencia / chat Emisión de media La conexión directa entre browsers es adecuada en todos los casos ?
  • 12. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 12 Servidores de media WebRTC Servidor de media
  • 13. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 13 Servidores de media WebRTC
  • 14. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 14 ¿Qué suelen hacer los servidores de media? Transcodificar VP8 H.264 Reenviar (Media Conference Unit) Grabar
  • 15. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 15 ¿Qué pueden llegar a hacer? Analizar Transformar Almacenar Enriquecer Aumentar Adaptar Sensores Eventos • Procesamiento del media • Realidad aumentada • Mezcla de fuentes de vídeo • Análisis • Detección de movimientos • Visión artificial • Etc… Servidor de media
  • 16. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 16 ¿y es muy complicado?
  • 17. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 17
  • 18. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 18
  • 19. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 19
  • 20. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 20 Servidor de media WebRTC Software libre (LGPL 2.1) Fácil de usar: se controla con librerías Java o Node.js Protocolo de red JSON-RPC sobre websockets Ampliable a elementos de visión artificial personalizados http://www.kurento.org
  • 21. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 21 Enviar Recibir Analizar Aumentar Enriquecer Transformar Transcodificar Grabar Procesar Replicar Entrada de media Salida de media Kurento Media Server Arquitectura de Kurento
  • 22. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 22 Entrada de media Salida de mediaKurento Media Server Cliente Java Las aplicaciones definen cómo procesar el media que llega a Kurento Media Server Cliente JS Browser Cliente JS node.js Arquitectura de Kurento
  • 23. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 23 Media Element • Proporciona una funcionalidad básica • Enviar/Recibir media por WebRTC • Guardar/Leer media del disco duro • Analizar el media • Transformar media • Existen diferentes media elements disponibles • Se pueden añadir nuevos con C/C++ Sink SRC
  • 24. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 24
  • 25. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 25 Media Pipeline • Cadena de elementos que implementan la funcionalidad deseada
  • 26. 26
  • 27. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 27 Media pipeline Kurento Media Server ¿Cómo implementar un espejo mágico?
  • 28. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 28 Transmisión de media Browser Kurento Media Server Servidor Web Java Kurento Client Código de aplicación Código de aplicación JSON-RPC sobre WebSockets Protocolo de señalización (AJAX) ¿Cómo implementar un espejo mágico?
  • 29. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 29 Browser Servidor Web Kurento Datos de intercambio de media (SDP offer) Creación del pipeline y negociación de la transmisión de media Resultado de la negociación de media (SDP Answer) Fase de creación del pipeline Fase de intercambio de media 1 2 Intercambio de media entre el browser y Kurento
  • 30. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 30 Cliente web: Petición AJAX var webRtcPeer; function start() { webRtcPeer = kurentoUtils.WebRtcPeer.startSendRecv(videoInput, videoOutput, onOffer, onError); } function onOffer(sdpOffer) { $.ajax({ url : location.protocol + '/magicmirror', type : 'POST', dataType : 'text', contentType : 'application/sdp', data : sdpOffer, success : function(sdpAnswer) { webRtcPeer.processSdpAnswer(sdpAnswer); } }); }
  • 31. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 31 Servidor web: Controlador Spring MVC @RestController public class MagicMirrorController { @Autowired private KurentoClient kurento; @RequestMapping(value = "/magicmirror", method = RequestMethod.POST) private String processRequest(@RequestBody String sdpOffer) throws IOException { // Creación del pipeline // Negociación del media (SDP) return responseSdp; } }
  • 32. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 32 Servidor web: Creación del pipeline y negociación // Creación del pipeline MediaPipeline pipeline = kurento.createMediaPipeline(); WebRtcEndpoint webRtcEndpoint = new WebRtcEndpoint.Builder(pipeline).build(); FaceOverlayFilter faceOverlayFilter = new FaceOverlayFilter.Builder(pipeline).build(); faceOverlayFilter.setOverlayedImage("http://files.kurento.org/imgs/mario-wings.png", -0.35F, -1.2F, 1.6F, 1.6F); webRtcEndpoint.connect(faceOverlayFilter); faceOverlayFilter.connect(webRtcEndpoint); // Negociación del media (SDP) String responseSdp = webRtcEndpoint.processOffer(sdpOffer);
  • 33. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 33 ¿Cómo implementar un espejo mágico?
  • 34. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 34 ¿Cómo implementar un espejo mágico?
  • 35. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 35 WebRTC ofrece la oportunidad de ofrecer servicios avanzados de comunicación multimedia a cualquier persona (vía web) Kurento facilita la implementación de esos servicios ofreciendo una API familiar a los desarrolladores de aplicaciones web
  • 36. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 36
  • 37. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 37
  • 38. Cómo Incluir Videollamadas en Grupo en tu Página Web con WebRTC y Kurento Leganés 12-13 Febrero 2015 38 Micael Gallego @micael_gallego Gracias!! http://www.kurento.org http://www.github.com/kurento @kurentoms