Configuración de la salida MPEG-TS¶
Todas las salidas MPEG-TS de un stream — la reproducción por HTTP, SRT, los pushes por UDP, SRT y RIST — las produce un único multiplexor. La sección mpegts del stream configura sus tablas de servicio: el número de programa, los PID de las pistas y la descripción del servicio en la SDT. La misma sección en un canal de salida individual anula esos valores solo para ese canal: distintos receptores reciben el mismo stream bajo números de programa y PID diferentes.
La sección mpegts del stream¶
streams:
- name: tv1
inputs:
- udp: {host: 239.0.0.1, port: 5000}
mpegts:
pnr: 1030
pmt_pid: 1000
service_name: TV One
provider_name: Example Media
pids:
v1: 1011
a1: 1012
Todos los parámetros son opcionales; un campo sin definir significa el valor por defecto del servidor:
| Parámetro | Qué define | Por defecto |
|---|---|---|
pnr |
número de programa: la entrada en la PAT, program_number en la PMT y service_id en la SDT |
1 |
pmt_pid |
el PID de la tabla PMT | se asigna automáticamente |
pids |
PID explícitos de las pistas por nombre: v1, a1, … |
se asignan automáticamente |
service_name |
el nombre del servicio en la SDT | el nombre del stream |
provider_name |
el nombre del proveedor en la SDT | cadena vacía |
ts_stream_id |
transport_stream_id en la PAT y en la cabecera de la SDT |
1 |
onid |
original_network_id en la cabecera de la SDT |
1 |
Reglas que se comprueban al guardar la configuración:
- los PID deben estar en el rango 32–8190: los valores inferiores están reservados para las tablas de servicio, los superiores, para los paquetes nulos;
- los PID duplicados dentro de la sección se rechazan, incluido un PID de pista igual a
pmt_pid; pnrnunca es cero — el número de programa cero en la PAT está reservado para la NIT;- los nombres del servicio y del proveedor juntos están limitados para que la SDT quepa en un solo paquete TS.
Una entrada en pids para una pista que el stream no tiene ahora mismo es válida: surte efecto cuando la pista aparece. Si un PID configurado explícitamente choca con el PID asignado automáticamente a otra pista, gana el valor explícito y la pista desplazada se muda de forma determinista a un PID libre — con un aviso en el log.
SDT¶
Junto con la PAT y la PMT, la salida lleva una tabla SDT (PID 0x11): un único servicio de tipo digital television, service_id igual a pnr, y los nombres de servicio y proveedor tomados de la sección mpegts. Las cadenas se codifican según DVB: la latina se envía tal cual y todo lo demás como UTF-8 con la codificación declarada, por eso los receptores leen correctamente los nombres no latinos.
Al cambiar la configuración, se incrementan las versiones de las tablas PAT/PMT/SDT afectadas y los receptores recogen las nuevas como corresponde. La edición de la sección mpegts se aplica en caliente: los pushes y los clientes conectados no se reconectan.
Configuración propia por canal¶
Los canales de salida individuales aceptan la misma sección mpegts:
- un push por UDP, SRT o RIST — RTMP no tiene MPEG-TS, por eso la sección no se combina con el transporte
rtmp; srt_play— la reproducción SRT desde el puerto dedicado del stream.
streams:
- name: tv1
inputs:
- udp: {host: 239.0.0.1, port: 5000}
mpegts:
pnr: 1030
service_name: TV One
srt_play:
port: 4010
mpegts:
pnr: 200
pushes:
local-multicast:
udp:
host: 239.1.1.1
port: 5500
mpegts:
pnr: 300
pids:
v1: 211
a1: 221
La sección del canal se fusiona sobre la del stream campo a campo: un valor definido en el canal prevalece sobre el del stream, y uno sin definir se hereda. La excepción es el mapa pids: es un único campo, y un mapa no vacío del canal sustituye íntegramente al del stream — no hay fusión por pista.
La sobrescritura está disponible solo para los canales que el propio stream envía. La reproducción MPEG-TS por HTTP y el puerto SRT compartido del servidor sirven siempre la salida común del stream, con la configuración del nivel de stream.
Cómo funciona¶
Para un canal con ajustes propios no se arranca un segundo multiplexor. El canal recibe una copia de la salida común en la que solo se reescriben las tablas de servicio y los PID de los paquetes: la disposición temporal de los paquetes, el PCR y los contadores de continuidad del multiplex común se conservan, por eso las propiedades CBR de la salida se cumplen también para los canales sobrescritos. Los canales con la misma configuración efectiva comparten un stream idéntico byte a byte — cien pushes iguales cuestan lo mismo que uno.
La versión de tablas de una salida reescrita se lleva según su propia historia de cambios y nunca se copia de la salida común.