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 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.

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.

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:

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 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¶
- Transcodificar o fluxo — o degrau após o qual um sinal bruto se reproduz e se grava.
- Placas de captura — o que há nas máquinas e o que há nas portas.
- Adicionar uma entrada reserva — uma segunda fonte e as regras de comutação.
- Erros de entrada — o que significam os contadores quando um sinal se degrada.