Visão geral da composição do servidor do IVS
Este diagrama demonstra como funciona a composição do servidor:
Benefícios
Comparada à composição do lado do cliente, a composição do servidor tem os seguintes benefícios:
-
Redução da carga do cliente: com a composição do servidor, a carga do processamento e da combinação de fontes de áudio e vídeo é transferida dos dispositivos individuais do cliente para o próprio servidor. A composição do servidor elimina a necessidade de dispositivos clientes usarem seus recursos de CPU e rede para compor a visualização e transmiti-la ao IVS. Isso significa que os espectadores podem assistir à transmissão sem que seus dispositivos precisem processar tarefas que consomem muitos recursos, o que pode levar a uma maior duração da bateria e a experiências de visualização mais uniformes.
-
Qualidade consistente: a composição do servidor permite um controle preciso sobre a qualidade, a resolução e a taxa de bits do fluxo final. Isso garante uma experiência de visualização consistente para todos os espectadores, independentemente das capacidades individuais de seus dispositivos.
-
Resiliência: ao centralizar o processo de composição no servidor, a transmissão se torna mais robusta. Mesmo que o dispositivo publicador tenha limitações ou flutuações técnicas, o servidor poderá se adaptar e fornecer uma transmissão mais suave para todo o público.
-
Eficiência de largura de banda: como o servidor processa a composição, os publicadores de palco não precisam gastar mais largura de banda transmitindo o vídeo para o IVS.
Como alternativa, para transmitir um palco para um canal IVS, você pode fazer a composição do lado do cliente. Consulte Habilitar vários hosts em um stream do IVS no Guia do usuário do streaming de baixa latência do IVS.
Ciclo de vida da composição
Use o diagrama abaixo para entender as transições de estado de uma composição:
Em alto nível, o ciclo de vida de uma composição é o seguinte:
-
Um recurso de composição é criado quando o usuário chama o endpoint StartComposition.
-
Depois que o IVS inicia a composição com sucesso, um evento “Alteração do estado da composição do IVS (início da sessão)” do EventBridge será enviado. Consulte Usar o EventBridge com o streaming em tempo real do IVS para obter detalhes sobre eventos.
-
Quando uma composição estiver em um estado ativo, o seguinte poderá acontecer:
-
O usuário interrompe a composição: se o endpoint StopComposition for chamado, o IVS iniciará um desligamento normal da composição, enviando eventos de “Fim de destino” seguidos por um evento de “Fim da sessão”.
-
A composição realiza o desligamento automático: se nenhum participante estiver publicando ativamente no palco do IVS, a composição será finalizada de forma automática após 60 segundos e os eventos do EventBridge serão enviados.
-
Falha no destino: se um destino falhar inesperadamente (por exemplo, o canal do IVS for excluído), o destino passará para o estado
RECONNECTING
, e um evento de “Reconexão de destino” será enviado. Se a recuperação for impossível, o IVS fará a transição do destino para o estadoFAILED
e um evento de “Falha no destino” será enviado. O IVS mantém a composição viva se houver ao menos um de seus destinos ativo.
-
-
Quando a composição estiver no estado
STOPPED
ouFAILED
, ela passará automaticamente por limpeza após cinco minutos. (Em seguida, ela não será mais recuperada por ListCompositions ou GetComposition.)
API do IVS
A composição do servidor usa estes elementos-chave da API:
-
Um objeto EncoderConfiguration permite que você personalize o formato do vídeo a ser gerado (altura, largura, taxa de bits e outros parâmetros de streaming). Você pode reutilizar um EncoderConfiguration sempre que chamar o endpoint StartComposition.
-
Os endpoints de composição rastreiam a composição do vídeo e a saída para um canal do IVS.
-
O StorageConfiguration rastreia o bucket do S3 no qual as composições são gravadas.
Para usar a composição do servidor, você precisa criar um EncoderConfiguration e anexá-lo ao chamar o endpoint StartComposition. Neste exemplo, o EncoderConfiguration do SquareVideo é usado em duas composições:
Para obter informações completas, consulte a Referência de API da Transmissão em tempo real do IVS.
Layouts
O endpoint StartComposition oferece duas opções de layout: grade e PiP (Picture-in-Picture).
Layout de grade
O layout de grade organiza os participantes do palco em uma grade de slots do mesmo tamanho. Ele oferece várias propriedades personalizáveis:
videoAspectRatio
define o modo de exibição do participante para controlar a proporção dos blocos de vídeo.videoFillMode
define como o conteúdo do vídeo se encaixa no bloco do participante.gridGap
especifica o espaçamento entre os blocos dos participantes em pixels.omitStoppedVideo
permite excluir streams de vídeo interrompidos da composição.featuredParticipantAttribute
identifica o slot em destaque. Quando isso é definido, o participante em destaque é exibido em um slot maior na tela principal, com os outros participantes mostrados abaixo.
Para obter detalhes sobre o layout da grade (incluindo valores válidos e padrão para todos os campos), consulte o tipo de dados GridConfiguration.
Layout picture-in-picture (PiP)
O layout PiP permite exibir um participante em uma janela de sobreposição com tamanho, posição e comportamento configuráveis. As principais propriedades incluem:
pipParticipantAttribute
especifica o participante da janela PiP.pipPosition
determina a posição do canto da janela PiP.pipWidth
epipHeight
configuram a largura e a altura da janela PiP.pipOffset
define a posição de deslocamento da janela PiP em pixels a partir das bordas mais próximas.pipBehavior
define o comportamento do PiP quando todos os outros participantes saem.
Assim como o layout da grade, o PiP é compatível com featuredParticipantAttribute
, omitStoppedVideo
, videoFillMode
e gridGap
para personalizar ainda mais a composição.
Para obter detalhes sobre o layout PiP (incluindo valores válidos e padrão para todos os campos), consulte o tipo de dados PipConfiguration.
Obs.: a resolução máxima suportada por um publicador de palco na composição do servidor é de 1080p. Se um publicador enviar um vídeo acima de 1080p, ele será renderizado como participante somente de áudio.
Importante: certifique-se de que a aplicação não dependa dos recursos específicos do layout atual, como tamanho e posição dos blocos. Melhorias visuais nos layouts podem ser introduzidas a qualquer momento.