Canlı yayın için videodan önce gösterilen reklamları yükleme

Platform seçin: HTML5 Android iOS tvOS

IMA SDK, seç-izle videoların yanı sıra canlı yayınlardan para kazanmak için de kullanılabilir. Canlı yayınlarda, her reklam arası için yeni bir reklam isteğinde bulunmanız gerekir. Tüm izleyicilerinizin aynı anda reklam isteğinde bulunup reklam sunucularını yavaşlatmaması için bu istekleri kademelendirin.

Bu konuda yardımcı olmak için IMA SDK'da AdsRequest.liveStreamPrefetchSeconds özelliği bulunur. Bu özellik, AdsLoader.requestAds() işlevini çağırdıktan sonra SDK'nın reklam sunucusuna ulaşmadan önce beklemesi gereken maksimum süreyi (saniye cinsinden) belirtir. Gerçek istek zamanı rastgele belirlenir. Örneğin, AdsRequest.liveStreamPrefetchSeconds değerini 30 olarak ayarlarsanız SDK, AdsLoader.requestAds() işlevini çağırdıktan sonra sunucuya isteği göndermek için 0 ila 30 saniye bekler.

Canlı yayın önceden getirme özelliği uygulamada

Bir reklam arası tamamlanır tamamlanmaz bir sonraki reklam aranızın önceden getirilmesini öneririz. Bu, önceden getirme pencereniz için maksimum sürenin kullanılabilmesini sağlar. Reklam araları arasında 5 dakika olduğunu varsayalım. Bir reklam arası tamamlandığında, 290 saniyelik bir önceden getirme penceresiyle bir sonraki reklam aranız için istekte bulunabilirsiniz (önceden getirme penceresinin sonunda gönderilen isteklerin çözümlenmesi için yeterli süre olması amacıyla 5 dakikadan 10 saniye çıkarılır):

Bu kod snippet'leri, Gelişmiş Örnek'e canlı yayın önceden getirme özelliğinin nasıl ekleneceğini gösterir ancak bu yaklaşım diğer IMA uygulamalarına da uygulanabilir.

VideoPlayerController.java

/** Ads logic for handling the IMA SDK integration code and events. */
public class VideoPlayerController {

  // 5 minutes == 300 seconds. Include a 10 second buffer
  private float AD_INTERVAL = 290;
  private double AD_TIMEOUT = 300;

...

  adsManager.addAdEventListener(
    new AdEvent.AdEventListener() {
      /** Responds to AdEvents. */
      @Override
      public void onAdEvent(AdEvent adEvent) {

      ...

      case ALL_ADS_COMPLETED:
        if (adsManager != null) {
          adsManager.destroy();
          adsManager = null;
        }

        // When pre-fetching for live streams, be sure to destroy the current AdsManager,
        // in case the tag you requested previously contains post-rolls
        // (you don't want to play those now).

        // Pre-fetch the next ad break.
        // Play those ads in ~5 minutes. In a real-world implementation,
        // this will likely be done as the result of a message from your
        // streaming server, not a through the playAdsAfterThisTime parameter
        // of requestAndPlayAds().
        requestAndPlayAds(AD_TIMEOUT);
        break;
      default:
        break;
      }
  }

...

public void requestAndPlayAds(double playAdsAfterThisTime) {
  if (currentAdTagUrl == null || currentAdTagUrl == "") {
    log("No VAST ad tag URL specified");
    resumeContent();
    return;
  }

  // Since you're switching to a new video, tell the SDK the previous video is finished.
  if (adsManager != null) {
    adsManager.destroy();
  }

  playButton.setVisibility(View.GONE);

  // Create the ads request.
  AdsRequest request = sdkFactory.createAdsRequest();
  request.setAdTagUrl(currentAdTagUrl);
  request.setContentProgressProvider(videoPlayerWithAdPlayback.getContentProgressProvider());
  request.setLiveStreamPrefetchSeconds(AD_INTERVAL);

  playAdsAfterTime = playAdsAfterThisTime;

  // Request the ad. After the ad is loaded, onAdsManagerLoaded() will be called.
  adsLoader.requestAds(request);
}