Selecione a solução de DAI do seu interesse
DAI de serviço completo
Este guia demonstra como reproduzir um stream de DAI usando o SDK de DAI do IMA CAF. Para conferir ou acompanhar uma integração de amostra completa, faça o download do exemplo.
Antes de usar este guia, familiarize-se com o protocolo Web Receiver do
framework de aplicativos do Chromecast. Este
guia pressupõe um nível básico de familiaridade com os conceitos de receptor do CAF, como
interceptores
de mensagem
e objetos
mediaInformation
, bem como familiaridade com o uso da ferramenta Cast Command and Control
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 mais detalhes. Para informações sobre 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 sobre o uso de SDKs do lado do cliente do IMA, consulte SDKs do Interactive Media Ads.
Visão geral da DAI do CAF
A implementação da DAI usando o SDK de DAI do IMA CAF 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. Há duas variedades principais de solicitações de stream:LiveStreamRequest
: especifica uma Chave de recurso e uma chave de API opcional, bem como 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 gerencia a comunicação entre o stream de vídeo e o SDK de DAI do IMA, como disparo de pings de rastreamento e encaminhamento de eventos de stream para o editor.
Pré-requisitos
- Uma conta do Play Console do Google Cast com um dispositivo de teste registrado.
- Um app de receptor da Web hospedado registrado no Console para desenvolvedores do Google Cast e que pode ser modificado para hospedar o código fornecido por este guia.
- Um app de envio configurado para usar o app receptor da Web. Neste exemplo, a ferramenta Cast Command and Control é usada 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 de 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 "LIVE". Para transmissões VOD, ele precisa ser definido como "BUFFERED". | |
customData
|
assetKey
|
Somente transmissões ao vivo. Identifica a transmissão ao vivo a ser carregada |
contentSourceId
|
Somente transmissões de VOD. Identifica o feed de mídia que contém o stream solicitado. | |
videoId
|
Somente transmissões 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 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", permitindo o suporte a anúncios puláveis |
Para configurar esses valores na ferramenta de comando e controle do cast, 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 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 player
Adicione uma tag de script a fim de importar o SDK de DAI do IMA para o CAF para seu receptor da Web, logo após o script carregar o CAF. O SDK de DAI do CAF é 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 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 streams do SDK da 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 interceptador
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 definição dos intervalos de anúncio, a solicitação do stream e a substituição do
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, é preciso criar a 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 do CAF 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.