≡En resumen
- WebRTC permite videollamadas, audio y envío de datos entre navegadores sin instalar nada.
- La conexión es peer-to-peer siempre que la red lo permite; si no, se retransmite por un servidor TURN.
- La señalización (cómo se encuentran los usuarios) no está estandarizada: la programa cada aplicación.
- El cifrado de los medios es obligatorio en todas las implementaciones.
- Para llamadas de grupo se combina con servidores SFU o MCU, que ya no son peer-to-peer.
01 ¿Qué es WebRTC?
Google compró la empresa Global IP Solutions en 2010 y en mayo de 2011 liberó su tecnología de voz y vídeo como proyecto de código abierto. El W3C publicó el primer borrador de la API ese mismo año y el 26 de enero de 2021 WebRTC 1.0 se convirtió en Recomendación del W3C, a la vez que el IETF publicaba los estándares de protocolo. Hoy lo soportan Chrome, Firefox, Safari (desde la versión 11, de 2017) y Edge, en escritorio y móvil.
WebRTC no es una aplicación, sino la pieza con la que se construyen aplicaciones de video chat, videoconferencia, soporte remoto o juegos en línea.
02 ¿Cómo funciona WebRTC? El recorrido de una llamada
-
1
Captura de medios
La web pide acceso a cámara y micrófono con getUserMedia. El navegador muestra el aviso de permiso y solo funciona en páginas HTTPS.
-
2
Señalización
Los dos extremos intercambian mensajes a través de un servidor de la aplicación, normalmente por WebSocket. WebRTC no fija cómo se hace.
-
3
Oferta y respuesta SDP
Cada extremo describe en formato SDP qué códecs y capacidades tiene; así acuerdan cómo se enviarán audio y vídeo.
-
4
Candidatos ICE
Cada dispositivo descubre sus posibles direcciones (local, pública vía STUN o de retransmisión vía TURN) y las comparte.
-
5
Conexión y cifrado
ICE prueba las rutas y elige la mejor. DTLS negocia las claves y los medios viajan cifrados con SRTP.
-
6
Datos y medios
Audio y vídeo fluyen por RTCPeerConnection; texto o archivos, por RTCDataChannel.
03 Componentes de WebRTC: APIs y protocolos
| Pieza | Tipo | Para qué sirve |
|---|---|---|
| getUserMedia / getDisplayMedia | API del navegador | Capturar cámara, micrófono o pantalla |
| RTCPeerConnection | API del navegador | Crear y gestionar la conexión de audio y vídeo |
| RTCDataChannel | API del navegador | Enviar datos arbitrarios (chat, archivos, estado de un juego) |
| SDP y JSEP | Formato y modelo de negociación | Describir capacidades y acordar la sesión (oferta/respuesta) |
| ICE | Protocolo | Encontrar la mejor ruta de red entre dos dispositivos |
| STUN / TURN | Protocolos y servidores | Descubrir la IP pública / retransmitir cuando no hay ruta directa |
| DTLS-SRTP | Seguridad | Negociar claves y cifrar los medios |
| SCTP | Transporte | Llevar los canales de datos, fiables o no |
04 STUN y TURN: cómo atraviesa WebRTC los routers
La mayoría de dispositivos están detrás de un router con NAT o de un cortafuegos corporativo, y no tienen una IP pública propia. Para conectar dos de ellos directamente, WebRTC usa ICE con dos tipos de servidores:
STUN
Le dice a cada dispositivo cuál es su IP y puerto públicos. Es ligero y barato: solo interviene al principio. Con eso, en muchas redes ya se puede conectar de forma directa.
TURN
Cuando la conexión directa es imposible (NAT simétrico, redes corporativas estrictas), retransmite todo el tráfico. Funciona siempre, pero consume ancho de banda del servidor.
05 Códecs de WebRTC: Opus, VP8, H.264, VP9 y AV1
| Medio | Obligatorios | Norma | Otros habituales |
|---|---|---|---|
| Audio | Opus y G.711 (PCMA/PCMU) | RFC 7874, mayo de 2016 | Se prefiere Opus por su calidad y resistencia a pérdidas |
| Vídeo | VP8 y H.264 Constrained Baseline | RFC 7742, marzo de 2016 | VP9 y AV1 en los navegadores actuales, más eficientes |
La aplicación no suele elegir el códec a mano: los extremos lo acuerdan en la negociación SDP. Sí puedes priorizar uno, por ejemplo H.264 si hay dispositivos con aceleración por hardware, o AV1 si te importa ahorrar ancho de banda y los clientes lo soportan.
06 Seguridad y privacidad en WebRTC
- ✓El cifrado de medios con SRTP es obligatorio: no existe WebRTC sin cifrar.
- ✓El navegador pide permiso explícito para cámara, micrófono y pantalla.
- ✓getUserMedia solo funciona en contextos seguros (HTTPS o localhost).
- ✓En una conexión directa, el otro extremo ve tu IP pública; si no quieres exponerla, fuerza el tráfico por TURN.
- ✓Si usas un servidor SFU, este puede acceder a los medios: el cifrado de extremo a extremo requiere una capa adicional.
- ✓Protege la señalización con autenticación: es donde se decide quién entra en una llamada.
07 Cómo empezar a desarrollar con WebRTC
Montar una llamada de prueba entre dos pestañas cuesta una tarde; llevarla a producción con usuarios reales, varias semanas. Estas son las decisiones que conviene tomar antes de escribir código:
- ✓Caso de uso: llamada uno a uno, reunión de grupo, directo a muchos espectadores o canal de datos.
- ✓Plataformas: solo navegador, o también apps nativas de iOS y Android con los SDK oficiales.
- ✓Servidor de señalización: propio sobre WebSockets o incluido en una plataforma de vídeo.
- ✓Servidores STUN/TURN: propios (por ejemplo coturn) o gestionados, con su coste de tráfico.
- ✓Servidor de medios para grupos: SFU de código abierto o servicio en la nube.
- ✓Grabación, transcripción y cumplimiento del RGPD si se guardan conversaciones.
Con tres llamadas ya tienes la base de una videollamada: navigator.mediaDevices.getUserMedia({ video: true, audio: true }) para la cámara, new RTCPeerConnection({ iceServers: [...] }) para la conexión y pc.addTrack() para enviar las pistas. Lo que falta, y es lo que más trabajo da, es intercambiar la oferta, la respuesta y los candidatos ICE a través de tu servidor de señalización.
08 Para qué sirve WebRTC: usos y alternativas
Videollamadas y reuniones
De dos personas o de grupo. Para grupos se combina con servidores SFU que reenvían el vídeo de cada participante.
Atención al cliente y telemedicina
Vídeo integrado en la web o la app del negocio, sin mandar al cliente a otra plataforma.
Agentes de voz con IA
Varias APIs de voz en tiempo real usan WebRTC para llevar el audio entre el usuario y el modelo con baja latencia.
Datos peer-to-peer
Transferencia de archivos, pizarras colaborativas y juegos multijugador por canales de datos.
Directos de baja latencia
Emisiones con menos de un segundo de retraso, frente a los varios segundos del streaming HTTP tradicional.
| Tecnología | Latencia típica | Mejor para |
|---|---|---|
| WebRTC | Por debajo de un segundo | Conversación bidireccional con audio y vídeo |
| WebSockets | Baja, pero sobre TCP y siempre vía servidor | Mensajes, notificaciones, chat de texto |
| Streaming HTTP (HLS, DASH) | Varios segundos | Emitir a audiencias grandes con coste bajo |
Si vas a integrar vídeo en tu producto, el reto no es la API del navegador, sino la infraestructura: señalización, TURN, escalado y grabación, el día a día del desarrollo de aplicaciones web a medida. Lo explicamos en detalle en videoconferencia con WebRTC. Y si es para un asistente conversacional, esta guía sobre el agente de voz con IA muestra cómo encaja. En móvil hay SDK nativos para iOS y Android, así que no dependes del navegador: revisa los tipos de apps antes de elegir y, si lo necesitas, apóyate en un equipo de desarrollo de apps a medida.
Preguntas frecuentes sobre WebRTC
Es un estándar abierto del W3C y del IETF que permite enviar audio, vídeo y datos en tiempo real entre navegadores y apps, sin plugins y con cifrado obligatorio.
Sirve para crear videollamadas, reuniones online, atención al cliente por vídeo, telemedicina, agentes de voz, transferencia de archivos peer-to-peer y directos de muy baja latencia.
Sí cuando la red lo permite: los medios van directamente entre los dispositivos. Si no hay ruta directa se retransmiten por TURN, y en llamadas de grupo suelen pasar por un servidor SFU.
STUN solo ayuda a cada dispositivo a descubrir su IP pública para conectar directamente; TURN retransmite todo el tráfico cuando la conexión directa no es posible.
Sí: el cifrado de audio y vídeo con SRTP es obligatorio y el navegador pide permiso para usar cámara y micrófono. La seguridad de la señalización y los servidores depende de cada aplicación.
Todos los principales: Chrome, Firefox, Safari (desde la versión 11) y Edge, en escritorio y en móvil. También hay SDK nativos para iOS y Android.
Sí. Es un estándar abierto y su implementación de referencia, libwebrtc, es de código abierto con licencia de tipo BSD. Lo que sí cuesta es la infraestructura: servidores de señalización, TURN y, en grupos, SFU.
No es necesario en general. En una conexión directa el otro extremo ve tu IP pública; si eso te preocupa, algunas extensiones o ajustes limitan WebRTC, pero romperán las videollamadas web.
Fuentes consultadas
Sobre el autor
Germán Gutiérrez
Development Manager en appyweb
Dirige el equipo de desarrollo de appyweb: aplicaciones web y móviles, SaaS, integraciones y arquitectura de software.
Ver perfil en LinkedIn ↗