

# Conceitos básicos sobre Composição do servidor do IVS
<a name="ssc-getting-started"></a>

Este documento descreve as etapas envolvidas ao começar a usar a composição do servidor do IVS.

## Pré-requisitos
<a name="ssc-getting-started-prerequisites"></a>

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.

Para criar um bucket do S3, consulte a documentação do S3 sobre [como criar buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html). O bucket do S3 deve estar na mesma região da AWS que o estágio do IVS.

**Importante**: se você usar um bucket S3 existente:
+ A configuração de **Propriedade do objeto** deve ser **Imposta pelo proprietário do bucket** ou **Preferencial do proprietário do bucket**.
+ A configuração de **Criptografia padrão** deve ser **Criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3)**.

Para obter mais detalhes, consulte a documentação do S3 sobre como [controlar a propriedade de objetos](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html) e [proteger dados com criptografia](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html).

## Instruções da API
<a name="ssc-getting-started-api-instructions"></a>

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](rt-composite-recording.md) 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](https://docs.aws.amazon.com//ivs/latest/LowLatencyUserGuide/getting-started.html).

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

1. Crie um [EncoderConfiguration](https://docs.aws.amazon.com//ivs/latest/RealTimeAPIReference/API_EncoderConfiguration.html).

1. 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](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/web-publish-subscribe.html), [Android](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/android-publish-subscribe.html) e [iOS](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/ios-publish-subscribe.html).)

1. Quando você receber um evento do EventBridge publicado pelo participante, chame [StartComposition](https://docs.aws.amazon.com//ivs/latest/RealTimeAPIReference/API_StartComposition.html) com a configuração de layout desejada.

1. 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.\]](http://docs.aws.amazon.com/pt_br/ivs/latest/RealTimeUserGuide/images/ssc_Workflow.png)


**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
<a name="ssc-getting-started-cli"></a>

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](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html).

Agora é possível usar a CLI para criar e gerenciar recursos. As operações da composição estão no namespace `ivs-realtime`.

### Criar o recurso EncoderConfiguration
<a name="ssc-getting-started-cli-create-encoderconfiguration"></a>

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 a operação de composição, conforme explicado na etapa seguinte.

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
<a name="ssc-getting-started-cli-start-mediapublish"></a>

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

**Exemplo de layout de grade**

```
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"}}]' --layout '{"grid":{"participantOrderAttribute":"order","featuredParticipantAttribute":"isFeatured","videoFillMode":"COVER","gridGap":0}}'
```

**Exemplo de layout PiP**

```
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 '{"pip":{"participantOrderAttribute":"priority","pipParticipantAttribute":"isPip","pipOffset":10,"pipPosition":"TOP_RIGHT"}}'
```

**Observação**: você pode usar [essa ferramenta](https://composition.ivsdemos.com/) para gerar mais facilmente a configuração de `--layout` com base em suas escolhas de layout.

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 a operação 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](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/web-publish-subscribe.html), [Android](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/android-publish-subscribe.html) e [iOS](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/ios-publish-subscribe.html). Você deverá criar um token de palco distinto para cada participante.