IMA DAI SDK'sını kullanmaya başlama

İlgilendiğiniz DAI çözümünü seçme

Kapsül yayınlama DAI

IMA SDK'ları, multimedya reklamlarını web sitelerinize ve uygulamalarınıza entegre etmeyi basitleştirir.

IMA SDK'ları, herhangi bir VAST uyumlu reklam sunucunuzu yönetebilir ve uygulamalarınızda reklam oynatmayı yönetebilirsiniz.

IMA DAI SDK'larıyla, uygulamalar aşağıdakiler için reklam ve içerik videosu için akış isteğinde bulunur seç-izle video veya canlı içerik gibi. SDK daha sonra birleştirilmiş bir video akışı döndürür. Bu sayede, hesabınızda reklam ve içerik videosu arasında geçiş uygulamasını indirin.

Bu kılavuzda, IMA kullanılarak Canlı DAI Kapsül Yayınlama yayınının nasıl oynatılacağı gösterilmektedir CAF için DAI SDK'sı.

Bu kılavuzu kullanmadan önce, Chromecast Uygulama Çerçevesi'nin Web Alıcısı protokolü. Bu kılavuzda CAF alıcısı kavramlarının, örneğin: mesaj kesiciler ve mediaInformation ve cihazlar gibi Cast Komut ve Denetim aracını, bir CAF göndericisi taklit edilir.

IMA DAI kapsül yayınını kullanmak için bir kapsül yayınlama iş ortağıyla çalışıyor olmanız ve bir Ad Manager 360 İleri Düzey hesap. Ad Manager hesabınız varsa şunun için hesap yöneticinizle iletişime geçin: inceleyebilirsiniz. Ad Manager'a kaydolma hakkında bilgi için Ad Manager Yardım Merkezi.

Diğer platformlarla entegrasyon veya IMA'yı kullanma hakkında bilgi için istemci tarafı SDK'lar için Interactive Media Ads SDK'ları konusuna bakın.

IMA DAI Kapsül Yayınlamaya genel bakış

IMA CAF DAI SDK'sı kullanarak kapsül yayınlamanın uygulanması iki ana bileşen içerir: aşağıdaki örneklere göz atabilirsiniz:

  • StreamRequest: Google'ın reklam sunucularına yapılan akış isteğini tanımlayan bir nesne. İstekler bir ağ kodu, özel öğe anahtarı ve isteğe bağlı bir API anahtarı belirtir. yanı sıra diğer isteğe bağlı parametreleri de kullanabilirsiniz.
  • StreamManager: Video akışı ile IMA DAI arasındaki iletişimi işleyen nesne izleme ping'lerini tetikleme ve akış etkinliklerini yayıncısına ait.

Ön koşullar

  • Şu Google Hesabı'na sahip bir Cast Developer Console hesabı: kayıtlı test cihazlarıdır.
  • Barındırılan bir web alıcısı Cast Developer Console'unuza kayıtlıdır ve barındırmak için değiştirilebilir kodu kullanın.
  • Web alıcı uygulamanızı kullanacak şekilde yapılandırılan bir gönderme uygulama. bu örneğin amacı için Cast Command and Control tool gönderin.

Gönderenin MediaInfo nesnelerini yapılandırma

Öncelikle gönderen uygulamanızın MediaInfo nesne aşağıdaki alanları dahil edin:

Alan İçindekiler
contentId Bu medya öğesinin benzersiz tanımlayıcısı.

CONTENT_ID

contentUrl İsteğe bağlı. DAI akışı yüklenemezse oynatılacak yedek akış URL'si.

BACKUP_STREAM_URL

contentType İsteğe bağlı. İçerik yedek akışlarının mime türü. Yalnızca DASH için gereklidir akışlar.

CONTENT_STREAM_MIMETYPE

streamType Bu değer için kullanılan dize değişmez değeri veya sabit değer gönderene göre değişir. platformu.
customData customData alanı, ek zorunlu alanları doldurun.
Alan İçindekiler
manifestUrl Manifest düzenleyiciniz veya üçüncü taraf tarafından sağlanan video akışı URL'si iş ortağı. IMA DAI SDK'sını eklemeniz gerekir. Bu örnekte, manifest URL'si [[STREAMID]] yer tutucusu içerir. Bu yer tutucu, akış kimliğini kontrol edin.

MANIFEST_URL

networkCode Google Ad Manager 360 hesabınızın ağ kodu.

NETWORK_CODE

customAssetKey Google Ads'de kapsül yayınlama etkinliğinizi tanımlayan özel öğe anahtarı Yönetici 360'a gidin. Bazı durumlarda bunu manifest dosyasından alabilirsiniz: manipülatör veya üçüncü taraf kapsül sunma iş ortağı.

CUSTOM_ASSET_KEY

apiKey IMA DAI SDK'sından Akış Kimliği almak için kullanılan isteğe bağlı bir API anahtarı.

API_KEY

Aşağıda, başlamanıza yardımcı olacak bazı kod örneklerini bulabilirsiniz:

Web

Bir Cast web gönderende bu değerleri yapılandırmak için önce bir MediaInfo bir nesne yükleyin, ardından bir yükleme işlemi yapın isteği gönderin.

// Create mediaInfo object
const mediaInfo = new chrome.cast.media.MediaInfo("CONTENT_ID");
mediaInfo.contentUrl = "BACKUP_STREAM_URL";
mediaInfo.contentType = "CONTENT_STREAM_MIMETYPE";
mediaInfo.streamType = chrome.cast.media.StreamType.LIVE;
mediaInfo.customData = {
manifestUrl: "MANIFEST_URL",
networkCode: "NETWORK-CODE",
customAssetKey: "CUSTOM_ASSET_KEY",
apiKey: "API_KEY"
};

// Make load request to cast web receiver
const castSession = cast.framework.CastContext.getInstance().getCurrentSession();
const request = new chrome.cast.media.LoadRequest(mediaInfo);
castSession.loadMedia(request).then(
  () => { console.log('Load succeed'); },
  (errorCode) => { console.log('Error code: ' + errorCode); });

Android

Bir Cast web gönderende bu değerleri yapılandırmak için önce bir MediaInfo nesnesi ve sonrasında bir Web'e yükleme isteği alıcı.

JSONObject customData = new JSONObject()?
  .put("manifestUrl", "MANIFEST_URL")
  .put("networkCode", "NETWORK-CODE")
  .put("customAssetKey", "CUSTOM_ASSET_KEY")
  .put("apiKey", "API_KEY");
MediaInfo mediaInfo = MediaInfo.Builder("CONTENT_ID")
  .setContentUrl("BACKUP_STREAM_URL")
  .setContentType("CONTENT_STREAM_MIMETYPE")
  .setStreamType(MediaInfo.STREAM_TYPE_LIVE)
  .setCustomData(customData)
  .build();

RemoteMediaClient remoteMediaClient = mCastSession.getRemoteMediaClient();
remoteMediaClient.load(new MediaLoadRequestData.Builder().setMediaInfo(mediaInfo).build());

iOS (Obj-C)

Bir Cast web gönderende bu değerleri yapılandırmak için önce bir GCKMediaInformation bir nesne yükleyin, ardından bir yükleme işlemi yapın isteği gönderin.

NSURL url = [NSURL URLWithString:@"BACKUP_STREAM_URL"];
NSDictionary *customData = @{
  @"manifestUrl": @"MANIFEST_URL",
  @"networkCode": @"NETWORK-CODE",
  @"customAssetKey": @"CUSTOM_ASSET_KEY",
  @"apiKey": @"API_KEY"};
mediaInfoBuilder.customData = customData;

GCKMediaInformationBuilder *mediaInfoBuilder =
  [[GCKMediaInformationBuilder alloc] initWithContentID: @"CONTENT_ID"];
mediaInfoBuilder.contentURL = url;
mediaInfoBuilder.contentType = @"CONTENT_STREAM_MIMETYPE";
mediaInfoBuilder.streamType = GCKMediaStreamTypeLive;
mediaInfoBuilder.customData = customData;
self.mediaInformation = [mediaInfoBuilder build];

GCKRequest *request = [self.sessionManager.currentSession.remoteMediaClient loadMedia:self.mediaInformation];
if (request != nil) {
  request.delegate = self;
}

iOS (Swift)

Bir Cast web gönderende bu değerleri yapılandırmak için önce bir GCKMediaInformation bir nesne yükleyin, ardından bir yükleme işlemi yapın isteği gönderin.

let url = URL.init(string: "BACKUP_STREAM_URL")
guard let mediaURL = url else {
  print("invalid mediaURL")
  return
}

let customData = [
  "liveConfigID": "MANIFEST_URL",
  "networkCode": "NETWORK-CODE",
  "customAssetKey": "CUSTOM_ASSET_KEY",
  "region": "API_KEY"
]

let mediaInfoBuilder = GCKMediaInformationBuilder.init(contentId: "CONTENT_ID")
mediaInfoBuilder.contentURL = mediaUrl
mediaInfoBuilder.contentType = @"CONTENT_STREAM_MIMETYPE"
mediaInfoBuilder.streamType = GCKMediaStreamType.Live
mediaInfoBuilder.customData = customData
mediaInformation = mediaInfoBuilder.build()

guard let mediaInfo = mediaInformation else {
  print("invalid mediaInformation")
  return
}

if let request = sessionManager.currentSession?.remoteMediaClient?.loadMedia
(mediaInfo) {
  request.delegate = self
}

CAC aracı

Bu değerleri Cast Command and Control'te yapılandırmak için aracını kullanın, Medya Yükle sekmesini tıklayın ve özel yükleme isteği türünü YÜKLE olarak ayarlayın. Ardından metin alanındaki JSON verilerini, şu JSON ile:

{
  "media": {
    "contentId": "CONTENT_ID",
    "contentUrl": "BACKUP_STREAM_URL",
    "contentType": ""CONTENT_STREAM_MIMETYPE"",
    "streamType": "LIVE",
    "customData": {
      "liveConfigID": "MANIFEST_URL",
      "networkCode": "NETWORK-CODE",
      "customAssetKey": "CUSTOM_ASSET_KEY",
      "oAuthToken": "API_KEY"
    }
  }
}

Bu özel yükleme isteği, paketin geri kalanını test etmek için alıcıya gönderilebilir. adımları.

Temel CAF alıcısı oluşturma

CAF SDK Özel Web Alıcısı'nda görüldüğü gibi bir özel web alıcısı oluşturun. Rehber.

Alıcınızın kodu şu şekilde görünmelidir:

<html>
<head>
  <script
      src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js">
  </script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <script>
    // ...
  </script>
</body>
</html>

IMA DAI SDK'sını içe aktarın ve Oynatıcı Yöneticisi'ni edinme

CAF için IMA DAI SDK'sını web alıcınıza aktarmak üzere bir komut dosyası etiketi ekleyin. yükleyin. Komut dosyası etiketinde, alıcı bağlamını saklayın ve oyuncu yöneticisini sabit tutar.

<html>
<head>
  <script
      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>

IMA Stream Manager'ı başlatma

IMA Akış Yöneticisi'ni başlatın.

<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>

Akış Yöneticisi Yük Önleyicisini Oluşturma

Medya öğeleriniz CAF'ye iletilmeden önce akış isteğinizi YÜKLE mesajı anlamına gelir.

    const castContext = cast.framework.CastReceiverContext.getInstance();
    const playerManager = castContext.getPlayerManager();
    const streamManager = new google.ima.cast.dai.api.StreamManager();

    /**
     * Creates a livestream request object for a pod serving stream.
     * @param {!LoadRequestData} castRequest The request object from the cast sender
     * @return {StreamRequest} an IMA stream request
     */
    const createStreamRequest = (castRequest) => { /* ... */};

    /**
     * Initates a DAI stream request for the final stream manifest.
     * @param {!LoadRequestData} castRequest The request object from the cast sender
     * @return {Promise<LoadRequestData>} a promise that resolves to an updated castRequest, containing the DAI stream manifest
     */
    const createDAICastRequest = (castRequest) => {
        return streamManager.requestStream(castRequest, createStreamRequest(castRequest))
          .then((castRequestWithPodStreamData) => {
            console.log('Successfully made DAI stream request.');
            // ...
            return castRequestWithPodStreamData;
          })
          .catch((error) => {
            console.log('Failed to make DAI stream request.');
            // CAF will automatically fallback to the content URL
            // that it can read from the castRequest object.
            return castRequest;
          });
    };

    playerManager.setMessageInterceptor(
        cast.framework.messages.MessageType.LOAD, createDAICastRequest);

    castContext.start();

Akış isteğini oluşturma

Şu verilere göre kapsül yayınlama akışı oluşturmak için createStreamRequest işlevini tamamlayın: onayladı.

    /**
     * Creates a livestream request object for a pod serving stream.
     * @param {!LoadRequestData} castRequest The request object from the cast sender
     * @return {StreamRequest} an IMA stream request
     */
    const createStreamRequest = (castRequest) => {

      const streamRequest = new google.ima.cast.dai.api.PodStreamRequest();
      const customData = castRequest.media.customData;

      streamRequest.customAssetKey = customData.customAssetKey;
      streamRequest.networkCode = customData.networkCode;
      streamRequest.apiKey = customData.apiKey;

      return streamRequest;
    };

İçerik URL'sini manifest URL'si ve akış kimliğiyle değiştirin.

Akış isteğiniz başarılı olursa streamManager.getStreamId() öğesini kullanarak akış kimliğini alın ve manifestUrl'nize ekleyin. Burada [[STREAMID]]. Ardından, mevcut contentUrl değerini yeni ile değiştirin CAF'nin canlı yayını birleştirilmiş reklam kapsülleriyle oynatması için manifestUrl.

    /**
     * Initates a DAI stream request for the final stream manifest.
     * @param {!LoadRequestData} castRequest The request object from the cast sender
     * @return {Promise<LoadRequestData>} a promise that resolves to an updated castRequest, containing the DAI stream manifest
     */
    const createDAICastRequest = (castRequest) => {
        return streamManager.requestStream(castRequest, createStreamRequest(castRequest))
          .then((castRequestWithPodStreamData) => {
            console.log('Successfully made DAI stream request.');
            const media = castRequestWithPodStreamData.media;
                const manifestUrl = media.customData.manifestUrl || "";
                if (manifestUrl) {
                    console.log('Replacing the contentURL with the manifest URL and stream ID');
                    const streamId = streamManager.getStreamId();
                    castRequestWithPodStreamData.media.contentUrl = manifestUrl.replace('[[STREAMID]]', streamId);

            return castRequestWithPodStreamData;
          })
          .catch((error) => {
            console.log('Failed to make DAI stream request.');
            // CAF will automatically fallback to the content URL
            // that it can read from the castRequest object.
            return castRequest;
          });
    };

Artık Cast Uygulaması ile kapsül yayınlama akışları isteyebilir ve oynatabilirsiniz. Çerçeve ve CAF için IMA DAI SDK'sı.