Inserção de anúncios no lado do servidor (SSAI)
A inserção de anúncios no lado do servidor (SSAI) do Amazon IVS permite que você monetize seus streamings com anúncios em vídeo. O IVS SSAI se integra ao AWS Elemental MediaTailor, oferecendo acesso a recursos como decisão de anúncios, segmentação de público e personalização. O IVS fornece uma operação de API para inserir intervalos comerciais em seu streaming ao vivo, permitindo que você dê aos criadores ou operadores o controle sobre quando os anúncios são veiculados. O IVS insere anúncios diretamente no fluxo de vídeo. Isso proporciona uma experiência de visualização fluida e evita a lógica complexa do lado do cliente. Para obter informações sobre os custos associados ao SSAI, consulte Custos do IVS.
Conceitos básicos do SSAI
Este tutorial ajuda você a entender os conceitos básicos da inserção de anúncios no lado do servidor (SSAI) do Amazon IVS. No final deste tutorial, você terá um canal do IVS configurado para a inserção de anúncios no lado do servidor e saberá como inserir intervalos comerciais em seu streaming ao vivo. O IVS SSAI integra-se ao AWS Elemental MediaTailor para gerenciar a decisão de anúncios.
Etapa 1: criar um canal do IVS
Crie um canal do IVS. Você precisará do URL da reprodução do canal para configurar o MediaTailor na próxima etapa. Depois de criar seu canal, salve os seguintes valores:
-
ARN do canal: você precisará dele para atualizar o canal posteriormente.
-
Prefixo do URL de reprodução: extraia o prefixo do URL de reprodução (tudo que vem antes de /api/). Por exemplo, se seu URL de reprodução for:
-
https://c17b3fb37fc9.us-west-2.playback.live-video.net/api/video/v1/us-west-2.123456789012.channel.ABcdef12ghIJ.m3u8
O prefixo será:
-
https://c17b3fb37fc9.us-west-2.playback.live-video.net/
-
-
Formato do contêiner: deve ser definido como fluxo de transporte (TS) MPEG.
Etapa 2: criar uma configuração de reprodução do MediaTailor
Crie uma configuração de reprodução do AWS Elemental MediaTailor. Essa configuração conectará seu servidor de decisão de anúncios ao IVS e permitirá a inserção de anúncios em seus streams.
A configuração de reprodução usa o prefixo do URL de reprodução, que é comum em todos os canais do IVS em sua conta e região. Isso significa que você pode usar uma única configuração de reprodução do MediaTailor com vários canais do IVS.
Consulte Criação de uma configuração de reprodução do MediaTailor no Guia do usuário do AWS Elemental MediaTailor para obter instruções. Ao criar a configuração, as seguintes configurações serão necessárias para o IVS SSAI:
| Configuração | Local | Valor |
|---|---|---|
| URL do servidor de decisão de anúncios | Configurações necessárias | URL do servidor de decisão de anúncios |
| Origem do conteúdo | Configurações necessárias | Prefixo do URL do seu URL de reprodução do IVS; por exemplo, https://c17b3fb37fc9.us-west-2.playback.live-video.net/ |
| Modo de inserção | Detalhes de personalização | PLAYER_SELECT |
Importante
Especifique a origem do conteúdo usando somente o prefixo do URL de reprodução do seu canal (terminado em live-video.net/), não o URL completo. Se o formato estiver incorreto, a criação da configuração de anúncio na próxima etapa falhará com um erro de validação.
Etapa 3: criar uma configuração de anúncio do IVS
Uma configuração de anúncio vincula seus recursos do IVS à sua configuração de reprodução do MediaTailor. Você pode usar uma configuração de reprodução do MediaTailor criada em qualquer região de origem do IVS com uma configuração de anúncio em qualquer outra região de origem do IVS. As regiões de origem do IVS incluem us-west-2, us-east-1, eu-west-1, eu-central-1, ap-northeast-1, ap-northeast-2 e ap-south-1.
Você pode reutilizar uma única configuração de anúncio em vários canais.
Para criar uma configuração de anúncio (AWS CLI):
aws ivs create-ad-configuration --name "my-ad-config" --media-tailor-playback-configurations playbackConfigurationArn="arn:aws:mediatailor:us-west-2:123456789012:playbackConfiguration/my-mediatailor-config"
Salve o valor do ARN da resposta. Você precisa dele na próxima etapa.
Etapa 4: atualizar o canal com a configuração do anúncio
Atualize seu canal do IVS para associá-lo à configuração de anúncio que você criou. Para atualizar o canal (AWS CLI):
aws ivs update-channel --arn "arn:aws:ivs:us-west-2:123456789012:channel/ABcdef12ghIJ" --ad-configuration-arn "arn:aws:ivs:us-west-2:123456789012:ad-configuration/ABcdef12ghIJ"
Etapa 5: iniciar o streaming
Use o endpoint de ingestão e a chave de streaming do seu canal para iniciar o streaming.
Etapa 6: inserir o intervalo comercial
Enquanto seu streaming estiver ao vivo, chame a operação InsertAdBreak para inserir um intervalo comercial. Especifique o ARN do canal e a duração (em segundos) do intervalo comercial.
Para inserir um intervalo comercial (AWS CLI):
aws ivs insert-ad-break --channel-arn "arn:aws:ivs:us-west-2:123456789012:channel/ABcdef12ghIJ" --duration-seconds 30
Após o retorno bem-sucedido de InsertAdBreak, você pode receber um evento EventBridge (alteração de estado de intervalo comercial do IVS) que contém um carimbo de data e hora indicando a hora prevista em que o intervalo do comercial será inserido nas listas de reprodução dos espectadores. Esse é o momento em que o transmissor pode prever que os anúncios começarão a substituir o conteúdo. Se um anúncio não puder ser preenchido (por exemplo, se o seu servidor de decisão de anúncios não retornar um anúncio ou se os anúncios precisarem ser transcodificados pelo MediaTailor), o conteúdo original será exibido em seu lugar.
Importante
Você não poderá inserir intervalos comerciais adicionais enquanto um intervalo comercial atual ainda estiver em andamento. As chamadas subsequentes para InsertAdBreak retornarão um erro 409 ConflictException até que o intervalo comercial atual seja concluído.
Integração com o EventBridge
Com o SSAI, um evento de alteração de estado de intervalo comercial do IVS (chamado de intervalo comercial inserido) é adicionado, com os seguintes campos:
| Campo | Descrição |
|---|---|
event_name |
O nome do evento que está sendo emitido. |
channel_name |
O nome do canal que é acionado pela solicitação da API InsertAdBreak. |
stream_id |
O ID do streaming ao vivo para o canal acionado pela solicitação da API InsertAdBreak. |
ad_break_id |
O ID exclusivo associado ao intervalo comercial, que corresponde ao ID do intervalo comercial na resposta da solicitação inicial de InsertAdBreak. |
duration_seconds |
O valor em segundos que foi incluído na solicitação InsertAdBreak e especificado pelo cliente. |
target_start_time |
O carimbo de data e hora estimado para o streaming ao vivo de quando o intervalo comercial será inserido na lista de reprodução. |
Etapa 7: eventos do Player SDK
Em todas as plataformas, o Player SDK exibe eventos quando um intervalo comercial é reproduzido, notificando quando um anúncio começa, progride e termina. Confira um resumo de alto nível dos eventos e cronogramas disponíveis:
| Event | Carga útil | Trigger |
|---|---|---|
| Intervalo comercial iniciado | AdBreak | Primeiro segmento do intervalo comercial |
| Criativo do anúncio iniciado | AdCreative | Primeiro segmento de cada criativo |
| Tempo do anúncio atualizado | AdTimeUpdate | A cada segundo durante a reprodução do anúncio |
| Criativo do anúncio encerrado | AdCreative | Último segmento de cada criativo |
| Intervalo comercial encerrado | AdBreak | Primeiro segmento de conteúdo após o intervalo |
Para obter os nomes específicos de eventos e cargas úteis de cada plataforma, consulte a documentação do Player SDK:
-
Web: consulte a enumeração PlayerEventType em https://aws.github.io/amazon-ivs-player-docs/latest/web/
-
Android: consulte a classe Player.Listener em https://aws.github.io/amazon-ivs-player-docs/latest/android/
-
IOS: consulte o protocolo IVSPlayerDelegate em https://aws.github.io/amazon-ivs-player-docs/latest/ios/
Confira abaixo um exemplo de uso de eventos de anúncios no Web SDK para criar um componente de interface de usuário simples de contagem regressiva de anúncios durante um intervalo comercial:
// State let podLength = 0; let podIndex = 0; let remainingSeconds = 0; // Fired every second during the ad break player.addEventListener(PlayerEventType.AD_TIME_UPDATE, (payload) => { podLength = payload.podLength; podIndex = payload.podIndex; remainingSeconds = Math.round(payload.creativeDuration - payload.creativeElapsed); const text = `Ad ${podIndex} of ${podLength} · ${remainingSeconds}s remaining` // Ad 1 of 2 · 20s remaining console.log('Ad countdown text', text); UpdateAdOverlay(text); }); // Fired when the ad break ends player.addEventListener(PlayerEventType.AD_BREAK_ENDED, (payload) => { hideAdOverlay(); });
Marcadores de anúncios em conteúdo gravado
Quando um streaming ao vivo é gravado usando gravação automática no Amazon S3, o IVS gera e grava uma lista de reprodução VOD no S3 que inclui marcadores de anúncios SCTE-35 nas posições em que os anúncios foram acionados durante o streaming ao vivo. Para mais detalhes, consulte Referência da lista de reprodução de SSAI.
Experiência do espectador
Por padrão, o MediaTailor preenche e veicula anúncios para todos os espectadores quando você insere um intervalo comercial. Se você estiver usando tokens de autorização de reprodução para seus streamings, poderá impedir que os espectadores recebam anúncios adicionando a declaração "aws:ads-opt-out": true ao seu token JWT de autorização de reprodução.
Quando os espectadores começam a assistir no meio de um intervalo comercial, o IVS arredonda a duração do intervalo comercial para o quartil mais próximo. Por exemplo, um espectador que entrar com 35 segundos restantes em um intervalo comercial de 60 segundos terá um intervalo comercial de 45 segundos.
Ao atualizar sua configuração de reprodução do MediaTailor ou ao adicionar novos anúncios, os espectadores podem não ver os anúncios na primeira vez que você solicita um intervalo comercial, pois o MediaTailor precisa primeiro transcodificar os anúncios. Depois de alguns minutos, as chamadas subsequentes para InsertAdBreak resultarão na visualização de anúncios pelos espectadores. Os logs de transcodificação do MediaTailor registram essas transcodificações.
Parâmetros de rastreamento dos espectadores
Ao configurar um servidor de decisão de anúncios (ADS) no PlaybackConfiguration do Elemental MediaTailor, você pode passar parâmetros para o ADS usando modelos (consulte Como passar parâmetros do MediaTailor para o ADS). Com o IVS SSAI, você pode passar parâmetros para cada espectador usando o token de autorização de reprodução desse usuário, adicionando uma declaração com o seguinte formato:
"aws:ads-player-params": { "key1": "value1", "key2": "value2" }
Esses parâmetros são passados para o Elemental MediaTailor para serem preenchidos como as variáveis [player_params.key1] e [player_params.key2] de modelos. As chaves que você incluir nesta lista sempre farão parte do namespace de parâmetros do modelo player_params.
O tamanho total da carga útil de todas as chaves e valores combinados é limitado a 1000 bytes.
Modo de relatórios
Quando um espectador assiste a um anúncio, o cliente ou o servidor pode enviar beacons indicando o progresso da reprodução de cada criativo do anúncio. Por padrão, o MediaTailor lida com o beaconing no lado do servidor. Você pode controlar o modo de relatórios adicionando a seguinte declaração ao token de autorização de reprodução:
"aws:ads-reporting-mode": "CLIENT" | "SERVER"
O valor padrão é SERVER. Quando definido como SERVER, o MediaTailor envia beacons no lado do servidor. Quando definido como CLIENT, o beaconing no lado do servidor é desabilitado e os dados de rastreamento são fornecidos no campo metadata.trackingData do evento adBreakStarted do SDK do Reprodutor do IVS. O SDK do Reprodutor do IVS não chama URLs de beacon.
Problemas conhecidos
-
Os anúncios do IVS não funcionarão se o canal do IVS
containerFormatestiver definido comoFRAGMENTED_MP4. As chamadas para UpdateChannel e CreateChannel retornarão um erro de validação se o formato de contêiner FMP4 for usado com uma configuração de anúncio. -
Durante a reprodução do anúncio, alternar entre o modo de taxa de bits adaptável e a seleção manual de qualidade pode fazer com que o reprodutor tenha problemas de congelamento e buffer.
-
Para streamings de mais de 12 horas que sofreram interrupção por falta de dados, é possível que os marcadores de data e hora do programa percam a sincronia, fazendo com que os anúncios não sejam exibidos aos espectadores. A solução alternativa é o transmissor reiniciar o stream.
Referência da lista de reprodução de SSAI
Lista de reprodução de variante live com SSAI
Quando um anúncio é inserido no stream, o IVS insere as tags documentadas abaixo, antes dos segmentos do anúncio.
1. Declaração de anúncio inserido
#EXT-X-DATERANGE:ID="stitched-ad-1765566299-20000000000",CLASS="live-video-net-stitched-ad",START-DATE="2025-12-12T19:04:59.079Z",DURATION=20.000,X-NET-LIVE-VIDEO-AD-AD-BREAK-ID="test"
| Atributo | Descrição |
|---|---|
ID |
Formato: .:
Tipo: matriz de strings |
CLASS |
Sempre live-video-net-stitched-ad para anúncios SSAI. |
START-DATE |
Data/hora do programa ISO 8601 em que o anúncio inicia. |
DURATION |
Duração do anúncio em segundos. |
X-NET-LIVE-VIDEO-AD-AD-BREAK-ID |
O ID do intervalo comercial retornado pelo IVS quando a operação InsertAdBreak foi chamada. |
2. Alteração da origem do stream
#EXT-X-DATERANGE:ID="source-1765566299",CLASS="live-video-net-stream-source",START-DATE="2025-12-12T19:04:59.079Z",END-ON-NEXT=YES,X-NET-LIVE-VIDEO-STREAM-SOURCE="0f262e65-a709-4ef1-8741-e82d936c"
| Atributo | Descrição |
|---|---|
CLASS |
Sempre live-video-net-stream-source. |
START-DATE / END-ON-NEXT |
Metadados de tempo para este intervalo de origem. |
X-NET-LIVE-VIDEO-STREAM-SOURCE |
Indica ao reprodutor que a origem do vídeo está mudando. O valor é live para o conteúdo principal ou um ID exclusivo para o conteúdo do anúncio. |
3. Marcador de descontinuidade
#EXT-X-DISCONTINUITY
Tag HLS padrão que sinaliza que os parâmetros de codificação podem mudar entre o streaming ao vivo e o conteúdo do anúncio.
Segmentos de anúncios
#EXT-X-PROGRAM-DATE-TIME:2025-12-12T19:04:59.079Z #EXTINF:2.000,0f262e65-a709-4ef1-8741-e82d936c https://4ce388b1cf28.j.cloudfront.hls.live-video.net/v1/segment/CvsCse8Qbs5DU_aRmrVLd72_nK9lo9xS1KjD115LsIXcsD27JfLfkSuamLUivqOTrfHUeGf6Zmx_c9rhq0btTOu7E4F1DaU8knNoebLq6FlKp6q8ysaQdEA10gKCNP92oAQ_0DGLInY462O9HUxgtk5KHj23ZjPhVCxIh3DjWqwaevDci1_q7dYL55rgSKd11SfpsGSS9Yup4g5dfzyGhfz6Y2Skaj34JtoVyd8Nxlppc4jDlZl-6j7YM1i2qdUcM3VNWrZrxCisBXgOPtI3vFdeNcNjPzVdOGjMz5cXcQIp8YOCwnkdkomhn_3xxmB1Zngl3QPao6-oPsjH3qVcMOCuKfKZSmRJGFLvkrO1PefV5ya3eUvihXCMvDE-81EmGp5q9ErEgFpz06rMDbYFWb3z9H8X0t8KzvGDOaqKTYHZ0lgEV-fULeDQ76pDy_OVPwhO2vJMxBpfdQ_IeB1QUK2wJmXJ96Mvv0C2dcb0F7zE3lr_iBGemUjwmb7JmBoM3HdJbpV0TGp8C6vhIAEqCXVzLXdlc3QtMjD3DQ.ts?dna=CmanuVzG9F6kGS2X7ThbGZyZPHWgX2TiBlBMYsvGWLcWaLWyntTaWRp5D9qjZsrGKkzdwoLNY4pri6ZgpxnzqLqWvhcP6zoGu8vifP5NxPgiNKMmYdUmQrqTAf7jbauvE3c6B9ebptAaDEkrbrnG1qF8Cv3kbiABKgl1cy13ZXN0LTIw9w0
| Atributo | Descrição |
|---|---|
EXT-X-PROGRAM-DATE-TIME |
Carimbo de data e hora desse segmento. |
EXTINF |
Formato: .:
|
| URL do segmento | Endpoint hospedado pelo IVS contendo informações criptografadas sobre o segmento e sua localização nos caches do IVS. |
Lista de reprodução de variante VOD com SSAI
Quando um streaming ao vivo é gravado, o IVS gera e grava uma lista de reprodução VOD no S3 que inclui marcadores de anúncios SCTE-35 nas posições em que os anúncios foram acionados durante o streaming ao vivo. Para veicular anúncios durante a reprodução de VOD, você veicula essa lista de reprodução do IVS por meio do MediaTailor, que é responsável por inserir segmentos de anúncios na lista de reprodução. O MediaTailor substitui os segmentos originais de VOD durante o intervalo comercial por segmentos de anúncio.
1. Marcador de início de intervalo comercial (SCTE35-OUT)
#EXT-X-DATERANGE:ID="12345678",START-DATE="2025-12-06T00:45:45.723Z",PLANNED-DURATION=20.0,SCTE35-OUT=0xFC302000000000000000FFF00F05F8E7AEFC7FFFFE001B7740000000000000340CFD88
| Atributo | Descrição |
|---|---|
ID |
Identificador exclusivo para esse intervalo comercial. Usado para correlacionar os marcadores de início e fim. |
START-DATE |
Data e hora do programa ISO 8601 em que o intervalo comercial inicia. |
PLANNED-DURATION |
A duração esperada do intervalo comercial em segundos. |
SCTE35-OUT |
Marcador SCTE-35 sinalizando o início do intervalo comercial. |
2. Segmentos de anúncios (inseridos pelo MediaTailor)
#EXTINF:2.0, ../../../../segment/b2857627df9428679e888ee8daa979d0b7559801/gk-test-ivs-vod/bd0c7d90-a47c-4a91-b5ec-7d0f9897049b/0/3
| Atributo | Descrição |
|---|---|
EXTINF |
Duração do segmento do anúncio em segundos. |
Segment URL |
Caminho relativo para o segmento de anúncio hospedado pelo MediaTailor. |
3. Marcador de fim do intervalo comercial (SCTE35-IN)
#EXT-X-DATERANGE:ID="12345678",START-DATE="2025-12-06T00:45:45.723Z",END-DATE="2025-12-06T00:46:07.889Z",DURATION=20.0,SCTE35-IN=0xFC302000000000000000FFF00F05F8E7AEFC7F7FFE001B7740000000000000C23E5851
| Atributo | Descrição |
|---|---|
ID |
Mesmo ID do marcador de início. Une os dois. |
START-DATE |
Hora de início original do intervalo comercial (igual ao marcador de início). |
END-DATE |
Carimbo de data e hora do ISO 8601 de quando o intervalo comercial terminou. |
DURATION |
A duração real do intervalo comercial em segundos. |
SCTE35-IN |
Marcador SCTE-35 sinalizando o fim do intervalo comercial. |