Stream con una fuente MPEG-DASH¶
Un stream de Catena puede tirar de una fuente servida como manifiesto MPEG-DASH: el streamer sigue el manifiesto como un reproductor cualquiera, descarga los segmentos según aparecen y entrega sus fotogramas más adelante — al transcodificador, al archivo y a la entrega. Así se toma la señal de un socio, de una CDN ajena o de un equipo que no sirve nada más que DASH.
Esta página trata de aquello en lo que DASH se diferencia de las demás fuentes. El funcionamiento general de las fuentes está en la página Stream con una fuente externa; varias fuentes con prioridades, en Reserva de fuentes.
Añada la fuente¶
Abra la página del stream, vaya a la pestaña Fuentes, pulse + Añadir fuente y elija el protocolo MPEG-DASH. Escriba la dirección del manifiesto en el campo URL y pulse Guardar:

La dirección es un enlace corriente al manifiesto, http://…/manifest.mpd o https://…/manifest.mpd; el streamer reconoce el manifiesto por sí mismo. Si su fuente sirve el manifiesto en una dirección sin el sufijo .mpd, escríbala con el esquema dash:// (o dashs:// para HTTPS) — es la misma captura, solo que dicha explícitamente.
Unos segundos después la tarjeta de salud de la fuente muestra el estado Funcionando y las pistas reconocidas — el streamer está siguiendo el manifiesto:

Qué hace el streamer con el manifiesto¶
- La captura empieza en el borde en vivo. Todo lo que había en la ventana de desplazamiento de la fuente en el momento de la conexión es historia, y no se descarga. Por la misma razón el streamer no recupera lo perdido tras un corte: un minuto de parada sigue siendo un minuto en lugar de llegar de golpe al aire.
- El periodo de actualización del manifiesto lo dicta la fuente. El streamer relee el manifiesto con la frecuencia que el propio manifiesto declara (
minimumUpdatePeriod); no hay ajuste para ello, ni debe haberlo — imponer un valor propio sobre el ajeno compra o tráfico de más o segmentos perdidos. - Un periodo nuevo en el manifiesto es una discontinuidad de la línea de tiempo. Un corte publicitario, un blackout y un cambio de perfil de codificación son indistinguibles desde fuera: el streamer anuncia una discontinuidad y relee la descripción de las pistas.
- La fuente puede mudarse. Si el manifiesto trae un elemento
Location, las siguientes actualizaciones van a la nueva dirección — así se reparten las sesiones; la dirección en los ajustes del stream no cambia. - El tiempo de la fuente ya es tiempo de calendario. DASH ancla los segmentos a UTC por el propio protocolo, así que el archivo y el rebobinado caen en la escala de calendario sin adivinar nada del reloj de pared.
- El fin de la emisión termina la captura. Cuando la fuente cierra la emisión, el streamer entrega los segmentos restantes y deja de consultar el manifiesto.
Los campos de la fuente¶
Un campo vacío significa el valor por defecto del servidor — rellene solo lo que realmente necesite cambiar.
| Campo | Qué hace |
|---|---|
| URL | La dirección del manifiesto de la fuente |
| Bitrate de la representación (bit/s) | Qué representación tomar: la más cercana por debajo del número indicado. Vacío — la superior del conjunto |
| Capturar toda la escalera | Tomar todas las representaciones del conjunto en vez de una — véase más abajo |
| Umbral de desfase (ms) | Cuánto pueden separarse las representaciones antes de que la escalera se considere desfasada |
| Si las representaciones se desfasan | Qué hacer ante ese veredicto |
| Tiempo de conexión (ms) | Cuánto esperar a que se establezca la conexión con la fuente; por defecto, 5000 |
| Tiempo del cuerpo (ms) | Cuánto esperar el cuerpo de la respuesta; por defecto, 15000 |
| Límite del cuerpo (bytes) | Un tope para una sola respuesta: una respuesta erróneamente enorme no agotará la memoria del streamer |
| Tiempo de espera del par (ms) | Cuánto esperar fotogramas antes de dar la fuente por perdida |
| Cabeceras de las peticiones | Cabeceras HTTP adicionales, ante todo Authorization. Van con el manifiesto y con los segmentos; los valores nunca llegan a los logs |
| Claves ClearKey | Claves para una fuente protegida — véase más abajo |
Los dos últimos campos son listas de pares: una cabecera entra en el documento en cuanto tiene nombre.
Una representación o toda la escalera¶
Por defecto el stream toma una representación — la superior por bitrate declarado o, si se rellena Bitrate de la representación, la más cercana por debajo. Ese valor por defecto es deliberado: capturar toda la escalera multiplica tanto el tráfico entrante como el número de pistas del stream, y acorta el archivo en los mismos discos en la misma proporción.
La casilla Capturar toda la escalera activa la captura de todas las representaciones del conjunto. La quiere cuando la fuente ya sirve una escalera de calidades terminada y no tiene sentido transcodificarla de nuevo — el stream entrega a los espectadores exactamente lo que tomó.
Una escalera ya hecha trae su propio problema: las representaciones llegan como ficheros independientes y con el tiempo pueden separarse, y un reproductor que cambia de calidad da un tirón en esa costura. El streamer mide el desfase continuamente, lo compara con el campo Umbral de desfase (ms) y actúa según diga el campo Si las representaciones se desfasan:
- Mantener la escalera y mostrar el desfase — el valor por defecto: la captura continúa y el desfase se ve en las estadísticas del stream y en el log.
- Volver a una sola representación — la captura se reinicia con una representación. La vuelta atrás ocurre una sola vez en la vida de la fuente; de otro modo cada reinicio levantaría la escalera otra vez y volvería a tropezar con ella.
El streamer decide de qué se compone la escalera una sola vez, al conectarse. Una representación que aparezca en el manifiesto más tarde solo se recoge cuando la entrada se reinicia — por ejemplo, tras editar sus ajustes.
Fuente protegida y claves ClearKey¶
Si el manifiesto declara protección de contenido y no hay claves puestas, la fuente se rechaza con un error que nombra el esquema de protección. Es deliberado: los segmentos cifrados se analizan como estructura y dan fotogramas de basura en lugar de imagen, y sin un rechazo explícito la avería se busca en el códec.
Para tomar una fuente así, rellene el bloque Claves ClearKey con pares Identificador de clave — Clave. Ambas mitades se escriben como cadenas hexadecimales, y el identificador se acepta también como UUID con guiones. El streamer descifra los segmentos con el esquema cenc y luego trabaja con ellos como con los normales.
Lo que aquí no hay ni habrá es hablar con servidores de licencias de Widevine, PlayReady y FairPlay: necesitan un entorno de ejecución de confianza en el dispositivo del espectador, y un streamer no lo tiene. Sus declaraciones junto al esquema cenc en el manifiesto no estorban a la captura y simplemente se ignoran.
La clave se considera un secreto: no llega a los logs y la API la devuelve sustituida. El identificador de clave no es un secreto — está en el manifiesto en texto claro y hace falta para el diagnóstico.
Cifrar lo que el stream entrega a los espectadores es otra tarea y otro ajuste: Cifrado de la entrega.
Lo que la captura no hace¶
- Solo direccionamiento por plantilla de segmentos.
SegmentListySegmentBaseno están soportados; una fuente así se rechaza con un error que nombra qué se encontró exactamente en el manifiesto. - Solo contenedores fMP4. El streamer no espera nada más dentro de los segmentos DASH y no intenta adivinarlo.
- Los subtítulos no se capturan. Los conjuntos de tipo
textse omiten, y queda constancia en el log. - Una grabación no será una fuente. Un manifiesto estático es VOD, no una emisión; se rechaza con una razón explícita. Los ficheros viven en el catálogo VOD.
Si la fuente no arranca¶
- La razón nombra un esquema de protección. La fuente está cifrada — rellene las claves ClearKey.
- La razón nombra
SegmentListoSegmentBase. La fuente no está direccionada por plantilla de segmentos; la captura no soporta ese manifiesto. - La razón nombra un manifiesto estático. Ha dado un enlace a una grabación en vez de a una emisión.
- Responde
401o403. La fuente exige autorización — añada una cabeceraAuthorizationen Cabeceras de las peticiones. - El manifiesto se actualiza, pero no hay fotogramas. Así se ve un manifiesto que quedó tras una emisión muerta: el tiempo avanza, las direcciones se calculan y las peticiones de segmentos responden
404. El stream rematará esa fuente por el tiempo de espera del par. Para distinguir los dos casos use el diagnóstico de la fuente: la hora de la última actualización del manifiesto y la hora de la última entrega de fotogramas se cuentan por separado. - Los segmentos responden
404justo tras el arranque. En DASH el momento en que un segmento pasa a estar disponible se calcula por el reloj, así que un desfase entre el reloj del streamer y el de la fuente rompe la captura. Compruebe la sincronización horaria en la máquina del streamer. - El stream no arranca y la razón nombra el límite de captura DASH. Su licencia no tiene sitio para esta entrada — se cuenta aparte de HLS. Hable con su gerente para ampliar la licencia.