Skip to content

Captura SDI

Panorama

A entrada SDI captura vídeo e áudio das portas SDI das placas DekTec. O sinal entra no sistema apenas por um cabo ligado a uma porta da placa, e o que estiver na outra ponta desse cabo — a régie, um roteador de vídeo, um receptor de satélite — é indiferente para a entrada. Não há suporte a placas que não sejam DekTec.

Placas e padrões suportados

São suportadas as placas DekTec. Os testes são feitos na DTA-2178 (HD e 12G até 3840×2160p50) e na DTA-2174B (HD). Outras placas DekTec com o mesmo driver não foram testadas.

O padrão do sinal é determinado pela própria placa, e a entrada não distingue SD, HD, 3G e 12G-SDI: o que chega adiante são quadros com a própria autodescrição — tamanho, varredura, frequência como número racional. Uma troca de padrão na linha é um reinício normal da captura, não um erro: é assim que aparece uma comutação no roteador de vídeo.

A distribuição das portas de uma placa é definida pela sua variante de firmware, não pelo número da porta. Quais placas estão na máquina, que portas elas têm e que sinal há nelas é o que mostra a seção Placas de captura.

As placas Blackmagic (DeckLink), Magewell e demais compatíveis com V4L não são suportadas por esta entrada.

Configurar a entrada

No streamer com a placa deve estar instalado o pacote dektec-bridge: ele traz o processo de captura e o sondador de placas. Sem ele a entrada falha com a causa «processo de captura indisponível», veja abaixo.

Crie um stream, abra a aba Fontes e clique em + Adicionar fonte. O protocolo é SDI (DekTec).

A seção de entrada SDI na ficha do stream

A placa é escolhida pelo número de série, não pelo índice no sistema: o índice muda quando as placas são trocadas de lugar e quando muda a ordem de carga do driver, e o stream passaria a capturar em silêncio um sinal alheio. A lista de placas é reunida a partir de todos os streamers do cluster, e a opção nomeia a placa por inteiro: modelo, variante de firmware e o streamer em que ela está instalada.

Escolher uma placa do inventário

Na lista de portas estão todas as portas do parque em que se pode conectar um cabo, agrupadas por placa: primeiro a placa escolhida e depois as demais. Dela faltam três classes de porta, porque de nenhuma delas há o que capturar:

  • genlock — uma entrada de referência;
  • a porta virtual — não há conector algum;
  • saída interna — o firmware liga a porta a uma porta vizinha da mesma placa.

Uma linha do grupo de outra placa troca a placa e a porta de uma vez: uma entrada passa para a placa vizinha com uma única escolha.

Uma porta de saída permanece na lista com o rótulo «não é entrada»: a placa nem sempre informa a direção corretamente, e um conector que existe no suporte é melhor mostrado com rótulo do que escondido. Escolher essa porta termina na falha «porta ocupada», veja abaixo.

Uma porta ocupada leva o rótulo do stream que a tomou e, se o processo de captura desse stream travou, também o seu estado: «Stream: tv1 · retida por um processo travado». Assim uma porta travada se distingue de uma ocupada normalmente.

Escolher uma porta

A lista é uma ajuda, não uma restrição: o número de série e a porta podem ser digitados à mão, e o formulário aceita tanto um número desconhecido quanto uma porta de saída. Isso importa quando a placa ainda não está instalada ou está em outro streamer: a lista de placas é atualizada uma vez por minuto e pode estar atrasada. Se não houver lista nenhuma (o streamer está calado ou o sondador não está instalado), os campos funcionam como campos de texto comuns.

Os demais campos da seção:

Campo Significado
Formato de pixel uyvy422 (8 bits, padrão) ou v210 (10 bits). Dez bits custam o dobro de banda dentro da cadeia e cerca de um terço a mais no barramento PCIe
Tempo de espera de abertura, ms quanto esperar por quadros antes de dar a fonte por morta; o mesmo valor é a janela de silêncio do socket. Vazio são 30 s
Trilha de marcas SCTE-104 ativada por padrão, ver abaixo
Trilhas de áudio o mapa do áudio embarcado, ver abaixo

Não esqueça de Salvar: a edição da entrada chega ao servidor apenas pelo botão.

Uma porta não pode ser atribuída a dois streams: a configuração é rejeitada, e o erro nomeia o stream que já ocupa a porta. Portas diferentes de uma mesma placa funcionam de forma independente: a exclusividade do driver vale para a porta, não para a placa.

Não há com que reproduzir o vídeo bruto da placa: enquanto o stream não tiver trilhas codificadas, HLS, DASH e o arquivo ficarão vazios. Para preenchê-los, ative o transcodificador.

A lista de trilhas é mostrada na aba Configurações básicas, no bloco Conteúdo do fluxo:

Trilhas de um stream alimentado por SDI

O codec nomeia a disposição no cabo, não aquilo em que o stream vai se transformar: v210 é vídeo bruto no formato de pixel escolhido, s32p é áudio não comprimido de 32 bits, scte104 é a trilha de marcas. O link Transcodificar para reproduzir na web leva às configurações do transcodificador.

Áudio multicanal

O áudio chega já distribuído em trilhas: o mapa de trilhas é declarado pela seção de entrada, e do desembarque cuida o processo de captura. A posição de uma trilha na lista é o seu número no stream (a1, a2, …).

Uma trilha tem três campos:

  • canais SDI — números de 1 a 16: o SDI leva no máximo oito pares, ou seja, dezesseis canais. A ordem dos números define a disposição de canais da trilha;
  • transporte — áudio não comprimido ou um invólucro SMPTE 337: áudio comprimido, por exemplo AC-3 ou Dolby E, empacotado em um par de canais PCM;
  • idioma — conforme ISO 639-2.

O idioma é declarado, não deduzido do sinal: o SDI não carrega descritores de idioma, e o único que sabe o idioma é quem distribuiu os programas pelos pares.

Uma lista de trilhas vazia não significa «não há áudio», e sim o padrão: uma trilha PCM estéreo do primeiro par.

O áudio não comprimido chega em 32 bits e é decodificado com o número de canais declarado. Uma trilha mais larga que estéreo é aceita honestamente, mas o codificador a dobra para estéreo — esse é o limite do transcodificador, não o da entrada.

Bypass de AC-3 por SMPTE 337

Uma trilha com transporte smpte337 chega como quadros AC-3 ou E-AC-3 prontos: o invólucro é retirado pelo processo de captura, e o servidor de mídia não analisa nem decodifica o fluxo de bits de áudio. Só há suporte a uma variante: SMPTE 337 codificado em dois canais. Essa trilha deve declarar exatamente dois canais, ou a configuração é rejeitada.

É assim que o 5.1 chega inteiro à saída. As lacunas de uma trilha comprimida — silêncio entre pacotes — são legítimas e não contam como erros.

O tipo de áudio é declarado, não detectado a partir dos dados: um par que hoje leva AC-3 e amanhã silêncio não deve mudar a lista de trilhas do stream.

Teletexto e legendas

Os dados auxiliares chegam no VANC de cada quadro, a área auxiliar acima da imagem, e a entrada os encaminha para o seu destino.

O teletexto OP-47 entra na cadeia comum de closed captions — pelo mesmo caminho que o OP-47 do ST 2110 e com o mesmo resultado: o teletexto e as legendas chegam à saída.

O teletexto VBI importa para os sistemas de transmissão SD legados. Em SD o teletexto não viaja num pacote ANC, e sim numa linha de apagamento — a área em que não se transmite imagem. A entrada envia essas linhas para a mesma cadeia do OP-47, e na saída elas se tornam o mesmo teletexto. Não há nada para configurar aqui.

Os closed captions CEA-608/708 (CDP) são analisados e contados pela entrada, mas ainda não são publicados como uma trilha à parte: o portador dos closed captions na cadeia é o SEI da saída codificada, e a inserção ali é comum a todas as entradas e ainda não foi feita. O contador existe para que «não há closed captions no sinal» e «não há onde entregar os closed captions» não pareçam iguais de fora.

Marcas SCTE-104

Os pacotes SCTE-104 do VANC saem numa trilha de aplicação à parte — brutos, com a marca de tempo do quadro que os transporta. A entrada não analisa o seu conteúdo e não os converte em SCTE-35: o processamento de marcas — substituição, compensação, inserção — ainda não existe no Mcaster.

A trilha vem ativada por padrão e existe desde o primeiro quadro, mesmo enquanto ainda não há marcas. Se aparecesse com a primeira marca, a lista de trilhas do stream mudaria bem no começo do bloco publicitário e o empacotamento reiniciaria. O MPEG-TS funciona do mesmo jeito: o PID das marcas é declarado na tabela muito antes da primeira mensagem. O preço do padrão é uma trilha vazia nos streams que não levam marcas.

O que se vê quando algo vai mal

O estado da entrada fica na aba Fontes, no bloco Saúde das fontes.

O estado de uma fonte SDI

O bloco mostra o status, o endereço da entrada na forma sdi://<número de série>/<porta> e a lista de trilhas. Em caso de falha, no lugar de «Funcionando» aparece a causa da tabela abaixo, e cada causa exige a sua própria ação:

Causa O que aconteceu O que fazer
sem sinal na porta não há sinal detectável verificar o cabo e a fonte
porta ocupada o driver negou a porta 1) olhar a direção da porta na seção Placas de captura: uma porta de saída responde com o mesmo código; 2) verificar se o próprio processo de captura travou; 3) só então procurar um processo alheio
processo de captura indisponível o binário não existe ou não inicia instalar o pacote dektec-bridge
falha do dispositivo o processo de captura saiu com um código diferente de zero sem significado próprio: número de série desconhecido, porta sem a capacidade necessária, falha de configuração a etapa é nomeada pelo evento de inicialização no log
o processo não morre não termina nem ao fechar sua entrada padrão nem com SIGKILL sinal de uma placa travada; resolve-se no host
processo morto de fora a captura foi morta pelo OOM killer, pelo systemd ou por uma pessoa descobrir quem encerrou o processo, em vez de consertar o stream
versões dessincronizadas o processo de captura envia dados, mas o servidor de mídia não os analisa as versões do dektec-bridge e do servidor de mídia divergiram; elas são implantadas juntas

Aqui não há falhas irreparáveis: depois de qualquer uma delas a entrada tenta se levantar de novo, com um intervalo crescente entre as tentativas, e se levanta sozinha assim que a causa desaparece.

Caso à parte é a perda de sinal em andamento. O processo de captura então não sai: ele continua entregando quadros no ritmo, repetindo o último quadro e silêncio, e para a verificação de vivacidade uma fonte com o cabo cortado parece perfeitamente saudável. Por isso a entrada, ao ver um «sem sinal» persistente, para de entregar quadros — do contrário um quadro congelado iria ao ar até que alguém interviesse. Daí em diante assume a fonte reserva, e a próxima retentativa levanta a captura assim que o sinal voltar.

O painel mostra a causa atual, não o histórico. O histórico está nos contadores do Prometheus com o prefixo stream_input_sdi_. Sempre existem:

  • o estado da linha;
  • os reinícios do processo de captura;
  • as perdas na fronteira entre processos, dos dois lados da fronteira.

A opção de licença «contadores estendidos» acrescenta os pacotes truncados e não analisados do processo de captura e a divisão do VANC.

O que o módulo não faz

  • Não envia sinal para uma placa: isto é uma entrada, e o Mcaster ainda não tem saída para SDI.
  • Não decodifica AC-3 nem Dolby E para PCM.
  • Não converte SCTE-104 em SCTE-35.
  • Não publica uma trilha de closed captions CEA-608/708.
  • Não vigia a saúde da placa: a temperatura, as rotações e a distribuição das portas são mostradas pela seção Placas de captura.

O que vem a seguir