Selecione a solução de DAI do seu interesse
DAI de serviço completo
Este guia demonstra como reproduzir um stream da DAI usando o SDK de DAI do IMA CAF. Se você quiser ver ou acompanhar um exemplo de integração completo, faça o download do exemplo.
Antes de usar este guia, familiarize-se com o protocolo Receptor da Web do
framework de aplicativo do Chromecast. Este
guia pressupõe um nível básico de familiaridade com os conceitos de receptor de CAF, como
interceptadores
de mensagem
e
objetos
mediaInformation
, bem como familiaridade com o uso da ferramenta de comando e controle
do Cast para emular um remetente de CAF.
Para usar a DAI do IMA, você precisa ter uma conta do Ad Manager 360. Se você tiver uma conta do Ad Manager, entre em contato com o gerente de contas para saber mais detalhes. Para informações sobre como se inscrever no Ad Manager, acesse a Central de Ajuda do Ad Manager.
Para informações sobre como integrar com outras plataformas ou usar os SDKs do lado do cliente do IMA, consulte SDKs do Interactive Media Ads (link em inglês).
Visão geral da DAI do CAF
A implementação da DAI usando o SDK de DAI do CAF do IMA envolve dois componentes principais, conforme demonstrado neste guia:
StreamRequest
: um objeto que define uma solicitação de stream para os servidores de publicidade do Google. As solicitações de stream 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 opcional, além de outros parâmetros opcionais.
StreamManager
: um objeto que processa a comunicação entre o stream de vídeo e o SDK de DAI do IMA, como disparar 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 receptor da Web hospedado registrado no seu Play Console do Google Cast e que pode ser modificado para hospedar o código fornecido por este guia.
- Um app de envio configurado para usar seu 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 remetente para incluir os seguintes campos:
contentId
|
Um identificador exclusivo para este item de mídia | |
contentUrl
|
O URL do stream substituto a ser carregado se o StreamRequest da DAI falhar por qualquer motivo | |
streamType
|
Para transmissões ao vivo, esse valor precisa ser definido como "AO VIVO". Para transmissões VOD, ele precisa ser definido como "BUFFERED". | |
customData
|
assetKey
|
Apenas transmissões ao vivo. Identifica a transmissão ao vivo a ser carregada |
contentSourceId
|
Somente transmissões VOD. Identifica o feed de mídia que contém o stream solicitado. | |
videoId
|
Somente transmissões VOD. Identifica o stream solicitado dentro do feed de mídia especificado. | |
ApiKey
|
Uma chave de API opcional que pode ser necessária para recuperar o URL de stream do SDK de DAI do IMA | |
senderCanSkip
|
Um valor booleano para informar ao destinatário se o dispositivo de envio pode exibir um botão "Pular", o que ativa a compatibilidade com anúncios puláveis. |
Para configurar esses valores na ferramenta de comando e controle de transmissão, clique na guia Load
Media 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 carregamento personalizado pode ser enviado ao receptor para testar as etapas a seguir.
Criar um receptor CAF básico
Seguindo o Guia básico do receptor 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 de DAI do IMA e acessar o Gerenciador de players
Adicione uma tag de script para importar o SDK de DAI do IMA para CAF para seu receptor da Web, logo após o carregamento do script CAF. O SDK de DAI do CAF é contínuo, portanto, não é necessário definir uma versão específica. Em seguida, na tag de script a seguir, armazene o contexto do destinatário e o gerenciador do player 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 streams do IMA
Inicialize o Gerenciador de stream do SDK de DAI do CAF.
<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 carregamento
O SDK de DAI do CAF usa o interceptor
de mensagens de carregamento do CAF
para fazer solicitações de stream e substituir o URL de conteúdo pelo stream da DAI final.
O interceptador de mensagens chama streamManager.requestStream(), que processa a configuração de intervalos de anúncio, solicita o stream e substitui o contentURL
existente.
Só pode haver um interceptador de mensagens de carregamento. Portanto, se o app exigir o uso do interceptador, será necessário incorporar funções personalizadas no 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 da DAI do CAF, você precisa criar sua 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 streams de DAI com o SDK de DAI para CAF do Google. Para saber mais sobre recursos avançados do SDK, consulte os outros guias ou faça o download dos nossos exemplos de aplicativos receptores.