← Volver al blog
Guías #whip

Publicar en sub-segundo con WHIP

WHIP es ingesta WebRTC sobre una única petición HTTP — la forma de menor latencia de empujar hacia StreamHub. Cuándo usarlo en lugar de RTMP, y cómo crear un endpoint WHIP.

2 min de lectura
Read in English

WHIP: ingesta WebRTC, HTTP simple

WHIP (WebRTC-HTTP Ingestion Protocol) permite que un codificador publique un stream WebRTC haciendo una única petición HTTP. Obtenés la latencia sub-segundo de WebRTC del lado de la ingesta, sin la complejidad de la señalización — lo que lo hace la forma de menor latencia de meter medio hacia StreamHub.

Donde RTMP agrega unos segundos de buffer, WHIP se mantiene sub-segundo de punta a punta cuando se combina con el reproductor WebRTC. Esa es la diferencia entre "en vivo" e "interactivo".

¿RTMP o WHIP?

  • RTMP — soporte universal de codificadores (OBS, ffmpeg, hardware), unos segundos de latencia, transcodificación activada por defecto. Ideal para difusión.
  • WHIP — latencia sub-segundo, necesita un publicador con soporte WHIP, transcodificación desactivada por defecto. Ideal para lo interactivo y en tiempo real.

Crear una ingesta WHIP

curl -s -X POST $BASE/apps/live/ingress -H "Authorization: Bearer $TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"inputType":"whip","room":"tiempo-real"}'

La respuesta incluye la URL del endpoint WHIP. Apuntá un publicador WHIP a ella — un número creciente de codificadores, publicadores de navegador y la salida WHIP de OBS lo soportan nativamente. Como WHIP viene con transcodificación desactivada, habilitala explícitamente (o adherí la app) si también querés salida adaptativa/HLS desde una fuente WHIP:

curl -s -X POST $BASE/apps/live/ingress -H "Authorization: Bearer $TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"inputType":"whip","room":"tiempo-real","enableTranscoding":true}'

Mirarlo con latencia acorde

Para preservar la baja latencia hasta el espectador, combiná la ingesta WHIP con el reproductor WebRTC, no con HLS. Generá un token de suscripción:

curl -s -X POST $BASE/apps/live/tokens -H "Authorization: Bearer $TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"room":"tiempo-real","canPublish":false,"canSubscribe":true}'
# → data.playUrl (WebRTC) — sub-segundo de cámara a pantalla

Usar HLS sobre una fuente WHIP funciona, pero el buffer de HLS tira a la basura la ventaja de latencia que viniste a buscar.

Cuándo brilla WHIP

Recurrí a WHIP cuando el retraso en sí es el producto: subastas en vivo, producción remota, telepresencia, feeds de drones/robótica, cualquier cosa donde un operador reacciona a lo que ve. Para una difusión de una vía a una gran audiencia, RTMP-entra / HLS-sale es más simple y escala más. StreamHub soporta ambos desde la misma app, así que incluso podés mezclarlos por sala.