Skip to content

Recepção de MXL

O MXL (Media eXchange Layer) é a camada de intercâmbio da arquitetura DMF (Dynamic Media Facility): as funções de mídia vizinhas — decodificadores, misturadores, CG — gravam mídia sem compressão num diretório compartilhado, e os consumidores a retiram dali sem rede e sem cópias. O Mcaster lê esse diretório como uma fonte de stream comum: as pistas entram no processamento, são transcodificadas e saem pelos mesmos meios que o sinal de um satélite ou de SRT.

Assim como o ST 2110, a entrada transporta mídia sem compressão, mas o transporte é outro: não é multidifusão IP, mas arquivos num diretório de uma máquina compartilhada. Nenhum preparo de rede é necessário: basta uma pasta na qual os publicadores gravem.

O que são um domínio e um fluxo

O diretório no qual as funções de mídia gravam chama-se domínio. Dentro dele, cada pista lógica é o seu próprio subdiretório de fluxo com nome de UUID: 5fbec3b1-….mxl-flow. Um fluxo carrega uma descrição de si mesmo (flow_def.json, em formato NMOS), um cabeçalho com o estado do gravador e slots de dados; o leitor sonda o cabeçalho e recolhe os quadros conforme aparecem. Num domínio pode haver qualquer número de gravadores e leitores, sem se conhecerem.

Um domínio carrega um programa: há um único fluxo de vídeo e pode haver vários de áudio. A entrada pega o primeiro fluxo de vídeo e o primeiro de áudio que encontra; escolher um fluxo pelo nome não é possível na versão atual.

Dois tipos de mídia são lidos:

  • video/v210 — vídeo sem compressão de 10 bits 4:2:2 no empacotamento v210; o tamanho e a taxa de quadros vêm da descrição do fluxo.
  • audio/float32 — áudio sem compressão de vírgula flutuante, um plano por canal.

Os demais formatos — vídeo com canal alfa (video/v210a), dados auxiliares ANC — são ignorados com um registro no diário: a sua disposição ainda não é lida.

Configurar a entrada

Crie um stream e pressione + Adicionar fonte na aba Fontes. Escolha o protocolo MXL.

A entrada MXL: o domínio e o tempo limite do par

A entrada tem dois campos:

  • Domínio MXL — o caminho para o diretório do domínio na máquina do streamer, por exemplo /dev/shm/mxl. É um diretório local, não um endereço de rede: o streamer e os publicadores devem ver a mesma pasta.
  • Tempo limite do par (ms) — quanto esperar por novos quadros antes de declarar a fonte morta. Por padrão, 30 segundos.

As pistas sem compressão não se segmentam sozinhas: como no 2110 e no SDI, planeje um transcodificador — uma saída H.264/AAC para entrega OTT, ou uma saída RAW para SDI.

A capacidade é licenciada

A captura de MXL é vendida como a posição media_ingest da grade tarifária e é limitada pela licença, não pela compilação: a seção de entrada existe em qualquer instalação, mas sem essa capacidade na licença os seus campos ficam inativos e destacados com uma explicação. O número de entradas mxl é contado pela configuração — uma por stream com tal entrada.

Como a entrada se comporta em funcionamento

  • Borda ao vivo. O anel de slots é finito, e um leitor atrasado perde os quadros antigos: a entrada salta para os recentes e continua, e a falha aparece como um salto nas marcas de tempo. Não é um erro — um programa ao vivo vale mais que a continuidade.
  • Quadros corrompidos são ignorados. Um gravador pode marcar um quadro como inválido ou deixá-lo inacabado; tal quadro nunca se torna pista do stream, a entrada simplesmente segue em frente.
  • Um gravador silencioso é coberto pelo tempo limite do par: a entrada recebe um erro e o stream reinicia pelas regras comuns — igual a qualquer outra fonte.

Experimentar a entrada sem hardware

O MXL não precisa de placa nem de rede de mídia: um publicador de demonstração vem com o SDK aberto. Clone dmf-mxl/mxl e compile as ferramentas seguindo docs/Building.md desse repositório — você precisa do mxl-gst-testsrc; as descrições prontas de fluxos de teste estão em examples/flow-configs/ do mesmo repositório. Para um passeio guiado pelo MXL como um todo existe o workshop mxl-hands-on.

O publicador grava no domínio um programa de teste — barras SMPTE com relógio correndo e um tom estéreo:

mkdir -p /dev/shm/mxl
mxl-gst-testsrc -d /dev/shm/mxl \
  -v examples/flow-configs/flow-video-v210.json \
  -a examples/flow-configs/flow-audio.json

O diretório do domínio deve ser visível tanto para o publicador quanto para a máquina com o Mcaster: numa mesma máquina é simplesmente um caminho compartilhado; entre contêineres, um volume montado.

O que você verá no Mcaster:

  1. Crie um stream, pressione + Adicionar fonte na aba Fontes e escolha o protocolo MXL. Preencha o Domínio MXL com o caminho — /dev/shm/mxl — e salve o stream.
  2. Assim que a entrada abre, aparece no cartão do stream um bloco de pistas de entrada: v210 1920×1080 e fltp 48 kHz — a recepção começou.
  3. Ative o transcodificador (H.264/AAC): ao lado aparece um bloco de pistas de saída, e o stream abre por HLS em qualquer reprodutor — barras, relógio correndo, som.

Cartão do stream: v210 e fltp de entrada, H.264 e AAC de saída