【问题标题】:How to show ads at specific points using ExoPlayer's IMA extension?如何使用 ExoPlayer 的 IMA 扩展在特定点展示广告?
【发布时间】:2018-09-27 00:31:23
【问题描述】:

我正在使用带有 IMA 扩展名的 ExoPlayer 2.7.3。我必须在一定的时间间隔展示广告。我设法整合了AdsLoaderAdsMediaSource。我正在接收和展示广告。但广告只出现在电影的开头。如何让广告在我希望的时间点展示(例如,每 30 分钟一次)?

【问题讨论】:

    标签: android exoplayer exoplayer2.x


    【解决方案1】:

    我不确定您是使用 IMA 扩展程序和 ImaAdsLoader 还是您的 AdsLoader 自定义实现,它是核心库的一部分(不需要 IMA 扩展程序):

    使用 IMA 广告代码

    如果您使用 IMA 扩展程序,您需要使用来自 IMA/DoubleClick (sample tags) 的广告代码创建一个 ImaAdsLoader

    new ImaAdsLoader(this, adTagUri);
    

    该标记指向一个 VMAP/VAST 文件,该文件定义了广告的播放时间。因此,使用此解决方案,您无法以编程方式告诉播放器广告的位置。相反,所有这些信息都是从广告代码中加载的。

    自定义 AdsLoader 实施

    您可以创建自己的 AdsLoader 实现,您可以将其传递给构造函数或 AdsMediaSource 而不是 IMA 版本。然后AdsMediaSource 将调用您的广告加载程序的attachPlayer(player, eventListener, adUiViewGroup) 方法。第二个参数是AdsLoader.EventListenerAdsMediaSource 可以通过它通知您的广告加载程序的状态。

    如果此时你已经知道了广告的信息以及在什么位置播放它们,你可以在播放器连接时调用一次监听器:

        // create playback state with two ad groups (at 0 and 30 seconds)
        AdPlaybackState adPlaybackState = new AdPlaybackState(0, 30 * C.MICROS_PER_SECOND);
        // add the uri of the first ad of the first ad group
        adPlaybackState = adPlaybackState.withAdUri(0, 0, mp4UriWithAd);
        // add the uri of the first ad of the second ad group
        adPlaybackState = adPlaybackState.withAdUri(1, 0, mp4UriWithAd);
        // add the uri of the second ad of the second ad group
        adPlaybackState = adPlaybackState.withAdUri(1, 1, mp4UriWithAd);
        // pass to AdsLoader.EventListener 
        eventListener.onAdPlaybackState(adPlaybackState);
    

    但是,您可能需要先从网络加载广告信息。在这种情况下,您可以在检索到有关广告的新信息时更新播放状态。只需再次致电onAdPlaybackState 以获取更新。

    【讨论】:

    • 您好,我关注了您的回答,但来自create your own implementation of AdsLoader,您对广告处理有何建议?我尝试阅读 ImaAdsLoader 实现,但无法理解它如何显示 vmap 广告,例如当 exoplayer 不显示经过时间时它如何以正确的时间间隔运行广告?我只想制作一些这样的 AdLoader,但有大量广告,即MyAdsLoader 需要手动时间间隔(0,15 等),但没有大量标签。每当时间间隔到来时(例如在第 15 秒),它应该触发一个事件,向观察者请求 VastAdTag Url
    • 嗨,我正在使用 IMA,但我找不到任何听众知道广告何时加载。你能帮忙吗?
    • 这很棒,正是我们拥有的用例。但是我是 Exoplayer 的新手,并且从上面的代码 sn-ps 无法拼凑出如何配置所有内容以确保广告在我们指定的时间播放。上面可以提供更完整的代码示例吗?
    • 我有问题中提到的相同要求,但无法使用 IMA 扩展来做到这一点。我正在开发一个 android 电视应用程序并将 exoplayer 用于 hls。您能否提供任何自定义加载器实现代码示例?因为我不知道自定义广告加载器。任何形式的帮助将不胜感激。谢谢
    • 有人找到解决办法了吗?
    猜你喜欢
    • 2020-09-23
    • 2020-03-15
    • 1970-01-01
    • 1970-01-01
    • 2018-12-13
    • 2017-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多