Live stream¶
media.live.streams
Um live stream no Sapsan é um stream com nome que reúne a captura de mídia, seu processamento e sua entrega aos consumidores. A mídia chega e é processada à medida que novos quadros ficam disponíveis. O stream tem uma configuração e um estado atual. Um único nome pode incluir:
- Vídeo — várias qualidades.
- Áudio — faixas em diferentes idiomas.
- Legendas — faixas de texto.
Todas continuam sendo faixas do mesmo stream.
Em um servidor individual, o live stream gerencia o pipeline de mídia em execução. No central, o mesmo stream é representado como um objeto do cluster: suas funções podem ser executadas em vários servidores ao mesmo tempo.
Stream em um servidor¶
Uma instância local do stream é um gerenciador do pipeline. Ela conecta os componentes de processamento, fornece suas configurações e gerencia seu ciclo de vida. A composição do pipeline depende da configuração e do papel deste servidor no atendimento ao stream.
| Componente | Responsabilidade |
|---|---|
| Entrada | Recebe mídia de uma fonte ou aceita uma publicação. Gerencia a conexão, as reconexões e a seleção da fonte reserva. |
| Transcodificador | Decodifica e codifica a mídia conforme as configurações do stream, gerando os codecs e a escada de qualidades necessários. |
| Processamento | Realiza o processamento configurado: extração de legendas, geração de miniaturas e processamento de metadados e eventos. Tarefas como reconhecimento de fala podem trabalhar com um arquivo já gravado. |
| Segmentador | Monta segmentos e segmentos parciais, mantendo uma janela ao vivo para a entrega por segmentos. |
| Gravação DVR | Envia os segmentos preparados ao subsistema de arquivo e monitora o estado da gravação. |
| Pushes | Enviam mídia aos destinos configurados. Cada destino tem seu próprio estado de conexão e reconexão. |
| Retransmissores e assinantes | Recebem quadros ou segmentos do stream para entregá-los a espectadores e outros servidores pelos protocolos correspondentes. |
Os dados são distribuídos por várias ramificações: o mesmo resultado do processamento pode ser enviado simultaneamente ao arquivo, aos pushes e à entrega aos espectadores. Cada espectador adicional não exige captura e transcodificação independentes. A entrega por segmentos lê os segmentos preparados, enquanto os protocolos de transmissão contínua recebem um fluxo de quadros ou pacotes de transporte.
O gerenciador aceita alterações de configuração, atualiza os componentes e coleta seus estados. A reconexão da entrada, a recuperação de um push e o reinício do transcodificador fazem parte do ciclo de vida do pipeline local. Alterar parâmetros ou recuperar um componente pode interromper a parte correspondente do processamento.
Saiba mais sobre os componentes:
- Entradas e LSI.
- Redundância de fontes.
- Transcodificação.
- Gravação do arquivo.
- Gerenciamento de pushes.
Stream do cluster no central¶
O central armazena a configuração geral do stream: qual fonte capturar e quais funções executar. O operador a altera pela API do central. O layouter determina quais streamers atenderão ao stream e com quais papéis. O central gera e entrega a cada servidor a configuração da sua parte do trabalho.
Assim, um único stream do cluster tem várias representações locais. O servidor de captura executa o pipeline de captura e processamento. No streamer DVR, o mesmo stream recebe mídia preparada para gravação. Em um edge, ele atende à entrega aos espectadores, usando um cache quando necessário. Cada servidor executa as funções atribuídas pela sua configuração.
| Nível | O que descreve |
|---|---|
| Stream do cluster | A configuração geral e o nome do stream, que são mantidos quando seu posicionamento muda. |
| Atribuição | Qual streamer desempenha um papel específico: captura, gravação do arquivo ou entrega. |
| Instância local | O pipeline em execução no servidor com a configuração que lhe foi entregue. |
A distribuição permite utilizar vários servidores ao mesmo tempo para diferentes funções de um único stream. Por exemplo, a captura e a transcodificação podem ser executadas em um servidor com hardware adequado, o arquivo pode ser gravado em armazenamento dedicado e a entrega pode ser atendida por edges próximos aos espectadores. Os papéis disponíveis e suas regras de atribuição são descritos no posicionamento de streams.
Exemplo de distribuição¶
O stream news tem a transcodificação e a gravação do arquivo ativadas. Ele utiliza os seguintes servidores:
- Servidor A — captura: recebe a fonte e gera a escada de qualidades.
- Servidor B — gravação: recebe a mídia preparada de A e grava o arquivo.
- Servidores C e D — entrega: recebem a mídia ao vivo de A, leem o arquivo de B e atendem aos espectadores. Com o cache do arquivo ativado, solicitações repetidas podem ser atendidas localmente.
O operador gerencia um único stream, news. Diferentes partes do seu processamento e da sua entrega são executadas nos servidores. Adicionar um edge não exige criar outro stream gerenciado pelo operador com um nome diferente.
Alterações e falhas¶
Quando o posicionamento muda, o central entrega configurações atualizadas aos streamers afetados. O nome e a configuração geral do stream do cluster são mantidos; o conjunto de instâncias locais e as funções que elas executam podem mudar.
A recuperação local e a redistribuição no cluster resolvem tarefas diferentes. O próprio streamer reconecta sua entrada ou muda para uma fonte reserva configurada. O layouter decide transferir o trabalho para outro servidor com base no estado do cluster e nas regras de posicionamento.
Se a conexão com o central for perdida, um streamer que já está em execução continua usando a última configuração aplicada. A entrega de novas configurações e a redistribuição exigem um plano de controle operacional. Os estados dos componentes e servidores individuais devem ser considerados em conjunto: a entrega correta por um edge, por si só, não confirma que a gravação do arquivo continua no streamer DVR.