Stream com uma fonte MPEG-DASH¶
Um stream do Catena consegue puxar uma fonte servida como manifesto MPEG-DASH: o streamer segue o manifesto como um reprodutor comum, baixa os segmentos conforme eles aparecem e entrega os quadros adiante — ao transcodificador, ao arquivo e à entrega. É assim que se pega o sinal de um parceiro, de uma CDN alheia ou de um equipamento que não serve nada além de DASH.
Esta página trata daquilo em que o DASH difere das demais fontes. O funcionamento geral das fontes está na página Stream com uma fonte externa; várias fontes com prioridades, em Reserva de fontes.
Adicione a fonte¶
Abra a página do stream, vá para a aba Fontes, pressione + Adicionar fonte e escolha o protocolo MPEG-DASH. Escreva o endereço do manifesto no campo URL e pressione Salvar:

O endereço é um link comum para o manifesto, http://…/manifest.mpd ou https://…/manifest.mpd; o streamer reconhece o manifesto sozinho. Se a sua fonte serve o manifesto em um endereço sem o sufixo .mpd, escreva-o com o esquema dash:// (ou dashs:// para HTTPS) — é a mesma captura, apenas dita explicitamente.
Alguns segundos depois o cartão de saúde da fonte mostra o estado Funcionando e as faixas reconhecidas — o streamer está seguindo o manifesto:

O que o streamer faz com o manifesto¶
- A captura começa na borda ao vivo. Tudo o que estava na janela de deslocamento da fonte no momento da conexão é história, e não é baixado. Pela mesma razão o streamer não recupera o que foi perdido após uma queda: um minuto de parada continua sendo um minuto em vez de chegar de uma vez ao ar.
- O período de atualização do manifesto é ditado pela fonte. O streamer relê o manifesto com a frequência que o próprio manifesto declara (
minimumUpdatePeriod); não há ajuste para isso, nem deve haver — impor um valor próprio sobre o alheio compra ou tráfego a mais ou segmentos perdidos. - Um período novo no manifesto é uma descontinuidade da linha do tempo. Um intervalo comercial, um blackout e uma troca de perfil de codificação são indistinguíveis de fora: o streamer anuncia uma descontinuidade e relê a descrição das faixas.
- A fonte pode mudar de endereço. Se o manifesto trouxer um elemento
Location, as atualizações seguintes vão para o novo endereço — é assim que as sessões são distribuídas; o endereço nos ajustes do stream não muda. - O tempo da fonte já é tempo de calendário. O DASH ancora os segmentos ao UTC pelo próprio protocolo, então o arquivo e o rebobinamento caem na escala de calendário sem adivinhar nada do relógio de parede.
- O fim da transmissão encerra a captura. Quando a fonte fecha a transmissão, o streamer entrega os segmentos restantes e para de consultar o manifesto.
Os campos da fonte¶
Um campo vazio significa o padrão do servidor — preencha apenas o que realmente precisar mudar.
| Campo | O que faz |
|---|---|
| URL | O endereço do manifesto da fonte |
| Bitrate da representação (bit/s) | Qual representação pegar: a mais próxima abaixo do número indicado. Vazio — a superior do conjunto |
| Capturar a escada inteira | Pegar todas as representações do conjunto em vez de uma — veja abaixo |
| Limite de desvio (ms) | O quanto as representações podem se afastar antes de a escada ser considerada desviada |
| Quando as representações divergem | O que fazer diante desse veredito |
| Tempo de conexão (ms) | Quanto esperar pelo estabelecimento da conexão com a fonte; o padrão é 5000 |
| Tempo do corpo (ms) | Quanto esperar pelo corpo da resposta; o padrão é 15000 |
| Limite do corpo (bytes) | Um teto para uma única resposta: uma resposta erroneamente enorme não esgotará a memória do streamer |
| Tempo limite do peer (ms) | Quanto esperar por quadros antes de dar a fonte por perdida |
| Cabeçalhos das requisições | Cabeçalhos HTTP adicionais, antes de tudo Authorization. Vão com o manifesto e com os segmentos; os valores nunca chegam aos logs |
| Chaves ClearKey | Chaves para uma fonte protegida — veja abaixo |
Os dois últimos campos são listas de pares: um cabeçalho entra no documento assim que tem nome.
Uma representação ou a escada inteira¶
Por padrão o stream pega uma representação — a superior pelo bitrate declarado ou, quando Bitrate da representação está preenchido, a mais próxima abaixo dele. Esse padrão é deliberado: capturar a escada inteira multiplica tanto o tráfego de entrada quanto o número de faixas do stream, e encurta o arquivo nos mesmos discos na mesma proporção.
A caixa Capturar a escada inteira liga a captura de todas as representações do conjunto. Você a quer quando a fonte já serve uma escada de qualidades pronta e não faz sentido transcodificá-la de novo — o stream entrega aos espectadores exatamente o que pegou.
Uma escada pronta traz um problema próprio: as representações chegam como arquivos independentes e com o tempo podem se afastar, e um reprodutor que troca de qualidade dá um solavanco nessa emenda. O streamer mede o desvio continuamente, compara-o com o campo Limite de desvio (ms) e age conforme o campo Quando as representações divergem:
- Manter a escada e mostrar o desvio — o padrão: a captura continua e o desvio fica visível nas estatísticas do stream e no log.
- Voltar para uma representação — a captura reinicia com uma representação. A volta acontece uma única vez na vida da fonte; do contrário cada reinício levantaria a escada de novo e tropeçaria nela de novo.
O streamer decide do que a escada é feita uma única vez, ao conectar. Uma representação que apareça no manifesto depois só é recolhida quando a entrada reinicia — por exemplo, após a edição dos ajustes dela.
Fonte protegida e chaves ClearKey¶
Se o manifesto declara proteção de conteúdo e nenhuma chave está definida, a fonte é recusada com um erro que nomeia o esquema de proteção. Isso é deliberado: segmentos cifrados são analisados como estrutura e dão quadros de lixo em vez de imagem, e sem uma recusa explícita a falha acaba sendo procurada no codec.
Para pegar uma fonte assim, preencha o bloco Chaves ClearKey com pares Identificador da chave — Chave. As duas metades são escritas como cadeias hexadecimais, e o identificador também é aceito como UUID com hifens. O streamer decifra os segmentos pelo esquema cenc e depois trabalha com eles como com os comuns.
O que aqui não há nem haverá é conversar com servidores de licença de Widevine, PlayReady e FairPlay: eles exigem um ambiente de execução confiável no dispositivo do espectador, que um streamer não tem. As declarações deles ao lado do esquema cenc no manifesto não atrapalham a captura e são simplesmente ignoradas.
A chave é tratada como segredo: não chega aos logs, e a API a devolve substituída. O identificador da chave não é segredo — ele está no manifesto em texto aberto e serve para o diagnóstico.
Cifrar o que o stream entrega aos espectadores é outra tarefa e outro ajuste: Cifragem da entrega.
O que a captura não faz¶
- Apenas endereçamento por modelo de segmentos.
SegmentListeSegmentBasenão são suportados; uma fonte assim é recusada com um erro que nomeia o que exatamente foi encontrado no manifesto. - Apenas contêineres fMP4. O streamer não espera mais nada dentro dos segmentos DASH e não tenta adivinhar.
- As legendas não são capturadas. Conjuntos do tipo
textsão pulados, o que deixa registro no log. - Uma gravação não vira fonte. Um manifesto estático é VOD, não uma transmissão; ele é recusado com uma razão explícita. Os arquivos vivem no catálogo VOD.
Se a fonte não subir¶
- A razão nomeia um esquema de proteção. A fonte está cifrada — preencha as chaves ClearKey.
- A razão nomeia
SegmentListouSegmentBase. A fonte não é endereçada por modelo de segmentos; a captura não suporta esse manifesto. - A razão nomeia um manifesto estático. Você deu um link para uma gravação em vez de uma transmissão.
- Respostas
401ou403. A fonte exige autorização — acrescente um cabeçalhoAuthorizationem Cabeçalhos das requisições. - O manifesto atualiza, mas não há quadros. É assim que se parece um manifesto deixado para trás por uma transmissão morta: o tempo avança, os endereços são calculados e as requisições por segmentos respondem
404. O stream liquidará essa fonte pelo tempo limite do peer. Para separar os dois casos use o diagnóstico da fonte: a hora da última atualização do manifesto e a hora da última entrega de quadros são contadas separadamente. - Os segmentos respondem
404logo após a partida. No DASH o momento em que um segmento fica disponível é calculado pelo relógio, então uma diferença entre o relógio do streamer e o da fonte quebra a captura. Verifique a sincronização de horário na máquina do streamer. - O stream não sobe e a razão nomeia o limite de captura DASH. Sua licença não tem espaço para essa entrada — ela é contada à parte do HLS. Fale com o seu gerente sobre ampliar a licença.