- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 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
是 Google
开发的库。显然 Google
在自己的产品中使用了它。 Google AdMob SDK
在其中使用了 ExoPlayer
。更具体地说,它使用这个播放器来展示它的一些插页式广告,甚至是横幅广告。虽然在一般的应用程序屏幕上,它通常可以无缝运行,没有错误和错误(有少量错误)。
在 AdMob SDK
中使用相同的 ExoPlayer
播放器时,屏幕上的情况会有所不同。两个实例使用相同的资源——编解码器、渲染器等。因此设备必须提供这些资源。可能同时处于 Activity 状态的 ExoPlayer
实例的数量可能从 1(或者在旧的弱设备上什至可能为 0)到 10+ 不等 - 它与设备可以处理的最大硬件解码器数量相关。关于此的更多信息 here (ExoPlayer issue 273) .
此限制的可能解决方法是将 ExoPlayer
设置为使用软件解码器。但是,它可能会大大降低弱设备上的体验质量。如何创建软件解码器,您可以在 MediaCodecTrackRenderer.java
类中的 ExoPlayer
源代码中找到。
你的情况有点不同,因为你无法控制至少一个实例 - 所以我无法预测它是否会起作用。
无论哪种方式,我认为这个问题应该在架构上解决,而不是通过代码蛮力解决。
最简单的方法是在使用 ExoPlayer.release()
开始插播之前释放您的 ExoPlayer
实例,并仅在插播结束后再次初始化它.很高兴您在 AdMob SDK
中为插页式广告提供了所有需要的回调方法。您可以将播放时间存储在某处,以便从用户因广告中断而停止的地方继续播放。
对用户更友好的方法是不要用广告打断视频 - 在之前和之后展示它们。或者在视频中加入广告。但完全取决于您的 UI/UX 和货币化系统。
我知道这不完全是对您问题的回答,而是围绕主题的思考,但我希望它能以某种方式帮助您。
关于android - 插屏广告后Exoplayer播放错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56036849/
我不确定我明白这里发生了什么。 请问有人可以解释一下吗? 我收到以下错误: Type of 'exoPlayer' doesn't match the type of the overridden v
我在尝试编译 exoplayer r1.5.2 存储库时遇到问题...。当我改用 com.google.android.exoplayer:exoplayer:r1.4.2 时没有问题。 编译代码如下
我有这个简单的 .m3u8 文件 #EXTM3U #EXT-X-VERSION:5 #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="English ste
为了避免应用程序中的任何 SCSS ,从后台线程使用 exoplayer 还是从主 ui 线程使用它更好? 注意:当我在主 ui 线程中创建一个 simpleExoPlayer 时: // 1. Cr
我有一个 exoplayer 我的第一个 Activity ,当我点击全屏按钮时,我打开一个新的 VideoActivity 全屏。我只发送我当前的位置并在该位置启动 VideoActivity。
我在 DemoPlayer 的基础上使用 Exoplayer。我想在 ExoPlayer.STATE_ENDED 被调度后在一些用户操作时从头开始重新启动/重播视频。 之后我尝试使用 seekTo(0
我在我的 android 应用程序中使用 exoplayer,在播放视频时我点击屏幕,带有 Controller 的显示不流畅,我想让它看起来流畅,就像淡入淡出..如何我可以这样做吗? 最佳答案 查看
我在 CardView 的 RecyclerView 中有一个 ex0player。 exoplayer 的高度需要根据包含的视频的高度以编程方式更改。此高度值以 像素 的形式从 API 调用返回。这
在 android 中有一个名为 的库。 Exoplayer 这与从给定 url 流式传输视频有关。 现在根据this firebase 不支持视频流,尽管您可以将 uri 从 url 传递到 vid
更新项目依赖项后,我在视频 android studio 应用程序中遇到这个 exoplayer not found 错误。 我不知道如何将旧的 Exoplayer 链接更新到 https://mvn
我在 android 中构建一个 expo 分离项目时遇到问题。当我构建项目时,控制台构建的输出显示:无法解析:com.google.android.exoplayer:exoplayer-smoot
情况:将我的 Android 项目从带有 VisualOn 的旧 Ooyala SDK 更新到带有 Exoplyer 的最新 Ooyala SDK。通过 Amazon Fire Stick 播放视频。
我制作了安卓音频应用程序。现在一些用户报告说,当他们在车内通过蓝牙连接设备时,应用程序没有响应媒体按钮(播放、暂停、下一步)。 同时,我用蓝牙扬声器测试了应用程序 - 播放/暂停按钮可按需工作。 车载
我希望在我的项目中实现 exoplayer。我已经成功实现了它,但是视频加载时间很慢。如何在 exoplayer 中实现或实现视频的快速加载?就像抖音一样——立即加载视频并开始播放 最佳答案 试试下面
遵循开发人员指南中给出的示例后,我得到以下信息: 05-23 16:25:22.002 11893-11942/com.app.videotest E/ExoPlayerImplInternal: S
我基于此 link 在我的应用程序中集成了 exoplayer . 我在 createCurrentContentIntent() 中添加了一个待处理的 Intent 。 return Pen
我正在阅读有关配置默认 exoplayer View 布局的教程: https://exoplayer.dev/ui-components.html 但是它不显示默认播放器布局的源代码 exo_pla
我想使用 PlayerView 在 exoplayer 中创建一个自定义时间栏: 不能被用户拖动,只能在视频中显示进度 更新:好的,所以我可以通过将 touch_target_height 设置为 0
07-03 18:51:01.600 16188-16266/? E/ExoPlayerImplInternal﹕ Internal runtime error. java.lang.Ill
使用 ExoPlayer我正在尝试同时播放两个音轨。 我的想法是创建两个 MediaSource , 并使用 MergingMediaSource 在它们之间“组合” . 这就是我所做的: U
我是一名优秀的程序员,十分优秀!