media server logo
Mostrar u ocultar la navegación
Inicio de Callaba

Servidores RTMP

Usa Servidores RTMP para recibir señales de OBS, encoders y emisores invitados en endpoints estables de ingesta RTMP. Controla el acceso de publicación y reproducción y consulta después el bitrate y los datos de conexión en tiempo real.

Qué haceRecibir una señal de contribución RTMP

Elige este módulo cuandoOBS, un encoder RTMP o un invitado necesita una URL push estable, control de acceso y analítica de conexión en directo.

Usa otro módulo cuandoUsa Servidores SRT para transporte SRT y failover; usa Streams solo para identidades dentro de un servidor existente.

1Emisor RTMP2Controla el acceso3Enruta o reproduce
POST /api/rtmp-servers/create
10 endpoints

Antes de empezar

Todos los métodos de gestión requieren un x-access-token válido. Reserva un puerto de escucha accesible y define el control de streams y los ajustes de acceso del servidor antes de compartir los datos de conexión.

Qué puedes hacer

  • create y update configuran el puerto de escucha, el búfer del reproductor y la política de acceso a los streams.
  • getAll, getCount y getById consultan los servidores y los registros de streams permitidos.
  • start y stop controlan el listener RTMP.
  • getStatistics devuelve el bitrate de entrada y salida, el número de emisores y receptores y, cuando están disponibles, la dirección, región y aplicación de cada cliente.
  • getStatisticHistory devuelve el historial reciente de estadísticas disponible.
  • remove elimina el servidor.

Flujo de ejemplo

  1. Crea el servidor RTMP con su puerto de escucha y el búfer del reproductor.
  2. Elige acceso mediante stream key o dirección IP, o permite conexiones de invitados únicamente si el flujo lo requiere.
  3. Inicia el listener y entrega a cada emisor los datos de conexión previstos.
  4. Llama a getStatistics para comprobar el bitrate, los roles y el origen de la conexión.
  5. Conecta la ingesta con una grabación, retransmisión o reproductor web.

Casos de uso habituales

  • Recibir contribuciones recurrentes desde OBS o un encoder en un endpoint estable.
  • Permitir que emisores y receptores invitados autorizados creen sus propias stream keys según la política de acceso seleccionada.
  • Supervisar conexiones de clientes o recintos por bitrate, rol, dirección y región.
  • Convertir una señal de contribución RTMP en reproducción HLS o DASH para el navegador.

Límites y resolución de problemas

El puerto debe estar libre y ser accesible. Las reglas de acceso, las stream keys y los roles de emisor o receptor deben coincidir con la conexión. Las estadísticas recientes son datos operativos, no un almacén histórico de analítica; expórtalas si necesitas más retención o alertas.

Siguientes pasos

Valida un emisor con getStatistics y conecta después el servidor con Retransmisiones, Grabaciones o Reproductores web.

Receta de solución REST

Aceptar emisores RTMP y revisar el bitrate en directo

Aprovisiona un punto de entrada RTMP con la política de acceso necesaria, inícialo y consulta las estadísticas actuales y recientes del mismo recurso.

  1. Crear la ingesta RTMPElige el puerto, el búfer y el acceso abierto, por stream id o por IP.POST /api/rtmp-servers/create
  2. Iniciar el servidorActiva el punto de entrada antes de conectar OBS, un encoder u otro emisor.POST /api/rtmp-servers/start
  3. Consultar estadísticas en directoRevisa el bitrate y los datos de conexión actuales y usa el historial para muestras recientes.POST /api/rtmp-servers/getStatistics

Una respuesta de creación correcta confirma la configuración, no el estado del medio. Inicia el recurso y comprueba sus estadísticas antes de enviar tráfico de producción.

Receta de solución REST

Dar acceso RTMP de invitado para publicar y recibir

Crea un servidor temporal abierto para claves elegidas por invitados, o registros explícitos de emisor y receptor para claves controladas o hosts fijos, y verifica las conexiones en las estadísticas.

  1. Crear una ingesta abierta o controladaElige acceso abierto, por clave o por IP e incluye roles de emisor y receptor cuando necesites access_settings.POST /api/rtmp-servers/create
  2. Consultar la lista de accesoUsa getById porque la respuesta de creación puede no incluir los registros relacionados.POST /api/rtmp-servers/getById
  3. Verificar emisores y receptoresConfirma bitrate, recuentos por rol, direcciones y datos geográficos de los invitados esperados.POST /api/rtmp-servers/getStatistics

CONTROL_ACCESS_ALLOW_ALL permite que invitados se conecten con una clave elegida; no es autenticación. En producción usa CONTROL_ACCESS_STREAM_ID o CONTROL_ACCESS_IP_ADDRESS con access_settings por rol y retira el acceso temporal después del evento.

POST
/api/rtmp-servers/create
Requiere token de API

Crea un servidor de ingesta RTMP con puerto de escucha, búfer de reproducción, estado inicial y reglas opcionales de acceso por stream key o IP. Envía el JWT generado en el panel mediante la cabecera x-access-token.

server_buflen se expresa en segundos. El valor predeterminado es 5 y el intervalo admitido es de 1 a 120.

Cuando envías stream_control_type y access_settings, Callaba crea las reglas de acceso junto con el servidor. La respuesta de creación puede mostrar access: []; usa getById para obtener la lista completa.

Ejemplos de solicitud

Elige una plantilla de ingesta abierta, con stream keys explícitas o con direcciones IP fijas. También hay un ejemplo de vMix Script para el aprovisionamiento desde un flujo de operador.

Casos de uso habituales

  • Ofrecer a OBS u otro encoder de software un endpoint estable de contribución RTMP.
  • Restringir la publicación de colaboradores o estudios mediante stream keys o una lista de IP permitidas.
  • Crear una ingesta que alimente reproducción en el navegador mediante HLS o DASH.
Permitir solo claves de flujo específicas

Usa este patrón cuando los publicadores y receptores deban autenticarse con claves de flujo RTMP explícitas en lugar de usar una ingesta abierta. Reproduce el ajuste predefinido del panel, que crea una clave para el publicador y otra para el receptor.

Permitir solo claves de flujo específicas
Copiar código
curl --request POST \
--url http://localhost/api/rtmp-servers/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"server_name": "Live Protected",
"server_type": "SERVER_TYPE_RTMP",
"server_port": 1945,
"server_buflen": 5,
"server_active": true,
"stream_control_type": "CONTROL_ACCESS_STREAM_ID",
"access_settings": [
{
"stream_id": "rtmp-stream-01",
"role_name": "publisher"
},
{
"stream_id": "rtmp-stream-01",
"role_name": "receiver"
}
]
}'
Permitir solo direcciones IP específicas

Usa este patrón cuando los equipos RTMP tengan direcciones fijas conocidas. El ajuste predefinido del panel crea reglas para publicadores y receptores basadas en la dirección del equipo, en lugar de hacerlo por ID de flujo.

Permitir solo direcciones IP específicas
Copiar código
curl --request POST \
--url http://localhost/api/rtmp-servers/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"server_name": "Live Allowlisted",
"server_type": "SERVER_TYPE_RTMP",
"server_port": 1945,
"server_buflen": 5,
"server_active": true,
"stream_control_type": "CONTROL_ACCESS_IP_ADDRESS",
"access_settings": [
{
"host": "127.0.0.1",
"role_name": "publisher"
},
{
"host": "127.0.0.1",
"role_name": "receiver"
}
]
}'
Parámetros del cuerpo de la solicitud
Ajustes básicos
server_name
string
Copiar enlace directo

Etiqueta en el panel: Nombre.

El formulario usa Live de forma predeterminada. La validación exige un valor no vacío y no permite barras.

server_type
string
Copiar enlace directo

El contrato de API validado actualmente acepta SERVER_TYPE_RTMP.

server_active
boolean
Copiar enlace directo

Etiqueta en el panel: Activar tras crearlo.

Este valor representa el estado del servidor. Al desactivarlo, se desconectan todos los publicadores y receptores vinculados al servidor RTMP.

Ajustes de ejecución
server_port
integer
Copiar enlace directo

Etiqueta en el panel: Puerto.

El panel comienza con 1945. La API REST acepta puertos de 1 a 65535. Elige un puerto libre al que puedan acceder los publicadores y espectadores.

server_buflen
integer
Copiar enlace directo

Etiqueta en el panel: Duración del búfer (s).

Este valor se configura en segundos. El panel comienza con 5 y el intervalo admitido va de 1 a 120.

Este ajuste controla cuánto contenido almacena el reproductor en el búfer antes de iniciar la reproducción.

Control de acceso
stream_control_type
string
Copiar enlace directo

Sección del panel: Flujos permitidos.

Determina si el servidor RTMP valida los publicadores y receptores entrantes mediante una clave de flujo explícita o una lista de direcciones permitidas. El flujo de creación actual usa valores como CONTROL_ACCESS_STREAM_ID y CONTROL_ACCESS_IP_ADDRESS.

access_settings
array
Copiar enlace directo

Conjunto opcional de reglas de acceso que se crearán junto con el servidor.

En el modo de clave de flujo, cada elemento suele incluir stream_id y role_name. En el modo basado en IP, cada elemento utiliza host y role_name.

Crear servidor RTMP
Copiar código
curl --request POST \
--url http://localhost/api/rtmp-servers/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"server_name": "Live",
"server_type": "SERVER_TYPE_RTMP",
"server_port": 1945,
"server_buflen": 5,
"server_active": true
}'
Respuesta
Identidad y ejecución
_id
string
Copiar enlace directo

Id de recurso que se devuelve al crear o listar el servidor RTMP.

id
string
Copiar enlace directo

Alias práctico de _id.

server_name
string
Copiar enlace directo

Nombre guardado del servidor.

server_type
string
Copiar enlace directo

Tipo de servidor. El producto devuelve SERVER_TYPE_RTMP en producción.

server_port
string
Copiar enlace directo

Puerto de escucha RTMP devuelto por el producto.

server_buflen
integer
Copiar enlace directo

Duración configurada del búfer RTMP.

server_active
boolean
Copiar enlace directo

Indicador del estado de ejecución actual guardado en el objeto del servidor.

server_port_id
string
Copiar enlace directo

Documento del puerto asociado al servicio de escucha RTMP.

server_created
string
Copiar enlace directo

Marca de tiempo de creación.

server_modified
string
Copiar enlace directo

Marca de tiempo de la última modificación.

Control de acceso
stream_control_type
string
Copiar enlace directo

Modo de control de acceso guardado en el servidor RTMP, si se proporcionó.

access
array
Copiar enlace directo

Actualmente, la respuesta de create en producción devuelve este campo como una lista vacía, incluso si se enviaron valores en access_settings. Usa getById para obtener los registros de acceso relacionados ya completos.

Resultado de la operación
success
boolean
Copiar enlace directo

El modelo expone success: true como campo virtual en las respuestas correctas.

Respuesta: Crear servidor RTMP
JSON
Copiar código
{
"_id": "69c1fb0128c95839e0e022d5",
"__v": 0,
"access": [],
"server_active": true,
"server_buflen": 5,
"server_created": "2026-03-24T02:46:25.044Z",
"server_name": "Docs RTMP Server",
"server_port": "1945",
"server_type": "SERVER_TYPE_RTMP",
"server_user_id": "69360341db559495f643de6a",
"server_port_id": "69c1fb0128c95839e0e022d7",
"server_modified": "2026-03-24T02:46:25.056Z",
"id": "69c1fb0128c95839e0e022d5",
"success": true
}
POST
/api/rtmp-servers/getCount
Requiere token de API
POST
/api/rtmp-servers/getAll
Requiere token de API
POST
/api/rtmp-servers/getById
Requiere token de API
POST
/api/rtmp-servers/getStatistics
Requiere token de API
GET
/api/rtmp-servers/:serverPort/getStatisticHistory
Requiere token de API
POST
/api/rtmp-servers/update
Requiere token de API
POST
/api/rtmp-servers/start
Requiere token de API
POST
/api/rtmp-servers/stop
Requiere token de API
DELETE
/api/rtmp-servers/remove
Requiere token de API