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

Retransmisiones

Usa Retransmisiones para distribuir simultáneamente una entrada en directo a plataformas de streaming y endpoints privados. Haz remux cuando los formatos coincidan; si no, transcodifica, cambia el tamaño, ajusta el audio o añade overlays.

Qué haceEnviar una fuente a otro destino

Elige este módulo cuandoUna fuente en directo debe llegar a otra plataforma o protocolo, con transcodificación, cambio de tamaño, audio u overlays opcionales.

Usa otro módulo cuandoUsa Rutas SRT para reenviar SRT o UDP sin cambios; usa Reproductores web para la audiencia.

1Selecciona la entrada2Define el destino3Inicia y supervisa
POST /api/restream/create
9 endpoints

Antes de empezar

Todos los métodos requieren un x-access-token válido. Crea primero los módulos de entrada referenciados y confirma que el destino acepta el protocolo, códec, resolución, bitrate y credenciales seleccionados.

Qué puedes hacer

  • create y update configuran la entrada, la salida, la transcodificación, las modificaciones multimedia y los overlays.
  • getAll, getCount y getById consultan los procesos.
  • start y stop controlan el pipeline en directo.
  • getStat devuelve el bitrate, la cadencia y el estado del proceso disponibles.
  • remove elimina un proceso.

Flujo de ejemplo

  1. Selecciona una entrada gestionada o una fuente por URL compatible.
  2. Define un destino RTMP, SRT, RIST u otro destino compatible.
  3. Activa la transcodificación o los cambios multimedia solo si la salida los necesita.
  4. Inicia el proceso y usa getStat para confirmar que la señal está circulando.
  5. Detén el proceso antes de cambiar las credenciales o los ajustes del destino.

Casos de uso habituales

  • Enviar una señal de contribución SRT a un destino de distribución RTMP.
  • Recibir o entregar una señal RIST dentro de un flujo de distribución en directo.
  • Transcodificar, cambiar el tamaño, ajustar el audio o añadir un overlay antes de la entrega.
  • Mantener estable la entrada mientras cambian los destinos downstream entre eventos.

Límites y resolución de problemas

Una retransmisión guardada puede tener la entrada offline o un destino que rechaza la conexión; comprueba su estado en directo después de iniciarla. La transcodificación requiere mucha más capacidad de CPU o GPU que el remux. Para entregar por RIST, usa una URL RIST compatible y una señal MPEG-TS, y comprueba en ambos extremos el perfil RIST y los ajustes de seguridad.

Siguientes pasos

Valida el destino y añade después supervisión o entrega en el navegador mediante Reproductores web cuando sea necesario.

Receta de solución REST

Enviar una entrada en directo a varios destinos

Crea un proceso de restream por destino desde la misma entrada verificada, inicia los procesos y supervisa cada salida por separado.

  1. Crear cada destinoReutiliza la entrada e indica el protocolo, las credenciales y la URL de cada destino.POST /api/restream/create
  2. Iniciar la entregaInicia cada proceso guardado cuando su fuente upstream esté estable.POST /api/restream/start
  3. Supervisar cada salidaCompara el bitrate y el estado por destino en lugar de tratar el fan-out como un único estado.POST /api/restream/getStat

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

Transcodificar un stream en directo para su destino

Crea un restream con el códec, bitrate, resolución o conversión de audio necesarios y confirma después el ritmo del proceso en sus estadísticas.

  1. Definir la transcodificaciónElige los presets de entrada y salida y configura solo los campos de procesamiento necesarios.POST /api/restream/create
  2. Iniciar el procesamientoInicia tras validar códecs, resolución, bitrate y credenciales del destino.POST /api/restream/start
  3. Comprobar el procesoObserva bitrate, cadencia y estado para detectar bloqueos o falta de capacidad.POST /api/restream/getStat

Activa solo el procesamiento que necesita el destino. La transcodificación consume mucha más CPU o GPU que el remuxing.

Receta de solución REST

Ejecutar playout continuo de un archivo hacia un destino en directo

Registra o sube el recurso, úsalo como entrada de archivo en bucle para un restream y supervisa la salida permanente.

  1. Preparar el archivoSube la fuente y conserva el id devuelto para la entrada de playout.POST /api/files/uploadFile
  2. Crear el playout en bucleUsa la entrada de archivo en bucle y configura el destino y el procesamiento necesarios.POST /api/restream/create
  3. Supervisar el canalComprueba el proceso y el bitrate de destino como parte del control continuo.POST /api/restream/getStat

El tipo de entrada en bucle verificado es INPUT_TYPE_FILE_VIDEO_INFINITY y input_module_id debe identificar un archivo gestionado existente.

POST
/api/restream/create
Requiere token de API

Crea un pipeline multimedia gestionado con origen, destino, transcodificación opcional, ajustes de audio o vídeo, overlays y estado activo inicial. Envía el JWT generado en el panel mediante la cabecera x-access-token.

Para una URL RIST, usa INPUT_TYPE_RIST_URL en input.input_type o OUTPUT_TYPE_RIST_URL en output.output_type. Una salida RIST envía MPEG-TS a output_stream_url.

Ejemplos de solicitud

Elige la plantilla que corresponda al origen y al destino y añade solo el procesamiento necesario.

Casos de uso habituales

  • Volver a publicar una señal de contribución en una red social o CDN.
  • Conectar SRT, RTMP, RIST, HLS u otro transporte compatible.
  • Transcodificar, añadir overlays o distribuir una fuente entre varias salidas.
Republicación en directo

Usa este preajuste para reenviar una contribución SRT entrante a un destino RTMP, como una plataforma social u otro destino RTMP administrado.

URL SRT a salida RTMP

Es el flujo de restream más habitual: recibe por SRT, mantén la transcodificación desactivada o al mínimo y envía el resultado a una salida RTMP.

URL SRT a salida RTMP
Copiar código
curl --request POST \
--url http://localhost/api/restream/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"restream_name": "SRT to RTMP social output",
"input": {
"input_type": "INPUT_TYPE_SRT_URL",
"application": "IO_APPLICATION_FFMPEG",
"input_stream_url": "srt://127.0.0.1:1935",
"input_stream_listen_port": {},
"input_settings": {},
"input_module_id": "",
"input_stream_id": "",
"entity_name": "SRT to RTMP social output",
"module_name": "MODULE_RESTREAM"
},
"transcoding": {
"video_transcoding": "Disabled",
"output_video_bitrate": 6000,
"preset": "ultrafast",
"tune": "Disabled",
"crf": "Disabled",
"pix_fmt": "Disabled",
"encoding_rate": "",
"filter_fps": "",
"gop": "Disabled",
"force_key_frames": 2,
"frame_width": "",
"frame_height": "",
"slices": "",
"cores": "",
"xlnx_hwdev": "0",
"audio_transcoding": "Disabled",
"output_audio_bitrate": 128,
"sample_rate": 44100
},
"output": {
"output_type": "OUTPUT_TYPE_OTHER_RTMP_URL",
"application": "IO_APPLICATION_FFMPEG",
"output_stream_url": "rtmp://a.rtmp.youtube.com/live2/example-stream-key",
"output_stream_listen_port": {},
"output_settings": {},
"output_stream_key": "",
"entity_name": "SRT to RTMP social output",
"module_name": "MODULE_RESTREAM"
},
"modify_audio": {
"type": "DISABLED",
"channel": "1,2",
"track": "0"
},
"modify_video": {
"type": "DISABLED"
},
"overlay": {
"type": "DISABLED",
"position": {
"x": 1,
"y": 1
}
},
"active": true
}'
Puente de transporte

Usa este preajuste cuando la tarea deba conectar una fuente SRT con otro destino SRT y conservar la canalización como un proceso administrado.

URL SRT a salida SRT

Resulta útil para desacoplar la entrada y la entrega sin sacarlas de una misma tarea de restream activa.

URL SRT a salida SRT
Copiar código
curl --request POST \
--url http://localhost/api/restream/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"restream_name": "SRT bridge to another SRT destination",
"input": {
"input_type": "INPUT_TYPE_SRT_URL",
"application": "IO_APPLICATION_FFMPEG",
"input_stream_url": "srt://127.0.0.1:1936",
"input_stream_listen_port": {},
"input_settings": {},
"input_module_id": "",
"input_stream_id": "",
"entity_name": "SRT bridge to another SRT destination",
"module_name": "MODULE_RESTREAM"
},
"transcoding": {
"video_transcoding": "Disabled",
"output_video_bitrate": 6000,
"preset": "ultrafast",
"tune": "Disabled",
"crf": "Disabled",
"pix_fmt": "Disabled",
"encoding_rate": "",
"filter_fps": "",
"gop": "Disabled",
"force_key_frames": 2,
"frame_width": "",
"frame_height": "",
"slices": "",
"cores": "",
"xlnx_hwdev": "0",
"audio_transcoding": "Disabled",
"output_audio_bitrate": 128,
"sample_rate": 44100
},
"output": {
"output_type": "OUTPUT_TYPE_SRT_URL",
"application": "IO_APPLICATION_FFMPEG",
"output_stream_url": "srt://127.0.0.1:2035",
"output_stream_listen_port": {},
"output_settings": {},
"output_stream_key": "",
"entity_name": "SRT bridge to another SRT destination",
"module_name": "MODULE_RESTREAM"
},
"modify_audio": {
"type": "DISABLED",
"channel": "1,2",
"track": "0"
},
"modify_video": {
"type": "DISABLED"
},
"overlay": {
"type": "DISABLED",
"position": {
"x": 1,
"y": 1
}
},
"active": true
}'
Comprobación de reproducción

Usa este preajuste para leer HLS como entrada y ejecutar la canalización multimedia con fines de monitorización, pruebas o medición, sin reenviar la salida a otro destino.

Entrada HLS sin destino de salida

Usa esta configuración para comprobaciones controladas de reproducción y flujos de sondeo creados a partir de una tarea de restream.

Entrada HLS sin destino de salida
Copiar código
curl --request POST \
--url http://localhost/api/restream/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"restream_name": "HLS playback probe",
"input": {
"input_type": "INPUT_TYPE_HLS_URL",
"application": "IO_APPLICATION_FFMPEG",
"input_stream_url": "https://example.com/live/index.m3u8",
"input_stream_listen_port": {},
"input_settings": {},
"input_module_id": "",
"input_stream_id": "",
"entity_name": "HLS playback probe",
"module_name": "MODULE_RESTREAM"
},
"transcoding": {
"video_transcoding": "Disabled",
"output_video_bitrate": 6000,
"preset": "ultrafast",
"tune": "Disabled",
"crf": "Disabled",
"pix_fmt": "Disabled",
"encoding_rate": "",
"filter_fps": "",
"gop": "Disabled",
"force_key_frames": 2,
"frame_width": "",
"frame_height": "",
"slices": "",
"cores": "",
"xlnx_hwdev": "0",
"audio_transcoding": "Disabled",
"output_audio_bitrate": 128,
"sample_rate": 44100
},
"output": {
"output_type": "OUTPUT_TYPE_DEV_NULL",
"application": "IO_APPLICATION_FFMPEG",
"output_stream_listen_port": {},
"output_settings": {},
"output_stream_key": "",
"entity_name": "HLS playback probe",
"module_name": "MODULE_RESTREAM"
},
"modify_audio": {
"type": "DISABLED",
"channel": "1,2",
"track": "0"
},
"modify_video": {
"type": "DISABLED"
},
"overlay": {
"type": "DISABLED",
"position": {
"x": 1,
"y": 1
}
},
"active": true
}'
Parámetros del cuerpo de la solicitud
Identidad
restream_name
string
Copiar enlace directo

Nombre legible de la tarea. El panel lo valida como campo obligatorio.

Pipeline
input
object
Copiar enlace directo

Definición de entrada creada con los controles InputSource del panel. Este objeto determina el transporte de origen o la conexión con otro módulo. Una entrada RIST mediante URL usa INPUT_TYPE_RIST_URL con input_stream_url.

output
object
Copiar enlace directo

Definición de salida creada con los controles OutputSource del panel. Este objeto determina dónde envía o expone el resultado la canalización. Una salida RIST mediante URL usa OUTPUT_TYPE_RIST_URL con output_stream_url; Callaba Engine emite MPEG-TS por esta ruta.

Procesamiento
transcoding
object
Copiar enlace directo

Perfil de transcodificación opcional de la canalización FFmpeg. El panel siempre envía este bloque, incluso cuando la transcodificación está desactivada.

modify_audio
object
Copiar enlace directo

Ajustes opcionales para modificar el audio. El panel envía un objeto en estado desactivado cuando no se solicita ninguna modificación.

modify_video
object
Copiar enlace directo

Ajustes opcionales para modificar el vídeo. Pueden permanecer desactivados en las tareas que dejan pasar la señal sin cambios.

overlay
object
Copiar enlace directo

Ajustes opcionales de superposición. El flujo de creación puede enviar explícitamente un objeto de superposición desactivado.

Runtime
active
boolean
Copiar enlace directo

Determina si la tarea queda activa después de aprovisionarla.

Crear retransmisión
Copiar código
curl --request POST \
--url http://localhost/api/restream/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"restream_name": "SRT to RTMP social output",
"input": {
"input_type": "INPUT_TYPE_SRT_URL",
"application": "IO_APPLICATION_FFMPEG",
"input_stream_url": "srt://127.0.0.1:1935",
"input_stream_listen_port": {},
"input_settings": {},
"input_module_id": "",
"input_stream_id": "",
"entity_name": "SRT to RTMP social output",
"module_name": "MODULE_RESTREAM"
},
"transcoding": {
"video_transcoding": "Disabled",
"output_video_bitrate": 6000,
"preset": "ultrafast",
"tune": "Disabled",
"crf": "Disabled",
"pix_fmt": "Disabled",
"encoding_rate": "",
"filter_fps": "",
"gop": "Disabled",
"force_key_frames": 2,
"frame_width": "",
"frame_height": "",
"slices": "",
"cores": "",
"xlnx_hwdev": "0",
"audio_transcoding": "Disabled",
"output_audio_bitrate": 128,
"sample_rate": 44100
},
"output": {
"output_type": "OUTPUT_TYPE_OTHER_RTMP_URL",
"application": "IO_APPLICATION_FFMPEG",
"output_stream_url": "rtmp://a.rtmp.youtube.com/live2/example-stream-key",
"output_stream_listen_port": {},
"output_settings": {},
"output_stream_key": "",
"entity_name": "SRT to RTMP social output",
"module_name": "MODULE_RESTREAM"
},
"modify_audio": {
"type": "DISABLED",
"channel": "1,2",
"track": "0"
},
"modify_video": {
"type": "DISABLED"
},
"overlay": {
"type": "DISABLED",
"position": {
"x": 1,
"y": 1
}
},
"active": true
}'
Respuesta
Identidad
_id
string
Copiar enlace directo

Id de recurso que se devuelve al crear o listar el proceso de restream.

id
string
Copiar enlace directo

Alias práctico de _id.

restream_name
string
Copiar enlace directo

Nombre guardado para la tarea de restream.

Pipeline
input[]
array
Copiar enlace directo

Objeto u objetos de entrada vinculados a la canalización, con sus relaciones cargadas.

output[]
array
Copiar enlace directo

Objeto u objetos de salida vinculados a la canalización, con sus relaciones cargadas.

Procesamiento
transcoding / modify_audio / modify_video / overlay
object
Copiar enlace directo

Ajustes de procesamiento guardados en el objeto de la tarea.

Runtime
active
boolean
Copiar enlace directo

Estado de activación actual de la tarea de restream.

created / modified
string
Copiar enlace directo

Marcas de tiempo administradas por el backend.

Resultado de la operación
success
boolean
Copiar enlace directo

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

Respuesta: Crear retransmisión
JSON
Copiar código
{
"_id": "65ff4d2997300f9385d32a90",
"id": "65ff4d2997300f9385d32a90",
"restream_name": "SRT to RTMP social output",
"input": [
{
"_id": "65ff4d2997300f9385d32a91",
"id": "65ff4d2997300f9385d32a91",
"input_type": "INPUT_TYPE_SRT_URL",
"application": "IO_APPLICATION_FFMPEG",
"input_stream_url": "srt://127.0.0.1:1935",
"input_settings": {},
"module_name": "MODULE_RESTREAM"
}
],
"output": [
{
"_id": "65ff4d2997300f9385d32a92",
"id": "65ff4d2997300f9385d32a92",
"output_type": "OUTPUT_TYPE_OTHER_RTMP_URL",
"application": "IO_APPLICATION_FFMPEG",
"output_stream_url": "rtmp://a.rtmp.youtube.com/live2/example-stream-key",
"output_settings": {},
"module_name": "MODULE_RESTREAM"
}
],
"transcoding": {
"video_transcoding": "Disabled",
"audio_transcoding": "Disabled",
"output_video_bitrate": 6000,
"output_audio_bitrate": 128,
"sample_rate": 44100
},
"modify_audio": {
"type": "DISABLED",
"channel": "1,2",
"track": "0"
},
"modify_video": {
"type": "DISABLED"
},
"overlay": {
"type": "DISABLED",
"position": {
"x": 1,
"y": 1
}
},
"active": true,
"module_name": "MODULE_RESTREAM",
"created": "2026-03-24T11:30:12.000Z",
"modified": "2026-03-24T11:30:12.000Z",
"success": true
}
POST
/api/restream/getCount
Requiere token de API
POST
/api/restream/getAll
Requiere token de API
POST
/api/restream/getById
Requiere token de API
POST
/api/restream/update
Requiere token de API
POST
/api/restream/start
Requiere token de API
POST
/api/restream/stop
Requiere token de API
DELETE
/api/restream/remove
Requiere token de API
POST
/api/restream/getStat
Requiere token de API