插页式广告后 Exoplayer 播放错误

2024-04-07

我正在使用 ExoPlayer 播放视频并显示 Google AdMob 插页式广告。

广告消失后,播放视频时出现问题并显示错误,例如:

Playback error.com.google.android.exoplayer2.ExoPlaybackException
   at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.throwDecoderInitError(MediaCodecRenderer.java:441)
   at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:428)
   at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:920)
   at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:503)
   at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:557)
   at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:518)
   at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:301)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:193)
   at android.os.HandlerThread.run(HandlerThread.java:65)
Caused by: com.google.android.exoplayer2.mediacodec.MediaCodecRenderer$DecoderInitializationException: Decoder init failed: OMX.qcom.video.decoder.avc, Format(1, null, video/avc, -1, null, [720, 420, -1.0], [-1, -1])
   at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:428) 
   at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:920) 
   at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:503) 
   at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:557) 
   at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:518) 
   at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:301) 
   at android.os.Handler.dispatchMessage(Handler.java:102) 
   at android.os.Looper.loop(Looper.java:193) 
   at android.os.HandlerThread.run(HandlerThread.java:65) 

我正在使用库:

implementation 'com.google.android.exoplayer:exoplayer:2.8.1'
implementation 'com.google.android.exoplayer:exoplayer-ui:2.8.1'

这是很难调试的错误,但相对容易避免。

事情是这样的ExoPlayer is Google开发的库。明显地Google在自己的产品中使用它。Google AdMob SDK uses ExoPlayer在它里面。更具体地说,它使用此播放器来显示一些插页式广告甚至横幅广告。在一般应用程序屏幕上,它通常可以无缝运行,没有错误和错误(有少量错误)。

相同的屏幕上情况会有所不同ExoPlayer正在使用的播放器AdMob SDK。两个实例使用相同的资源 - 编解码器、渲染器等。因此设备必须提供此资源。可能同时活动的数量ExoPlayer实例可能从 1(或者在旧的弱设备上甚至可能是 0)到 10+ 不等 - 它与设备可以处理的硬件解码器的最大数量相关。有关此的更多信息在这里(ExoPlayer 问题 273) https://github.com/google/ExoPlayer/issues/273.

解决此限制的可能方法是设置ExoPlayer使用软件解码器。但它可能会大大降低弱设备上的体验质量。如何创建软件解码器,您可以在源代码中找到ExoPlayer in MediaCodecTrackRenderer.java class.

你的情况有点不同,因为你无法控制至少一个实例 - 所以我无法预测它是否会起作用。

不管怎样,我认为这个问题应该从架构上解决,而不是通过代码暴力解决。

最简单的方法是释放您的实例ExoPlayer就在插页式广告开始之前ExoPlayer.release()并在插页式广告结束后再次初始化。很高兴您拥有所有需要的回调方法AdMob SDK用于插页式广告。您可以将播放时间存储在某处,以便从用户因广告中断而停止的位置继续播放。

对用户更友好的方法是不要用广告打断视频 - 在之前和之后显示它们。或者在视频中加入广告。但完全取决于您的 UI/UX 和货币化系统。

我知道这并不完全是您问题的答案,而是围绕主题的想法,但我希望它能对您有所帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

插页式广告后 Exoplayer 播放错误 的相关文章

  • 如何正确显示AChartEngine条形图

    我在用图表引擎 1 0 1 最新 并想演示一个条形图 这就是我要的 我想要的图表 到目前为止我所取得的成就 1 1 view 缩小视图 问题 图表的左右部分在 1 1 视图中丢失 酒吧之间的距离是如此之远 我需要减少它 该栏未正确位于文本标
  • 在旧 Android 版本上使用 actionBarSherlock 的 searchView 的本机外观和感觉

    我注意到没有可行的解决方案显示如何使用操作栏在 listView 项目上使用过滤器 该解决方案适用于较旧的 Android 版本 如 2 3 x 我找到的唯一示例是片段示例的文件 LoaderCursorSupport java 但是 它仅
  • Android应用程序中菜单的共享功能

    我问了很多关于我的标题的问题 但到目前为止我还没有得到正确的答案 我需要在我的应用程序中实现androd的菜单功能 即当我们进入Android手机中的画廊时 当我们按菜单时 它会提供很多选项像分享 等 我的问题是我可以在我的应用程序中实现相
  • 从相机、SurfaceView 或 SurfaceHolder 连续获取图像数据

    所以我设置了这个相机预览Camera SurfaceView and SurfaceHolder 我也有一个ImageView我将在其中放置相机图像的修改版本 并且我希望它更新 假设每秒更新一次 当我从 res 加载图像时 所有代码都已准备
  • 在系统进程中调用方法没有合格的用户错误

    我在 android 4 4 中使用通知侦听器服务 遇到一个错误 导致我的应用程序停止获取发布的通知 这是相当随机的 但当它发生时我看到 12 31 01 40 44 080 21680 21680 W ContextImpl Callin
  • 如何处理 Jetpack Compose 中的导航?

    在 Jetpack Compose 中 导航应该如何完成 所有 并不多 示例 包括来自 Google 的官方示例 都使用密封类并加载新屏幕以响应观察当前屏幕的变化 这确实 有点 有效 但不提供导航返回堆栈 并且手机的后退按钮完全不知道 只是
  • Android 当应用程序启动时显示白屏几秒钟?

    我没有调用任何 URL 请求 该应用程序显示了一个简单的启动屏幕 我也禁用了即时运行 但该警告仍然出现 06 26 09 26 05 022 8709 8709 saurav com navigation drawer I art 后期启用
  • 华为移动服务的 Android 虚拟设备

    我想将HMS应用到我的应用程序中 然而 购买真正的华为手机并不在我的候选清单上 华为是否为此目的提供 Android 虚拟设备 如果没有 如何测试我的 HMS 实现是否真正有效 是的 华为确实提供了一个 Android 虚拟设备 名为App
  • ZipResourceFile 无法解析为类型

    我正在尝试重写我的应用程序以使用 APK 扩展文件 我一直在关注这里的文档http developer android com google play expansion files html http developer android
  • 反序列化时出现 Gson 异常(无参数构造函数不存在)

    我遇到了一个问题 该问题仅在 5000 台设备中的 10 台中出现 无法用我的模拟器和测试设备重现它 这似乎是一个非常具体的问题 仅涉及少数设备 我所拥有的只是堆栈跟踪和我的代码 因此 我正在针对黑洞进行开发 只有在 GooglePlay
  • 如何以编程方式检测 Android 设备是否与 USB OTG 连接

    我正在使用定制 OTG 指纹扫描仪 我想检查 OTG 是否已连接到我的 Android 设备或未在特定的 Android 活动中 public class BootUpReceiver extends BroadcastReceiver p
  • 返回 RxJava 的 Completable 的方法的命名约定

    我有一个带有视图类的 Android 应用程序 Fragment Activity 观察其ViewModel The ViewModel公开方法 例如getUserName返回Observable
  • 启动 Activity 时自动弹出键盘

    我有一个相对简单的问题 我有一个包含很多 EditText 的活动 当我打开活动时 它会自动聚焦到第一个 EditText 并显示虚拟键盘 我怎样才能防止这种情况发生 在 XML 文件的布局标签中使用此属性 android focusabl
  • API级别29 Intent.ACTION_GET_CONTENT从下载文件夹返回错误的ID

    我正在尝试查找从文件选择器意图返回的 URI 的完整文件路径 我从互联网下载了一张图像 该图像保存在浏览器默认下载文件夹中 问题是 DocumentsContract getDocumentId content describer 返回的
  • 在大画布上滚动

    我需要一些帮助来了解滚动绘制到 Android 画布上的项目的基础知识 假设我想创建一个时间线 其中 0 处的时间是可视化的顶部 并且随着时间的增加 时间线继续呈现在上一个点下方 如果我想在 Android 上渲染它 我知道我可以通过重写
  • 如何以编程方式查找Android手机的电池充电时间?

    我想知道我们如何找到 Android 设备将电池充满电需要多长时间 例如 如果我的电池电量为 0 则充满电 即 100 需要多长时间 如果我的设备电量为 70 则相同 因此如果我现在连接充电器 则需要多长时间才能充满我的设备 这对我有用 p
  • java.io.IOException:Android Firebase 中的 FIS_AUTH_ERROR 但调试模式正常

    我在检索 firebase 令牌时遇到以下问题 FirebaseMessaging getInstance getToken 在调试模式下 我获取令牌并将其发送到服务器 在运行模式下 应用程序工作正常 它已发布 但我无法获取令牌 因为我已经
  • 无法放置双重 SharedPreferences

    出现错误 这种类型的共享首选项编辑器的 put double 方法未定义 Eclipse 提供了一种快速修复方法 将强制类型转换添加到编辑器 但是当我这样做时 它仍然给出错误 为什么我不能 put double 代码 Override pr
  • 与桌面浏览器相比,移动浏览器有多强大? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • E/libEGL: validate_display:99 错误 3008 (EGL_BAD_DISPLAY) API 24 或更高版本

    当我使用 API 为 24 或更高版本的设备时 我收到此错误 E libEGL validate display 99 错误 3008 EGL BAD DISPLAY XML 代码 activity main xml

随机推荐

  • QMessageBox::ritic 不显示标题文本

    我需要显示简单的错误消息 QMessageBox critical nullptr My Title Text 但出现的对话框的标题为空 我做错了什么 PS 操作系统 MacOS 10 9 1 你没有做错什么 从QMessageBox se
  • Silverlight 应用程序中的跨线程访问无效

    我正在使用 Hammock 框架从 Silverlight 应用程序到 Rest 服务进行异步服务调用 在 完成 回调中 我正在更新绑定到视图上组合框的 ObservableCollection OnPropertyChanged 事件处理
  • Spring AMQP RabbitMQ 如何直接发送到Queue而不需要Exchange

    我正在使用 Spring AMQP 和 Rabbitmq 模板 如何直接将消息发送到队列而不使用Exchange 我该怎么做 我该怎么做 你不能 发布者不知道队列 只是交换和路由密钥 但是 所有队列都绑定到默认交换器 以队列名称作为其路由键
  • 将列名称文本包装在 R 中的 ggpairs 中

    我正在使用 ggpairs 在绘制矩阵时 我收到一个矩阵 如下所示 正如您所看到的 某些文本长度很大 因此文本看不完整 无论如何 我可以将文本换行 使其完全可见吗 Code ggpairs df 我希望文本换行 以便可以看到类似这样的内容
  • 如何在 Angular 6 中设置日期格式?

    我有一个功能 可以显示用户输入的实时日期 现在当用户输入输入时 我在前端显示 日期 28 10 2018 10 09 我希望更改日期 如果是过去几天 过去一周 过去一年等 因此 如果昨天输入了输入 我想显示如下内容 1d意思是一天前 一年也
  • 使用heroku上传文件

    据我所理解heroku http heroku com不允许存储单个 Rails 应用程序的上传文件 在他们的文档中 他们提到文件可以上传到亚马逊S3 http aws amazon com s3 实例 我目前没有 S3 帐户 因此假设我只
  • 使用 CLI 通过 docker-compose 部署到 Azure 时,访问代理页面时超时

    I have docker compose file version 3 services app2 image kamilwit dockerdocker app2 container name app2 build context ap
  • 设置标题和 v7 抽屉切换之间的间距

    我现在正在使用 v7 支持库的 ActionBarDrawerToggle 但抽屉图标直接位于标题字体处 因为我禁用了 showHomeEnabled 如何在标题和切换开关之间设置更多可用空间 Thanks 事实上 遗憾的是这并不能真正实现
  • Java中的并发排序

    我目前正在开发一个同时对字符串进行排序的程序 我的程序接收一个文件 将文件的每一行读入一个数组 并将字符串数组拆分为更小的字符串数组 然后 程序为每个较小的数组启动一个线程 并对它们进行快速排序 一旦每个线程完成对其数组的排序 主线程就会从
  • C# 和 WCF 中具有存储库模式的 Web 服务?

    任何人都可以确认将存储库模式与 Web 服务集成的最佳方法吗 实际上我的存储库模式现在在 C 中工作 我有 3 个项目 DataAccess Services 和我的表示层 问题是我的表示层有很多东西 我有一个 ASP NET MVC 站点
  • Nginx 上传进度模块与 Rails 和 Passenger

    我一直在尝试使用 Rails 和 Passenger 在 WebFaction 上运行 Nginx 上传进度模块 使用 Paperclip 上传到 S3 到目前为止 我得出的最好结果是它报告开始和结束 但没有报告中间的情况 对 progre
  • 使用正则表达式提取 URL

    我已经搜索了至少 2 小时 但找不到任何使用正则表达式提取以下 URL 的模式 我采用了很多文章中描述的太多模式 但我找不到有用的东西 例如 URL 类似于以下模式 http google com http www google com h
  • JavaScript 中的对象如何实现 Event 接口

    In this MDN 中的 addEventListener https developer mozilla org en US docs Web API EventTarget addEventListener listener 当指定
  • 防止刷新浏览器后重新提交提交

    下面的代码一切都很好 在名为submit php 的文件中 用户可以通过表单输入提交内容 该表单转到submit2 php 其中一些代码将提交内容插入MySQL 数据库 到目前为止 一切都很好 问题是这样的 一旦用户登陆submit2 ph
  • Bash 脚本:在curl JSON Post 数据中使用字符串变量

    我想发送一个 json 请求并在发布数据中嵌入一个变量 我做了一些研究 然后想出了变量周围的单引号 bin bash FILENAME media file avi curl i X POST H Content Type applicat
  • 主题分支中的“git rebaseupstream-branch”发生致命错误

    当我尝试将上游分支变基为主题分支时遇到问题 工作流程是这样的 git checkout upstream git pull origin upstream git checkout topic git rebase upstream 结果如
  • 未捕获的类型错误:$(...).datepicker() 不是函数

    我正在尝试使用 jQuery datepicker 函数 但收到错误Uncaught type error datepicker is not a function 我检查了我的文件 没有看到对 jQuery 的双重引用或文件顺序不正确ap
  • 如何平衡Web服务器带宽使用?

    我有一个 drupal 商务网站 用户一直在其中上传大量图像 每个商业订单有 n 个图像 我想平衡网络流量以节省带宽 每个服务器的带宽是有限的 我无法使用传统的负载平衡解决方案 因为平衡器服务器的带宽也有限 我的数据库将位于单独的服务器上
  • Ubuntu psql:无法连接到服务器

    我本地安装了 postgresql 正如我所得到的 它不会启动 psql could not connect to server No such file or directory Is the server running locally
  • 插页式广告后 Exoplayer 播放错误

    我正在使用 ExoPlayer 播放视频并显示 Google AdMob 插页式广告 广告消失后 播放视频时出现问题并显示错误 例如 Playback error com google android exoplayer2 ExoPlayb