Composição do servidor (streaming em tempo real) - Amazon IVS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Composição do servidor (streaming em tempo real)

A composição do servidor usa um servidor do IVS para mixar áudio e vídeo de todos os participantes do palco e, em seguida, enviar esse vídeo mixado para um canal do IVS (por exemplo, para alcançar um público maior) ou para um bucket S3.. A composição do servidor é invocada por meio de endpoints do ambiente de gerenciamento do IVS na região de origem do palco.

A transmissão ou gravação de um palco usando a composição do servidor oferece vários benefícios, fazendo dela uma opção atraente para usuários que buscam fluxos de trabalho de vídeo eficientes e confiáveis na nuvem.

Este diagrama ilustra o funcionamento da composição do servidor:

Transmissão de um palco usando 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.

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:

A composição do servidor usa dois elementos principais da API.

Para obter informações completas, consulte a Referência de API da Transmissão em tempo real do IVS.

Layouts

Por padrão, o recurso de composição do servidor usa um layout de grade para organizar os participantes do palco em espaços com tamanhos iguais:

Layout da grade de composição do servidor.

Esse layout fornece uma opção para os clientes configurarem e invocarem um slot em destaque. O slot em destaque está na tela principal, com outros participantes mostrados abaixo em slots do mesmo tamanho:

Slot em destaque no layout da grade de composição do servidor.

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.

Conceitos básicos

Pré-requisitos

Para usar a composição do servidor, você deve ter um palco com publicadores ativos e usar um canal do IVS e/ou um bucket do S3 como destino da composição. Abaixo, descrevemos um possível fluxo de trabalho que usa eventos do EventBridge para iniciar uma composição que transmite o palco para um canal do IVS quando um participante publica. Como alternativa, você pode iniciar e interromper as composições com base na lógica da sua própria aplicação. Consulte Gravação composta para ver outro exemplo que mostra o uso da composição do servidor para gravar um palco diretamente em um bucket do S3.

  1. Crie um canal do IVS. Consulte Conceitos básicos do streaming de baixa latência do Amazon IVS.

  2. Crie um palco do IVS e tokens de participante para cada publicador.

  3. Crie um EncoderConfiguration.

  4. Entre no palco e publique nele. (Consulte as seções “Publicação e inscrição” dos guias de SDK de transmissão de streaming em tempo real: Web, Android e iOS.)

  5. Quando você receber um evento do EventBridge publicado pelo participante, chame StartComposition.

  6. Aguarde alguns segundos e veja a visualização composta na reprodução do canal.

Fluxo de trabalho de composição do servidor que usa eventos do EventBridge para iniciar uma composição quando um participante publica.

Obs.: uma composição será desligada automaticamente após 60 segundos de inatividade dos participantes do publicador no palco. Nesse ponto, a composição será encerrada e passará para um estado STOPPED. Uma composição será excluída automaticamente após alguns minutos no estado STOPPED.

Instruções da CLI

Usar a AWS CLI é uma opção avançada e exige que você baixe e configure a CLI em sua máquina primeiro. Para obter mais detalhes, consulte o Guia do usuário da Interface de Linhas de Comando da AWS.

Agora é possível usar a CLI para criar e gerenciar recursos. Os endpoints da composição estão no namespace ivs-realtime.

Criar o recurso EncoderConfiguration

Um objeto EncoderConfiguration permite que você personalize o formato do vídeo gerado (altura, largura, taxa de bits e outros parâmetros de streaming). Você pode reutilizar um EncoderConfiguration sempre que chamar o endpoint de composição, conforme explicado na próxima etapa.

O comando abaixo cria um recurso EncoderConfiguration que configura parâmetros de composição de vídeo do servidor, como taxa de bits, taxa de quadros e resolução do vídeo:

aws ivs-realtime create-encoder-configuration --name "MyEncoderConfig" --video "bitrate=2500000,height=720,width=1280,framerate=30"

A resposta é:

{ "encoderConfiguration": { "arn": "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/9W59OBY2M8s4", "name": "MyEncoderConfig", "tags": {}, "video": { "bitrate": 2500000, "framerate": 30, "height": 720, "width": 1280 } } }

Iniciar uma composição

Usando o ARN do EncoderConfiguration fornecido na resposta acima, crie seu recurso de composição:

aws ivs-realtime start-composition --stage-arn "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik" --destinations '[{"channel": {"channelArn": "arn:aws:ivs:us-east-1:927810967299:channel/DOlMW4dfMR8r", "encoderConfigurationArn": "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/9W59OBY2M8s4"}}]'

A resposta mostrará que a composição foi criada com um estado STARTING. Quando a composição começa a publicar a composição, o estado passará para ACTIVE. (Você poderá ver o estado chamando o endpoint ListCompositions ou GetComposition.)

Quando uma composição for ACTIVE, a visualização composta do palco do IVS ficará visível no canal do IVS, usando ListCompositions:

aws ivs-realtime list-compositions

A resposta é:

{ "compositions": [ { "arn": "arn:aws:ivs:us-east-1:927810967299:composition/YVoaXkKdEdRP", "destinations": [ { "id": "bD9rRoN91fHU", "startTime": "2023-09-21T15:38:39+00:00", "state": "ACTIVE" } ], "stageArn": "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik", "startTime": "2023-09-21T15:38:37+00:00", "state": "ACTIVE", "tags": {} } ] }

Obs.: você precisa que os participantes do publicador publiquem ativamente no palco para manter a composição viva. Para obter mais informações, Consulte as seções “Publicação e inscrição” dos guias de SDK de transmissão de streaming em tempo real: Web, Android e iOS. Você deverá criar um token de palco distinto para cada participante.

Habilitar o compartilhamento de tela

Para usar um layout fixo de compartilhamento de tela, siga as etapas abaixo.

Criar o recurso EncoderConfiguration

O comando abaixo cria um recurso EncoderConfiguration que configura parâmetros de composição do servidor (taxa de bits, taxa de quadros e resolução do vídeo).

aws ivs-realtime create-encoder-configuration --name "test-ssc-with-screen-share" --video={bitrate=2000000,framerate=30,height=720,width=1280}

Crie um token de participante do palco com um atributo screen-share. Como especificaremos screen-share como o nome do slot featured, será necessário criar um token de palco com o atributo screen-share definido como true:

aws ivs-realtime create-participant-token --stage-arn "arn:aws:ivs:us-east-1:123456789012:stage/u9OiE29bT7Xp" --attributes screen-share=true

A resposta é:

{ "participantToken": { "attributes": { "screen-share": "true" }, "expirationTime": "2023-08-04T05:26:11+00:00", "participantId": "E813MFklPWLF", "token": "eyJhbGciOiJLTVMiLCJ0eXAiOiJKV1QifQ.eyJleHAiOjE2OTExMjY3NzEsImlhdCI6MTY5MTA4MzU3MSwianRpIjoiRTgxM01Ga2xQV0xGIiwicmVzb3VyY2UiOiJhcm46YXdzOml2czp1cy1lYXN0LTE6OTI3ODEwOTY3Mjk5OnN0YWdlL3U5T2lFMjliVDdYcCIsInRvcGljIjoidTlPaUUyOWJUN1hwIiwiZXZlbnRzX3VybCI6IndzczovL3VzLWVhc3QtMS5ldmVudHMubGl2ZS12aWRlby5uZXQiLCJ3aGlwX3VybCI6Imh0dHBzOi8vYjJlYTVjMmZmMzU1Lmdsb2JhbC53aGlwLmxpdmUtdmlkZW8ubmV0IiwiYXR0cmlidXRlcyI6eyJzY3JlZW4tc2hhcmUiOiJ0cnVlIn0sImNhcGFiaWxpdGllcyI6eyJhbGxvd19wdWJsaXNoIjp0cnVlLCJhbGxvd19zdWJzY3JpYmUiOnRydWV9LCJ2ZXJzaW9uIjoiMC4zIn0.MGUCMFvMzv35O4yVzM9tIWZl7n3mmFQhleqsRSBx_G2qT2YUDlWSNg6H1vL7sAWQMeydSAIxAIvdfqt3Fh1MLiyelc9NnTjI5hL3YPKqDX6J3NDH1fksh8_5y1jztoPDy4yVA5OmtA" } }

Iniciar a composição

Para iniciar a composição usando o recurso de compartilhamento de tela, usaremos este comando:

aws ivs-realtime start-composition --stage-arn "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik" --destinations '[{"channel": {"channelArn": "arn:aws:ivs:us-east-1:927810967299:channel/DOlMW4dfMR8r", "encoderConfigurationArn": "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/DEkQHWPVaOwO"}}]' --layout "grid={featuredParticipantAttribute=screen-share}"

A resposta é:

{ "composition" : { "arn" : "arn:aws:ivs:us-east-1:927810967299:composition/B19tQcXRgtoz", "destinations" : [ { "configuration" : { "channel" : { "channelArn" : "arn:aws:ivs:us-east-1:927810967299:channel/DOlMW4dfMR8r", "encoderConfigurationArn" : "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/DEkQHWPVaOwO" }, "name" : "" }, "id" : "SGmgBXTULuXv", "state" : "STARTING" } ], "layout" : { "grid" : { "featuredParticipantAttribute" : "screen-share" } }, "stageArn" : "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik", "startTime" : "2023-09-27T21:32:38Z", "state" : "STARTING", "tags" : { } } }

Quando o participante E813MFklPWLF do palco ingressar no palco, o vídeo desse participante será exibido no espaço em destaque e todos os outros publicadores do palco serão renderizados abaixo do espaço:

Inicie a composição usando o recurso de compartilhamento de tela.

Parar a composição

Para interromper uma composição em qualquer ponto, chame o endpoint StopComposition:

aws ivs-realtime stop-composition --arn arn:aws:ivs:us-east-1:927810967299:composition/B19tQcXRgtoz

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:

  1. Um recurso de composição é criado quando o usuário chama o endpoint StartComposition.

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

  3. 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 automaticamente 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 estado FAILED 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.

  4. Quando a composição estiver no estado STOPPED ou FAILED, ela passará automaticamente por limpeza após cinco minutos. (Em seguida, ela não será mais recuperada por ListCompositions ou GetComposition.)

Ciclo de vida de um recurso de composição do servidor.