我正在使用ExoPlayer
2.7.1。我必须在一定的时间间隔展示广告。这些时间间隔以毫秒为单位。如何在 ExoPlayer 控制器中显示广告标记?
1 回答
要集成您自己的广告解决方案,我通常建议查看 ExoPlayer 库的AdsMediaSource和AdsLoader,它们提供了将您的广告很好地集成到内容媒体源中的方法。通过这种方式,播放器知道广告播放并确保不能跳过广告、显示标记等。
AdsMediaSource 用于实现 ExoPlayer 的IMA 扩展,但您可以将这些用于您的解决方案。
要回答您关于广告标记的具体问题:
有PlayerControlView
一个方法可以让您设置广告标记位置和布尔值来指示广告是否已显示:
playerControlView.setExtraAdGroupMarkers(
new long[]{10 * 1000, 120 * 1000},
new boolean[]{false, false});
但是,如果您使用的是开箱即用的 PlayerView,则访问播放器视图以编程方式插入的 PlaybackControlView 有点困难。因此,您不能使用 findById 并且恐怕 PlayerView 没有为控制器提供吸气剂。
因此,如果您使用 PlayerView,我看到的唯一方法是提供您自己的布局文件 exo_player_view.xml,您可以在其中设置自定义控制器:
在您的项目中创建文件 res/layout/exo_player_view.xml 并将布局文件从此处复制到其中。
在此布局文件中搜索 id 为 exo_controller_placeholder 的视图元素。用这个元素替换它:
<com.google.android.exoplayer2.ui.PlayerControlView android:id="@id/exo_controller"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
在 onCreate 中查找播放器控件视图:
playerControlView = findViewById(R.id.exo_controller);
每当您想更新您调用的标记时:
playerControlView.setExtraAdGroupMarkers( new long[]{10 * 1000, 120 * 1000}, new boolean[]{true, false});
第二个参数让您将广告标记为所示。