Selecione a solução de DAI de seu interesse
DAI de serviço completo
Este guia demonstra como reproduzir uma transmissão DAI usando o SDK IMA CAF DAI. Se você quiser conferir ou seguir uma integração de exemplo completa, faça o download do exemplo.
Antes de usar este guia, familiarize-se com o protocolo do receptor da Web do
Chromecast Application Framework. Este
guia pressupõe um nível básico de familiaridade com os conceitos do receptor do CAF, como
interceptors
de mensagens
e objetos
mediaInformation
, bem como o uso da ferramenta de comando e controle
do Google Cast para emular um remetente do CAF.
Para usar o IMA DAI, você precisa ter uma conta do Ad Manager 360. Se você tiver uma conta do Ad Manager, entre em contato com seu gerente de contas para mais detalhes. Para saber como se inscrever no Ad Manager, acesse a Central de Ajuda do Ad Manager.
Para informações sobre a integração com outras plataformas ou o uso dos SDKs do lado do cliente do IMA, consulte SDKs do Interactive Media Ads.
Visão geral da DAI do CAF
A implementação de DAI usando o SDK IMA CAF DAI envolve dois componentes principais, conforme demonstrado neste guia:
StreamRequest
: um objeto que define uma solicitação de transmissão para os servidores de publicidade do Google. As solicitações de transmissão têm duas variedades principais:LiveStreamRequest
: especifica uma chave de recurso e uma chave de API opcional, além de outros parâmetros opcionais.VODStreamRequest
: especifica um ID da origem do conteúdo, um ID do vídeo e uma chave de API, além de outros parâmetros opcionais.
StreamManager
: um objeto que processa a comunicação entre o stream de vídeo e o SDK do IMA DAI, como acionar pings de rastreamento e encaminhar eventos de stream para o editor.
Pré-requisitos
- Uma conta do Console para desenvolvedores do Google Cast com um dispositivo de teste registrado.
- Um app de receptor da Web hospedado que é registrado no Play Console do Google Cast e pode ser modificado para hospedar o código fornecido neste guia.
- Um app de envio configurado para usar o app receptor da Web. Este exemplo usa a ferramenta de comando e controle do Cast como remetente.
Configurar os objetos MediaInfo do remetente
Primeiro, configure o objeto MediaInfo do app de envio para incluir os seguintes campos:
contentId
|
Um identificador exclusivo para este item de mídia | |
contentUrl
|
O URL de stream substituto a ser carregado se a DAI StreamRequest falhar por qualquer motivo | |
streamType
|
Para transmissões ao vivo, esse valor precisa ser definido como "LIVE". Para transmissões VOD, esse valor precisa ser definido como "BUFFERED". | |
customData
|
assetKey
|
Somente transmissões ao vivo. Identifica a transmissão ao vivo a ser carregada |
contentSourceId
|
Somente streams de VOD. Identifica o feed de mídia que contém o fluxo solicitado. | |
videoId
|
Somente streams de VOD. Identifica o stream solicitado no feed de mídia especificado. | |
ApiKey
|
Uma chave de API opcional que pode ser necessária para recuperar o URL do stream do SDK do IMA DAI | |
senderCanSkip
|
Um valor booleano para informar ao receptor se o dispositivo de envio tem a capacidade de mostrar um botão de pular, ativando o suporte a anúncios puláveis |
Para configurar esses valores na ferramenta de comando e controle de transmissão, clique na guia Carregar
mídia e defina o tipo de solicitação de carregamento personalizado como LOAD
. Em seguida, substitua os dados JSON na área de texto por um dos seguintes objetos JSON:
AO VIVO
{
"media": {
"contentId": "bbb",
"contentUrl": "https://storage.googleapis.com/interactive-media-ads/media/bbb.m3u8",
"streamType": "LIVE",
"customData": {
"assetKey": "sN_IYUG8STe1ZzhIIE_ksA",
"ApiKey": "",
"senderCanSkip": true
}
},
"credentials": "testCredentials"
}
VOD
{
"media": {
"contentId": "tos",
"contentUrl": "https://storage.googleapis.com/interactive-media-ads/media/tos.m3u8",
"streamType": "BUFFERED",
"customData": {
"contentSourceId": "2548831",
"videoId": "tears-of-steel",
"ApiKey": "",
"senderCanSkip": true
}
},
"credentials": "testCredentials"
}
Esse objeto de solicitação de carga personalizada pode ser enviado ao receptor para testar as seguintes etapas.
Criar um receptor CAF básico
Seguindo o guia de receptor básico do SDK do CAF, crie um receptor da Web básico.
O código do receptor vai ficar assim:
<html>
<head>
<script type="text/javascript"
src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js">
</script>
</head>
<body>
<cast-media-player></cast-media-player>
<script>
cast.framework.CastReceiverContext.getInstance().start();
</script>
</body>
</html>
Importar o SDK do IMA DAI e acessar o Player Manager
Adicione uma tag de script para importar o SDK do IMA DAI para CAF ao seu receptor da Web, logo após o script carregar o CAF. O SDK do CAF DAI é permanente. Portanto, não é necessário definir uma versão específica. Em seguida, na tag de script a seguir, armazene o contexto do receptor e o gerenciador de jogadores como constantes antes de iniciar o receptor.
<html>
<head>
<script type="text/javascript"
src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
<script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
<cast-media-player></cast-media-player>
<script>
const castContext = cast.framework.CastReceiverContext.getInstance();
const playerManager = castContext.getPlayerManager();
castContext.start();
</script>
</body>
</html>
Inicializar o gerenciador de stream do IMA
Inicialize o Stream Manager do SDK da CAF DAI.
<html>
<head>
<script type="text/javascript"
src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
<script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
<cast-media-player></cast-media-player>
<script>
const castContext = cast.framework.CastReceiverContext.getInstance();
const playerManager = castContext.getPlayerManager();
const streamManager = new google.ima.cast.dai.api.StreamManager();
castContext.start();
</script>
</body>
</html>
Criar o interceptador de mensagens de carga
O SDK DAI do CAF usa o interceptor de
mensagem de carga do CAF
para fazer solicitações de stream e substituir o URL de conteúdo pelo stream DAI final.
O interceptor de mensagens chama streamManager.requestStream(), que processa
a configuração de intervalos de anúncios, solicita o stream e substitui o
contentURL
atual.
Só pode haver um único interceptor de mensagem de carregamento. Portanto, se o app exigir o uso do interceptor, é necessário incorporar todas as funções personalizadas ao mesmo callback.
<html>
<head>
<script type="text/javascript"
src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
<script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
<cast-media-player></cast-media-player>
<script>
const castContext = cast.framework.CastReceiverContext.getInstance();
const playerManager = castContext.getPlayerManager();
const streamManager = new google.ima.cast.dai.api.StreamManager();
const getStreamRequest = (request) => null;
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.LOAD, (request) => {
return streamManager.requestStream(request, getStreamRequest(request))
.then((request) => {
this.broadcast('Stream request successful.');
return Promise.resolve(request);
})
.catch((error) => {
this.broadcast('Stream request failed.');
return Promise.resolve(request);
});
});
castContext.start();
</script>
</body>
</html>
Criar a solicitação de stream
Para concluir a integração do CAF DAI, crie uma solicitação de
stream
usando os dados incluídos no objeto mediaInfo
do remetente.
<html>
<head>
<script type="text/javascript"
src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
<script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
<cast-media-player></cast-media-player>
<script>
const castContext = cast.framework.CastReceiverContext.getInstance();
const playerManager = castContext.getPlayerManager();
const streamManager = new google.ima.cast.dai.api.StreamManager();
const getStreamRequest = (request) => {
const imaRequestData = request.media.customData;
let streamRequest = null;
if (imaRequestData.assetKey) {
// Live stream
streamRequest = new google.ima.cast.dai.api.LiveStreamRequest();
streamRequest.assetKey = imaRequestData.assetKey;
} else if (imaRequestData.contentSourceId) {
// VOD stream
streamRequest = new google.ima.cast.dai.api.VODStreamRequest();
streamRequest.contentSourceId = imaRequestData.contentSourceId;
streamRequest.videoId = imaRequestData.videoId;
}
if (streamRequest && imaRequestData.ApiKey) {
streamRequest.ApiKey = imaRequestData.ApiKey;
}
if (streamRequest && imaRequestData.senderCanSkip) {
streamRequest.senderCanSkip = imaRequestData.senderCanSkip;
}
return streamRequest;
};
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.LOAD, (request) => {
return streamManager.requestStream(request, getStreamRequest(request))
.then((request) => {
return Promise.resolve(request);
})
.catch((error) => {
this.broadcast('Stream request failed.');
return Promise.resolve(request);
});
});
castContext.start();
</script>
</body>
</html>
Agora é possível solicitar e reproduzir transmissões de DAI com o SDK do CAF DAI do Google. Para saber mais sobre recursos mais avançados do SDK, consulte os outros guias ou faça o download dos nossos aplicativos receptores de exemplo.