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

Reproductores web

Usa Reproductores web para publicar contenido en directo o grabado en el navegador con control de acceso, entrega adaptativa, embeds y URLs para espectadores.

Qué haceCrear reproducción en el navegador

Elige este módulo cuandoUna fuente en directo o grabada necesita una URL o embed HLS/DASH con acceso o pay-per-view.

Usa otro módulo cuandoUsa Multiview para operadores; usa Grupos de reproductores web cuando la audiencia necesita varios reproductores.

1Selecciona un stream2Crea el reproductor3Integra la reproducción
POST /api/vod/create
9 endpoints

Antes de empezar

Todos los métodos de gestión requieren un x-access-token válido. Prepara primero el recurso de entrada y decide si la reproducción será abierta, estará protegida por contraseña, formará parte de un grupo o estará vinculada a pay-per-view.

Qué puedes hacer

  • create y update configuran la entrada, el tipo de reproducción, el empaquetado, el bitrate adaptativo, el acceso, la agrupación y los ajustes de pay-per-view.
  • getAll, getCount y getById consultan los reproductores.
  • start y stop controlan la disponibilidad de la reproducción.
  • getStat devuelve el bitrate de entrada y la cadencia disponibles para el proceso del reproductor.
  • remove elimina un reproductor.

Flujo de ejemplo

  1. Crea un reproductor desde un servidor SRT, servidor RTMP u otra entrada multimedia compatible.
  2. Elige reproducción HLS o DASH y ajusta la duración de los segmentos y el bitrate adaptativo según la latencia y resiliencia necesarias.
  3. Aplica acceso abierto, mediante contraseña, por grupo o pay-per-view.
  4. Inicia el reproductor y comprueba getStat antes de probar la URL del espectador.
  5. Valida la reproducción y el embed en navegadores y redes representativos.

Casos de uso habituales

  • Publicar una señal de contribución SRT o RTMP como reproducción en directo embebida.
  • Proteger un stream de revisión para partners mediante credenciales de espectador.
  • Entregar un evento de pago mediante el acceso pay-per-view configurado.
  • Crear variantes por idioma dentro de un grupo de reproductores web.

Límites y resolución de problemas

Que la página cargue correctamente no demuestra que el proceso multimedia upstream esté estable; comprueba getStat. Los fragmentos más pequeños pueden reducir la latencia, pero aumentan el número de solicitudes y la sensibilidad a las variaciones de red. Prueba la autorización, el pago, la política de embed, los códecs y las variantes adaptativas antes de publicar.

Siguientes pasos

Abre el reproductor en un navegador, comprueba el acceso y la reproducción y usa después Grupos de reproductores web cuando los espectadores necesiten varias señales seleccionables.

Receta de solución REST

Publicar un archivo gestionado para reproducción web

Prepara el archivo, crea un reproductor con el preset de archivo adecuado y valida la reproducción HLS o DASH generada.

  1. Subir la fuenteCrea el archivo gestionado y conserva su id para la entrada del reproductor.POST /api/files/uploadFile
  2. Crear la reproducción VODElige el preset de archivo, el formato, la política de acceso y la presentación.POST /api/vod/create
  3. Iniciar y probar el reproductorInicia el recurso y prueba su URL en navegadores representativos.POST /api/vod/start

El reproductor es un recurso de entrega; gestiona el archivo por separado y comprueba autorización, códecs y reproducción antes de publicar la URL.

POST
/api/vod/create
Requiere token de API

Crea un reproductor web mediante POST /api/vod/create. Envía el JWT generado en el panel mediante la cabecera x-access-token.

La solicitud combina una entrada en directo con entrega HLS o DASH, bitrate adaptativo opcional, transcodificación, overlays, autorización de espectadores, pay-per-view, grupo y presentación.

Ejemplos de solicitud

Elige la plantilla correspondiente a la reproducción y política de acceso y añade solo los campos que necesite la experiencia del espectador.

Casos de uso habituales

  • Publicar un evento como HLS listo para el navegador.
  • Insertar un reproductor protegido por contraseña o autorización.
  • Preparar idiomas, ángulos o comentarios para una experiencia agrupada.

Después de iniciar un reproductor en directo, usa su URL y supervisa espectadores, bitrate y FPS.

Reproducción pública

Utiliza este preajuste cuando una fuente SRT gestionada deba convertirse en un endpoint público de reproducción en el navegador sin restricciones de acceso.

Servidor SRT a reproductor web público

Es la configuración más directa para ofrecer un reproductor en directo abierto en el navegador. La capa del reproductor se encarga del empaquetado y la reproducción, mientras la fuente continúa gestionada en el origen.

Servidor SRT a reproductor web público
Copiar código
curl --request POST \
--url http://localhost/api/vod/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"vod_name": "Main stage player",
"vod_type": "VOD_TYPE_LIVE_STREAM",
"input": {
"input_type": "INPUT_TYPE_SRT_SOFTWARE",
"input_module_id": "SRT_SERVER_ID",
"input_stream_id": "",
"entity_name": "Main stage player",
"module_name": "MODULE_VOD"
},
"authorization": {
"authorization_type": "VOD_PASSWORD_DISABLED",
"credentials": []
},
"adaptive_bitrate_settings": {
"input_resolution": "MAX_RESOLUTION_UNSET"
},
"hls_fragment_size": 3,
"hls_fragment_length": 60,
"dash_fragment_size": 3,
"dash_fragment_length": 60,
"initial_live_manifest_size": 4,
"live_sync_duration_count": 5,
"pay_per_view_settings": {
"type": "PAY_PER_VIEW_DISABLED",
"client_id": ""
},
"support_email": "",
"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
},
"modify_audio": {
"type": "DISABLED",
"channel": "1,2",
"track": "0"
},
"modify_video": {
"type": "DISABLED"
},
"overlay": {
"type": "DISABLED",
"position": {
"x": 1,
"y": 1
}
},
"active": true
}'
Servidor RTMP a reproductor web público

Así, el contrato de reproducción permanece estable aunque el transporte de entrada de la fuente siga siendo RTMP.

Servidor RTMP a reproductor web público
Copiar código
curl --request POST \
--url http://localhost/api/vod/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"vod_name": "RTMP browser player",
"vod_type": "VOD_TYPE_LIVE_STREAM",
"input": {
"input_type": "INPUT_TYPE_RTMP_SOFTWARE",
"input_module_id": "RTMP_SERVER_ID",
"input_stream_id": "",
"entity_name": "RTMP browser player",
"module_name": "MODULE_VOD"
},
"authorization": {
"authorization_type": "VOD_PASSWORD_DISABLED",
"credentials": []
},
"adaptive_bitrate_settings": {
"input_resolution": "MAX_RESOLUTION_UNSET"
},
"hls_fragment_size": 3,
"hls_fragment_length": 60,
"dash_fragment_size": 3,
"dash_fragment_length": 60,
"initial_live_manifest_size": 4,
"live_sync_duration_count": 5,
"pay_per_view_settings": {
"type": "PAY_PER_VIEW_DISABLED",
"client_id": ""
},
"support_email": "",
"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
},
"modify_audio": {
"type": "DISABLED",
"channel": "1,2",
"track": "0"
},
"modify_video": {
"type": "DISABLED"
},
"overlay": {
"type": "DISABLED",
"position": {
"x": 1,
"y": 1
}
},
"active": true
}'
Reproducción protegida

Utiliza este preajuste cuando el reproductor deba existir sin exponerse como página pública. El endpoint del navegador se genera, pero el acceso queda protegido mediante credenciales del reproductor.

Reproductor web protegido con contraseña

Es adecuado para revisiones con socios, pases internos, avances premium o cualquier caso en el que el control de acceso deba residir en la propia capa de reproducción.

Reproductor web protegido con contraseña
Copiar código
curl --request POST \
--url http://localhost/api/vod/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"vod_name": "Partner review player",
"vod_type": "VOD_TYPE_LIVE_STREAM",
"input": {
"input_type": "INPUT_TYPE_SRT_SOFTWARE",
"input_module_id": "SRT_SERVER_ID",
"input_stream_id": "",
"entity_name": "Partner review player",
"module_name": "MODULE_VOD"
},
"authorization": {
"authorization_type": "VOD_PASSWORD_ONLY_MANUALLY",
"credentials": [
{
"email": "[email protected]",
"password": "guest-password"
}
]
},
"adaptive_bitrate_settings": {
"input_resolution": "MAX_RESOLUTION_UNSET"
},
"hls_fragment_size": 3,
"hls_fragment_length": 60,
"dash_fragment_size": 3,
"dash_fragment_length": 60,
"initial_live_manifest_size": 4,
"live_sync_duration_count": 5,
"pay_per_view_settings": {
"type": "PAY_PER_VIEW_DISABLED",
"client_id": ""
},
"support_email": "",
"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
},
"modify_audio": {
"type": "DISABLED",
"channel": "1,2",
"track": "0"
},
"modify_video": {
"type": "DISABLED"
},
"overlay": {
"type": "DISABLED",
"position": {
"x": 1,
"y": 1
}
},
"active": true
}'
Reproducción agrupada

Utiliza este preajuste cuando un reproductor deba incorporarse a un grupo de endpoints relacionados, por ejemplo, para distintos idiomas, programas o vistas alternativas de un evento.

Reproductor asociado a un grupo

Los reproductores agrupados resultan útiles cuando la experiencia del navegador abarca más que una URL aislada y el espectador debe alternar entre variantes relacionadas.

Reproductor asociado a un grupo
Copiar código
curl --request POST \
--url http://localhost/api/vod/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"vod_name": "Main stage EN",
"vod_type": "VOD_TYPE_LIVE_STREAM",
"input": {
"input_type": "INPUT_TYPE_SRT_SOFTWARE",
"input_module_id": "SRT_SERVER_ID",
"input_stream_id": "",
"entity_name": "Main stage EN",
"module_name": "MODULE_VOD"
},
"authorization": {
"authorization_type": "VOD_PASSWORD_DISABLED",
"credentials": []
},
"adaptive_bitrate_settings": {
"input_resolution": "MAX_RESOLUTION_UNSET"
},
"hls_fragment_size": 3,
"hls_fragment_length": 60,
"dash_fragment_size": 3,
"dash_fragment_length": 60,
"initial_live_manifest_size": 4,
"live_sync_duration_count": 5,
"pay_per_view_settings": {
"type": "PAY_PER_VIEW_DISABLED",
"client_id": ""
},
"support_email": "",
"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
},
"modify_audio": {
"type": "DISABLED",
"channel": "1,2",
"track": "0"
},
"modify_video": {
"type": "DISABLED"
},
"overlay": {
"type": "DISABLED",
"position": {
"x": 1,
"y": 1
}
},
"active": true,
"group_settings": {
"group_id": "VOD_GROUP_ID",
"name": "English",
"selected": true
}
}'
Ajustes de entrega

Utiliza este preajuste cuando el navegador deba reproducir bitrate adaptativo en lugar de una única variante sin escalado.

Reproductor web preparado para ABR

El producto vincula el bitrate adaptativo con los ajustes de reproducción y la transcodificación. Es útil cuando la estabilidad del inicio y la adaptación de calidad para el espectador importan más que una única variante fija.

Reproductor web preparado para ABR
Copiar código
curl --request POST \
--url http://localhost/api/vod/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"vod_name": "ABR main stage player",
"vod_type": "VOD_TYPE_LIVE_STREAM",
"input": {
"input_type": "INPUT_TYPE_SRT_SOFTWARE",
"input_module_id": "SRT_SERVER_ID",
"input_stream_id": "",
"entity_name": "Main stage player",
"module_name": "MODULE_VOD"
},
"authorization": {
"authorization_type": "VOD_PASSWORD_DISABLED",
"credentials": []
},
"adaptive_bitrate_settings": {
"input_resolution": "1080"
},
"hls_fragment_size": 3,
"hls_fragment_length": 60,
"dash_fragment_size": 3,
"dash_fragment_length": 60,
"initial_live_manifest_size": 4,
"live_sync_duration_count": 5,
"pay_per_view_settings": {
"type": "PAY_PER_VIEW_DISABLED",
"client_id": ""
},
"support_email": "",
"transcoding": {
"video_transcoding": "libx264",
"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": "aac",
"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
}'
Parámetros del cuerpo de la solicitud
Identidad
vod_name
string
Copiar enlace directo

Etiqueta del panel: Nombre del reproductor.

Nombre descriptivo del endpoint de reproducción. El formulario de creación requiere este campo.

vod_type
string
Copiar enlace directo

Tipo de reproductor. El flujo predeterminado para emisiones en directo utiliza VOD_TYPE_LIVE_STREAM; el producto también admite modalidades bajo demanda.

vod_media_type
string
Copiar enlace directo

Descriptor de tipo multimedia opcional almacenado en el objeto reproductor.

Entrada
input
object
Copiar enlace directo

Etiqueta del panel: Tipo de entrada.

Definición de entrada creada a partir del formulario común de fuentes. Las entradas del producto incluyen servidores SRT, servidores RTMP, rutas SRT y fuentes en directo mediante URL.

Entrega de reproducción
adaptive_bitrate_settings
object
Copiar enlace directo

Ajustes de bitrate adaptativo del reproductor. El producto utiliza input_resolution como criterio principal de entrega y vincula ABR con la capa de transcodificación.

hls_fragment_size
integer
Copiar enlace directo

Etiqueta del panel: Tamaño del fragmento HLS.

La interfaz recomienda 3 segundos para obtener una buena experiencia HLS.

hls_fragment_length
integer
Copiar enlace directo

Etiqueta del panel: Duración del fragmento HLS.

La interfaz recomienda 60 segundos.

dash_fragment_size / dash_fragment_length
mixed
Copiar enlace directo

Controles de tamaño y duración de los fragmentos DASH guardados con el objeto del reproductor.

initial_live_manifest_size
integer
Copiar enlace directo

Etiqueta del panel: Cantidad mínima de fragmentos HLS.

Define cuántos fragmentos se precargan antes de comenzar la reproducción.

live_sync_duration_count
integer
Copiar enlace directo

Etiqueta del panel: Margen respecto al directo.

Define a cuántos fragmentos del más reciente debe comenzar la reproducción en directo.

Acceso y grupos
authorization
object
Copiar enlace directo

Ajustes de autorización del reproductor. La interfaz los utiliza para exigir que el espectador se autentique antes de abrir el reproductor web.

group_settings
object
Copiar enlace directo

Bloque opcional de asignación a un grupo con group_id, el name visible dentro del grupo y el estado predeterminado selected.

pay_per_view_settings
object
Copiar enlace directo

Bloque opcional de monetización. Para la mayoría de los reproductores, el estado deshabilitado continúa siendo el valor predeterminado.

Presentación
cover_path / logo_path / useCustomLogo / useCustomBackground
mixed
Copiar enlace directo

Ajustes opcionales de presentación e identidad visual del reproductor mostrado en el navegador.

event_date / timeZone / eventDateStatus / support_email
mixed
Copiar enlace directo

Metadatos opcionales de evento y soporte almacenados con el objeto reproductor.

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

Bloques opcionales de procesamiento multimedia para los casos en que el reproductor necesite más que un simple empaquetado sin cambios.

Runtime
active
boolean
Copiar enlace directo

Etiqueta del panel: Habilitar después de crear.

Define si el reproductor debe quedar activo inmediatamente después de crearlo.

Crear reproductor web
Copiar código
curl --request POST \
--url http://localhost/api/vod/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"vod_name": "Main stage player",
"vod_type": "VOD_TYPE_LIVE_STREAM",
"input": {
"input_type": "INPUT_TYPE_SRT_SOFTWARE",
"input_module_id": "SRT_SERVER_ID",
"input_stream_id": "",
"entity_name": "Main stage player",
"module_name": "MODULE_VOD"
},
"authorization": {
"authorization_type": "VOD_PASSWORD_DISABLED",
"credentials": []
},
"adaptive_bitrate_settings": {
"input_resolution": "MAX_RESOLUTION_UNSET"
},
"hls_fragment_size": 3,
"hls_fragment_length": 60,
"dash_fragment_size": 3,
"dash_fragment_length": 60,
"initial_live_manifest_size": 4,
"live_sync_duration_count": 5,
"pay_per_view_settings": {
"type": "PAY_PER_VIEW_DISABLED",
"client_id": ""
},
"support_email": "",
"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
},
"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 reproductor web.

id
string
Copiar enlace directo

Alias de acceso directo para _id.

vod_name
string
Copiar enlace directo

Nombre almacenado para el objeto reproductor.

vod_type / vod_media_type
mixed
Copiar enlace directo

Tipo de reproductor y campos de tipo de medios guardados en el objeto.

Entrega de reproducción
vod_port
integer
Copiar enlace directo

Puerto interno generado que utiliza el proceso de entrega del reproductor.

Entrada
input[]
array
Copiar enlace directo

Objeto u objetos de entrada vinculados que utiliza el flujo de reproducción.

Entrega de reproducción
adaptive_bitrate_settings / hls_fragment_* / dash_fragment_*
mixed
Copiar enlace directo

Ajustes de reproducción y entrega guardados en el objeto del reproductor.

Acceso y grupos
authorization / pay_per_view_settings / group_id / users
mixed
Copiar enlace directo

Estado de acceso, monetización, grupo y autorización de espectadores guardado en el reproductor.

Presentación
hidden / support_email / logo / background fields
mixed
Copiar enlace directo

Ajustes de presentación y visibilidad devueltos con el objeto reproductor.

Runtime
active
boolean
Copiar enlace directo

Indicador del estado de ejecución actual del reproductor.

created / modified
string
Copiar enlace directo

Marcas de tiempo gestionadas por el backend.

Resultado de la operación
success
boolean
Copiar enlace directo

El modelo expone success: true como un campo virtual en respuestas exitosas.

Respuesta: Crear reproductor web
JSON
Copiar código
{
"_id": "66015d2997300f9385d32c00",
"id": "66015d2997300f9385d32c00",
"vod_name": "Main stage player",
"vod_type": "VOD_TYPE_LIVE_STREAM",
"vod_media_type": "video",
"vod_port": 20840,
"input": [
{
"_id": "66015d2997300f9385d32c01",
"id": "66015d2997300f9385d32c01",
"input_type": "INPUT_TYPE_SRT_SOFTWARE",
"input_module_id": "SRT_SERVER_ID",
"input_stream_id": "",
"entity_name": "Main stage player",
"module_name": "MODULE_VOD"
}
],
"authorization": {
"authorization_type": "VOD_PASSWORD_DISABLED",
"credentials": []
},
"adaptive_bitrate_settings": {
"input_resolution": "MAX_RESOLUTION_UNSET"
},
"hls_fragment_size": 3,
"hls_fragment_length": 60,
"dash_fragment_size": 3,
"dash_fragment_length": 60,
"initial_live_manifest_size": 4,
"live_sync_duration_count": 5,
"pay_per_view_settings": {
"type": "PAY_PER_VIEW_DISABLED",
"client_id": ""
},
"group_id": null,
"users": [],
"hidden": false,
"support_email": "",
"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
},
"modify_audio": {
"type": "DISABLED",
"channel": "1,2",
"track": "0"
},
"modify_video": {
"type": "DISABLED"
},
"overlay": {
"type": "DISABLED",
"position": {
"x": 1,
"y": 1
}
},
"active": true,
"created": "2026-03-24T14:00:00.000Z",
"modified": "2026-03-24T14:00:00.000Z",
"success": true
}
POST
/api/vod/getCount
Requiere token de API
POST
/api/vod/getAll
Requiere token de API
POST
/api/vod/getById
Requiere token de API
POST
/api/vod/update
Requiere token de API
POST
/api/vod/start
Requiere token de API
POST
/api/vod/stop
Requiere token de API
DELETE
/api/vod/remove
Requiere token de API
POST
/api/vod/getStat
Requiere token de API