Transmitir desde OBS con ingesta RTMP
Creá una ingesta RTMP, poné la URL y la clave de stream en OBS, y salí en vivo. Incluye la contraseña de stream opcional y una URL de reproductor para compartir.
RTMP es el caballo de batalla
RTMP es la forma más ampliamente soportada de empujar un stream desde software como OBS o ffmpeg. En StreamHub creás una ingesta RTMP, que devuelve una URL de push y una clave de stream; OBS empuja hacia ella, y el feed se convierte en una sala que podés mirar y grabar.
La ingesta RTMP viene con transcodificación activada por defecto (multi-capa), que es lo que necesitan el reproductor adaptativo y HLS — así obtenés reproducción escalable gratis.
Paso 1 — crear la ingesta
curl -s -X POST $BASE/apps/live/ingress -H "Authorization: Bearer $TOKEN" \
-H 'Content-Type: application/json' \
-d '{"inputType":"rtmp","room":"studio"}'
La respuesta te da todo lo que OBS necesita:
{ "data": {
"rtmp_url": "rtmp://media.example.com:1935/live/abc123",
"stream_key": "abc123",
"player_url": "https://media.example.com/play/live/studio",
"embed_iframe": "<iframe ...></iframe>"
} }
Paso 2 — configurar OBS
En OBS, abrí Configuración → Emisión y elegí Personalizado:
- Servidor:
rtmp://media.example.com:1935/live - Clave de retransmisión:
abc123
Hacé clic en Iniciar transmisión. En un momento el stream aparece en la pestaña "En vivo" de la app, y la player_url es reproducible.
Lo mismo funciona con ffmpeg:
ffmpeg -re -i entrada.mp4 -c:v libx264 -c:a aac -f flv \
rtmp://media.example.com:1935/live/abc123
Opcional — proteger el push con contraseña
LiveKit no tiene contraseña RTMP nativa, así que StreamHub la agrega. Con la función rtmpPassword habilitada en la app, la respuesta de la ingesta incluye un stream_password, y autorizás el push antes de que arranque:
curl -s -X POST $BASE/apps/live/ingress/IN_xxx/validate \
-H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
-d '{"password":"s3cr3t"}'
Si un push RTMP arranca sin autorizar, StreamHub lo termina y dispara stream_ended con motivo unauthorized_rtmp_password.
Mirar y compartir
La player_url y el embed_iframe son públicos — sin token — así que podés pegar el iframe directo en una página. Para una audiencia interactiva usá el reproductor WebRTC; para una audiencia grande o móvil, la misma sala está disponible como HLS en /hls/live/studio/index.m3u8.
Una ingesta equivale a un stream: la capa de webhooks deduplica el evento de ingesta con el participante para que tu lista de streams quede limpia.