使用ExoPlayer只播放广告

💡 原文中文,约4300字,阅读约需11分钟。
📝

内容提要

ExoPlayer是一个Google开源的视频播放器,被大型应用如YouTube和Google Video使用。使用ExoPlayer播放广告可以解决原生MediaPlayer的稳定性问题。可以通过设置MediaItem或MediaSource来播放广告资源,但需要注意一些问题,如无法收到播放完毕的回调和黑屏等。广告点击跳转需要根据SDK版本进行处理。

🔎

延伸解读

ExoPlayer 播放广告的适用场景

文章指出,ExoPlayer 被 YouTube、Google Video 等大型应用使用,且 Facebook、Mintegral 等广告 SDK 内部也采用它。相比原生 MediaPlayer,ExoPlayer 能避免 ANR 等稳定性问题,并支持多种协议和 IMA。因此,当应用需要稳定播放广告,尤其是仅播放广告资源时,ExoPlayer 是一个值得考虑的方案。

仅播放广告的两种实现方式与注意事项

文章介绍了两种仅播放广告的方法:使用 MediaItem 或 MediaSource。MediaItem 方式无法收到播放完成回调,需 try-catch 异常,不推荐;MediaSource 方式要求 adTagUri 为网络地址,若使用 VAST/VMAP 等 XML 格式,需用 SDK 提供的 Util 转换。此外,可能遇到 IMA SDK 版本过高导致的 NullPointerException,需降低版本解决。

广告播放后的黑屏问题及处理

广告播放完结后可能出现黑屏,文章建议设置 shutter view 背景透明,即调用 playerView.setShutterBackgroundColor(Color.TRANSPARENT)。切换前后台后再次黑屏,可将 PlayerView 的 surface_type 设为 texture_view,并在广告完成时截取最后一帧 bitmap 设置到 ImageView 上,以保持画面显示。

广告点击跳转的适配要点

文章提到,广告点击跳转处理需根据 SDK 版本进行适配。由于 com.google.ads.interactivemedia.v3.impl.data.c 不是定值,而是对应 SDK 版本中 com.google.ads.interactivemedia.v3.api.Ad 接口的实现类,因此在不同版本中需注意类名变化,避免直接依赖具体实现类。

❓

Q&A

ExoPlayer是什么?

ExoPlayer是一个Google开源的视频播放器,被YouTube和Google Video等大型应用使用。

使用ExoPlayer播放广告有什么优势?

使用ExoPlayer播放广告可以解决原生MediaPlayer的稳定性问题。

如何使用ExoPlayer播放广告资源?

可以通过设置MediaItem或MediaSource来播放广告资源。

播放广告时可能遇到哪些问题?

可能会遇到无法收到播放完毕的回调、黑屏等问题。

如何解决广告播放完结后的黑屏问题?

可以通过设置shutter view的背景为透明来解决黑屏问题。

广告点击跳转需要注意什么?

广告点击跳转处理需根据SDK版本进行适配。

➡️

继续阅读