Skip to content

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;
  • pnr nunca 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.

Qué viene después