অ্যাড স্ট্রিম বুকমার্কগুলি সংরক্ষণ করুন এবং লোড করুন, বিজ্ঞাপন স্ট্রিম বুকমার্কগুলি সংরক্ষণ করুন এবং লোড করুন, বিজ্ঞাপন স্ট্রিম বুকমার্কগুলি সংরক্ষণ করুন এবং লোড করুন, বিজ্ঞাপন স্ট্রিম বুকমার্কগুলি সংরক্ষণ করুন এবং লোড করুন

প্ল্যাটফর্ম নির্বাচন করুন: HTML5 Android iOS tvOS Roku

এই নির্দেশিকাটি দেখায় কিভাবে ভিডিও-অন-ডিমান্ড (VOD) স্ট্রিমের জন্য ডাইনামিক অ্যাড ইনসারশন (DAI) ব্যবহার করার সময় IMA DAI SDK ব্যবহার করে বুকমার্কিং বাস্তবায়ন করতে হয়। এর জন্য একটি কার্যকর IMA DAI ইমপ্লিমেন্টেশন ধরে নেওয়া হয়েছে, যেমনটি 'Get Started'- এ দেখানো হয়েছে।

বুকমার্কিং বলতে কী বোঝায়?

বুকমার্কিং হলো কন্টেন্ট স্ট্রিমের কোনো একটি নির্দিষ্ট অংশ সংরক্ষণ করে পরে সেখানে ফিরে আসার ক্ষমতা। ধরুন, একজন ব্যবহারকারী পাঁচ মিনিটের কন্টেন্ট দেখলেন, ভিডিও স্ট্রিমটি ছেড়ে গেলেন এবং তারপর আবার তাতে ফিরে এলেন। বুকমার্কিং স্ট্রিমের মধ্যে ব্যবহারকারীর অবস্থানটি সংরক্ষণ করে রাখে, ফলে স্ট্রিমটি ঠিক যেখান থেকে থেমেছিল সেখান থেকেই আবার শুরু হতে পারে, যা দর্শককে একটি নির্বিঘ্ন অভিজ্ঞতা প্রদান করে।

DAI নেপথ্যে বুকমার্কিং

একটি DAI স্ট্রিম বুকমার্ক করার সময়, ব্যবহারকারী যখন ভিডিওটি ছেড়ে যান, তখন আপনাকে অবশ্যই স্ট্রিম আইডি এবং সময় রেকর্ড করতে হবে। ব্যবহারকারী ফিরে এলে, স্ট্রিমটির জন্য পুনরায় অনুরোধ করুন এবং সংরক্ষিত সময়ে যান। যেহেতু অনুরোধ করা স্ট্রিমের প্রতিটি সংস্করণে বিভিন্ন সময়কালের বিজ্ঞাপন বিরতি থাকতে পারে, তাই শুধু স্ট্রিমের সময় সংরক্ষণ করলেই কাজ হবে না। আপনাকে যা করতে হবে তা হলো, একই কন্টেন্টের সময় থেকে চালিয়ে যাওয়া।

রূপান্তর পদ্ধতি উদ্ধারে এগিয়ে আসে

IMA DAI SDK একটি নির্দিষ্ট স্ট্রিম টাইমের জন্য কন্টেন্ট টাইম এবং একটি নির্দিষ্ট কন্টেন্ট টাইমের জন্য স্ট্রিম টাইম অনুরোধ করার জন্য একজোড়া মেথড প্রদান করে। এই রূপান্তর মেথডগুলো ব্যবহার করে আপনি বুকমার্ক করা কন্টেন্ট টাইমটি সংরক্ষণ করতে পারেন এবং তারপর স্ট্রিমের নতুন ইনস্ট্যান্সে সংশ্লিষ্ট স্ট্রিম টাইমে সিক করতে পারেন। পদ্ধতিটি নিচে দেওয়া হলো, সাথে একটি নমুনা অ্যাপের লিঙ্কও রয়েছে যা একটি কার্যকর বুকমার্কিং ইমপ্লিমেন্টেশন প্রদর্শন করে।

বুকমার্ক সংরক্ষণ করা

অ্যাক্টিভিটিটি পজ করা হলে একটি বুকমার্ক সেভ করুন।

উদ্দেশ্য-সি

- (void)viewWillDisappear:(BOOL)animated {
  [super viewWillDisappear:animated];
  [self.contentPlayer pause];
  // Ignore this if we're presenting a modal view (e.g. in-app clickthrough).
  if ([self.navigationController.viewControllers indexOfObject:self] == NSNotFound) {
    // Don't save bookmark if we're playing a live stream.
    if (self.video.streamType != StreamTypeLive) {
      NSTimeInterval contentTime = [self.streamManager
          contentTimeForStreamTime:CMTimeGetSeconds(self.contentPlayer.currentTime)];
      [self.delegate videoViewController:self didReportSavedTime:contentTime forVideo:self.video];
    }

সুইফট

override func viewWillDisappear(_ animated: Bool) {
  super.viewWillDisappear(animated)
  contentPlayer.pause()
  if isMovingFromParent {
    // Only save bookmark if we're playing a VOD stream.
    if let vodStream = stream as? VODStream, let streamManager = streamManager {
      let contentTime = streamManager.contentTime(
        forStreamTime: contentPlayer.currentTime().seconds)
      if contentTime.isFinite, contentTime > 0 {
        delegate?.videoViewController(self, didReportBookmarkedTime: contentTime, for: vodStream)
      }
    }
    if trackingContent {
      removeContentPlayerObservers()
    }
    streamManager?.destroy()
    adsLoader?.contentComplete()
    streamManager = nil
    adsLoader = nil
  }
}

বুকমার্ক লোড হচ্ছে

স্ট্রিম পুনরায় অনুরোধ করার সময় বুকমার্কটি লোড করুন। এটি VideoStreamPlayer ইন্টারফেস বাস্তবায়নের একটি অংশ।

উদ্দেশ্য-সি

case kIMAAdEvent_STREAM_LOADED: {
  if (self.video.streamType == StreamTypeVOD) {
    [self addContentPlayerObservers];
    if (self.video.savedTime > 0) {
      NSTimeInterval streamTime =
          [self.streamManager streamTimeForContentTime:self.video.savedTime];
      [self.IMAVideoDisplay seekStreamToTime:streamTime];
      self.video.savedTime = 0;
    }
  }

সুইফট

case .STREAM_LOADED:
  guard let stream else { return }
  addContentPlayerObservers()
  if let vodStream = stream as? VODStream, vodStream.bookmarkTime > 0 {
    bookmarkStreamTime = streamManager.streamTime(forContentTime: vodStream.bookmarkTime)
    if let time = bookmarkStreamTime {
      pendingBookmarkSeek = true
      logMessage(
        "STREAM_LOADED: Bookmark pending for contentTime: \(String(format: "%.2f", vodStream.bookmarkTime)) (streamTime: \(String(format: "%.2f", time)))"
      )
      vodStream.bookmarkTime = 0
    }
  }

নমুনা অ্যাপ

নমুনা অ্যাপ