Software libre
para videoconferencias
Micael Gallego
Developer, Profesor, Científico... 26-11-21
•DISCLAIMER:
• He preferido no entrar en mucho detalle para
que se pueda tener una visión general.
• Algunas afirmaciones deberían llevar un
“depende” o “no siempre”
5
6
¿Qué es
?
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)
7
WebRTC: Comunicación en tiempo
real para la web
• Para conseguirlo se usa el framework ICE para
traspasar los NATs y permitir una comunicación
directa entre navegadores
•Cuando no es posible la conexión directa se pueden
usar servidores estándar de reenvío de datos (TURN)
8
WebRTC: Comunicación en tiempo
real para la web
9
Webcam Micrófono Escritorio
•La baja latencia es ideal para comunicación
con audio y vídeo
WebRTC: Comunicación en tiempo
real para la web
•Desarrollado inicialmente por Google
•WebRTC es una Recommendation del W3C desde
el 26 de Enero del 2021
10
https://www.w3.org/TR/webrtc/
https://webrtc.org/
11
12
¿Cómo funciona?
Servidor Web
Los browsers se conocen
conectándose a la misma aplicación
web y se intercambian información de
red (Candidatos ICE)
1
13
Servidor Web
Los browsers se conectan directamente
entre sí. Pueden usar UDP, TCP o SCTP
2
¿Cómo funciona?
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
14
Can I use WebRTC?
15
Existen librerías nativas para apps móviles
Servicios de videoconferencia
basados en WebRTC
16
Software libre de videoconferencia
basados en WebRTC
20
https://meet.jit.si/
•Apache 2 License
• También lo ofrecen
como servicio de
forma gratuita
https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-start
•GNU Lesser General
Public License
(LGPL)
•Orientado a
docencia
25
WebRTC vs Video Streaming
•El streaming de vídeo tiene latencias como mínimo de 5
segundos (puede ser más de 30 segundos)
•Se usan técnicas como Http Live Streaming (HLS)
•Esas latencias no pueden usarse para videoconferencia
https://en.wikipedia.org/wiki/HTTP_Live_Streaming
26
•Hay servicios
combinan
WebRTC y
Streaming
27
Software de streaming software libre
https://www.red5pro.com/open-source/ https://antmedia.io/
28
Modelos comerciales
•La mayoría de las soluciones libres tienen planes
comerciales
• Más funcionalidades
• Servicio alojados y administrados
• Soporte prioritario
• Personalizaciones
29
¿Cómo crear tu propio servicio
de videoconferencia?
30
Cómo crear una app de videoconferencia
•Usar la API estándar WebRTC del browser
• Es una API de muy bajo nivel
• El esfuerzo para crear una aplicación completa es
importante
• Tienes que conocer muy bien el estándar (y sus
limitaciones)
Cómo crear una app de videoconferencia
https://developer.mozilla.org/en-US/
docs/Web/API/WebRTC_API
Browser
WebRTC API
https://en.wikipedia.org/wiki/Travers
al_Using_Relays_around_NAT
Servidor TURN
(Usuarios con
redes especiales)
Coturn
(open source)
https://github.com/
coturn/coturn
(as a service)
https://www.twilio.
com/stun-turn
32
Cómo crear una app de videoconferencia
•Colaborar y contribuir a un proyecto existente
• Tus necesidades pueden ser muy distintas a las del
proyecto
• Puede que no acepten contribuciones externas
• Requiere de conocimientos sobre cómo está implementado
el software
33
Cómo crear una app de videoconferencia
•Hacer un fork y cambiar lo que necesites
• Requiere de conocimientos sobre cómo está implementado
el software
• Cualquier mejora fix del software original tiene que
integrarse en el fork (y eso puede ser muy problemático)
34
Cómo crear una app de videoconferencia
•Usar plataformas de videoconferencia
• Son plataformas diseñadas para construir aplicaciones
(documentación, ejemplos…)
• Las actualizaciones de la plataforma son fáciles de integrar
en la aplicación (cambio de versión y guías para actualizar)
35
Cómo crear una app de videoconferencia
Plataformas comerciales
(como servicio)
36
PRO
Cómo crear una app de videoconferencia
Plataformas comerciales
(instalables)
37
Cómo crear una app de videoconferencia
Plataformas software libre
38
Cómo crear una app de videoconferencia
Plataformas software libre
39
Cómo crear una app de videoconferencia
Plataformas software libre
https://openvidu.io/ https://www.kurento.org/
40
Cómo crear una app de videoconferencia
Plataformas software libre
http://www.medooze.com/ https://github.com/medooze/media-server
Sergio García Murillo
Software libre
para videoconferencias
Micael Gallego
Developer, Profesor, Científico... 26-11-21
Gracias!