Os SDKs do IMA facilitam a integração de anúncios multimídia aos seus sites e aplicativos. Os SDKs do IMA podem solicitar anúncios de qualquer servidor compatível com VAST e gerenciar a reprodução de anúncios nos seus aplicativos. Com os SDKs de DAI do IMA, os apps fazem uma solicitação de stream para anúncios e vídeos de conteúdo, sejam eles VOD ou ao vivo. Em seguida, o SDK retorna um stream de vídeo combinado para que você não precise alternar entre o anúncio e o conteúdo de vídeo no seu app.
Selecione a solução de DAI do seu interesse
DAI de veiculação de conjunto
Os SDKs do IMA facilitam a integração de anúncios multimídia aos seus sites e aplicativos. Os SDKs do IMA podem solicitar anúncios de qualquer servidor compatível com VAST e gerenciar a reprodução de anúncios nos seus aplicativos. Com os SDKs de DAI do IMA, os apps fazem uma solicitação de stream para anúncios e vídeos de conteúdo, sejam eles VOD ou ao vivo. Em seguida, o SDK retorna um stream de vídeo combinado para que você não precise alternar entre o anúncio e o conteúdo de vídeo no seu app.
Este guia demonstra como reproduzir um stream de veiculação de conjunto DAI usando o SDK de DAI do IMA para Android com um player de vídeo simples para reprodução de streams ao vivo e VOD. Para conferir ou acompanhar uma integração de amostra completa, faça o download do exemplo de veiculação de conjunto.
Visão geral da veiculação de conjunto de DAI do IMA
StreamRequest
: um objeto que define uma solicitação de stream para os servidores de publicidade do Google. Precisa ser criado usandoImaSdkFactory.createPodStreamRequest()
ouImaSdkFactory.createPodVodStreamRequest()
para ativar a disponibilização de pods. Esses métodos exigem um código de rede, ecreatePodStreamRequest
também requer uma chave de recurso personalizada e uma chave de API opcional. Ambos incluem outros parâmetros opcionais.StreamManager
: objeto que gerencia a comunicação entre o stream de vídeo e o SDK de DAI do IMA, por exemplo, dispara pings de rastreamento e encaminha eventos de stream ao editor.
Pré-requisitos
Um app Android já configurado com o SDK de DAI do IMA para reproduzir streams de vídeo com anúncios da DAI. Se você ainda não tem um app desse tipo, recomendamos usar o BasicExample da DAI do Android como ponto de partida. O BasicExample tem a codebase referenciada neste guia.
É importante que seu aplicativo envie eventos ID3 usando
VideoStreamPlayerCallback.onUserTextReceived()
para que a DAI do IMA funcione. Veja este exemplo de snippet de código de DAI de serviço completo.
Configurar as variáveis de veiculação de pods
Todas as alterações necessárias para a disponibilização de pods são feitas em SampleAdsWrapper.java. A primeira etapa é atualizar as variáveis constantes.
Estas são as constantes de solicitação de stream do conjunto de anúncios a serem adicionadas:
STREAM_URL
: usado somente para transmissões ao vivo: o URL do stream de vídeo fornecido pelo manipulador de manifesto ou parceiro terceirizado que usa a veiculação de conjuntos. Você precisa inserir o ID de stream fornecido pelo SDK de DAI do IMA antes de fazer uma solicitação. Nesse caso, o URL do stream inclui um marcador,"[[STREAMID]]"
, que é substituído pelo ID do stream antes de fazer uma solicitação.NETWORK_CODE
: é o código de rede da sua conta do Ad Manager 360.CUSTOM_ASSET_KEY
: usado somente para transmissões ao vivo: a chave de recurso personalizada que identifica o evento de veiculação de conjuntos no Ad Manager 360. Isso pode ser criado pelo seu manipulador de manifesto ou parceiro terceirizado de veiculação de pods.API_KEY
: usado somente para transmissões ao vivo: uma chave de API opcional que pode ser necessária para recuperar um ID de stream do SDK de DAI do IMA.
O BasicExample da DAI do Android foi projetado para reproduzir vários tipos de stream diferentes. No entanto, para veiculação em conjunto, ele é configurado para reproduzir apenas um único stream. Mude a seção de variáveis do exemplo para corresponder ao seguinte:
/** This class adds ad-serving support to Sample HlsVideoPlayer */
public class SampleAdsWrapper
implements AdEvent.AdEventListener, AdErrorEvent.AdErrorListener, AdsLoader.AdsLoadedListener {
// Podserving Stream Constants.
private static final String STREAM_URL =
"https://encodersim.sandbox.google.com/masterPlaylist/9c654d63-5373-4673-8c8d-6d92b66b9d46/" +
"master.m3u8?gen-seg-redirect=true&network=51636543&event=google-sample" +
"&pids=devrel4628000,devrel896000,devrel3528000,devrel1428000,devrel2628000,devrel1928000" +
"&seg-host=dai.google.com&stream_id=[[STREAMID]]";
private static final String NETWORK_CODE = "51636543";
private static final String CUSTOM_ASSET_KEY = "google-sample";
private static final String API_KEY = "";
private static final String PLAYER_TYPE = "DAISamplePlayer";
/** Log interface, so we can output the log commands to the UI or similar. */
public interface Logger {
...
Criar uma solicitação de stream de conjunto ao vivo ou VOD para ativar a veiculação de conjuntos
Veiculação de conjuntos de transmissão ao vivo
Remova o método buildStreamRequest()
, que foi usado para alternar entre
a criação de vários tipos de stream. Em seguida, mude requestAndPlayAds()
para chamar
ImaSdkFactory.createPodStreamRequest()
e criar uma solicitação de anúncio de veiculação
de conjunto ativo. Por fim, solicite o stream usando AdsLoader.requestStream()
.
public void requestAndPlayAds() {
StreamRequest request =
sdkFactory.createPodStreamRequest(NETWORK_CODE, CUSTOM_ASSET_KEY, API_KEY);
request.setFormat(StreamFormat.HLS);
adsLoader.addAdErrorListener(this);
adsLoader.addAdsLoadedListener(this);
adsLoader.requestStream(request);
}
Veiculação de conjuntos de streams de VOD
Remova o método buildStreamRequest()
, que foi usado para alternar entre
a criação de vários tipos de stream. Em seguida, altere requestAndPlayAds()
para chamar ImaSdkFactory.createPodVodStreamRequest()
e criar uma solicitação de anúncio de veiculação de conjunto de VOD. Por fim, solicite o stream usando AdsLoader.requestStream()
.
public void requestAndPlayAds() {
StreamRequest request =
sdkFactory.createPodVodStreamRequest(NETWORK_CODE);
request.setFormat(StreamFormat.HLS);
adsLoader.addAdErrorListener(this);
adsLoader.addAdsLoadedListener(this);
adsLoader.requestStream(request);
}
Editar e definir o URL da transmissão
Veiculação de conjuntos de transmissão ao vivo
Chame StreamManager.getStreamId()
para conseguir o ID do fluxo. Ele precisa ser
inserido no STEAM_URL
, substituindo "[[STREAMID]]"
. Depois que essa mudança for
feita, o novo URL do stream poderá ser definido usando videoPlayer.setStreamUrl()
.
@Override
public void onAdsManagerLoaded(AdsManagerLoadedEvent event) {
streamManager = event.getStreamManager();
streamManager.addAdErrorListener(this);
streamManager.addAdEventListener(this);
// To enable streams
String streamID = streamManager.getStreamId();
String streamUrl = STREAM_URL.replace("[[STREAMID]]", streamID);
streamManager.init();
videoPlayer.setStreamUrl(streamUrl);
videoPlayer.play();
}
Veiculação de conjuntos de streams de VOD
Chame StreamManager.getStreamId()
para conseguir o ID do fluxo. Em seguida, solicite um URL de stream ao seu parceiro de tecnologia de vídeo (VTP, na sigla em inglês). Em seguida, chame StreamManager.loadThirdPartyStream()
para que o IMA carregue o URL da transmissão e as legendas retornadas pelo TVP.
@Override
public void onAdsManagerLoaded(AdsManagerLoadedEvent event) {
streamManager = event.getStreamManager();
streamManager.addAdErrorListener(this);
streamManager.addAdEventListener(this);
// To enable streams
String streamID = streamManager.getStreamId();
// 'vtpInterface' is a place holder for your own video technology partner
// (VTP) API calls.
String streamUrl = vtpInterface.requestStreamURL(streamID);
streamManager.init();
// Pass any subtitles returned by your VTP in this step as well.
streamManager.loadThirdPartyStream(streamUrl, subtitles);
}
Quando a veiculação de conjuntos está ativada, o IMA não faz chamadas para VideoStreamPlayer.loadUrl()
. Portanto, é possível remover todas as chamadas para videoPlayer.setStreamUrl()
e videoPlayer.play()
dele.
Pronto! Agora você está solicitando e exibindo anúncios em um stream de veiculação de conjunto com o SDK de DAI do IMA para Android. Para conferir outros exemplos do SDK do Android em uso, consulte os exemplos no GitHub (link em inglês).