实施Drm Dash媒体源

问题描述

在实施以下异常的Drm Dash媒体源时。 MediaCodecRenderer $ DecoderInitializationException:解码器初始化失败:OMX.Exynos.avc.dec.secure

下面列出了错误报告

ExoPlayerImplInternal:渲染器错误:index = 0,类型=视频,格式=格式(p0va0br256000,null,null,视频/avc,avc1.4d4015,256000,null,[426、240、24.0],[-1, -1]),rendererSupport = NO_UNSUPPORTED_DRM com.google.android.exoplayer2.ExoPlaybackException:com.google.android.exoplayer2.mediacodec。 MediaCodecRenderer $ DecoderInitializationException:解码器初始化失败:OMX.Exynos.avc.dec.secure ,Format(p0va0br256000,null ,空,视频/AVC、AVC1.4D4015、256000,空,[426、240、24.0],[-1,-1]) 在com.google.android.exoplayer2.BaseRenderer.createRendererException(BaseRenderer.java:359) 在com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:563) 在com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1254) 在com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:756) 在com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.readToFlagsOnlyBuffer(MediaCodecRenderer.java:814) 在com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:712) 在com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:599) 在com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:329) 在android.os.Handler.dispatchMessage(Handler.java:98) 在android.os.Looper.loop(Looper.java:154) 在android.os.HandlerThread.run(HandlerThread.java:61) 造成原因:com.google.android.exoplayer2.mediacodec.MediaCodecRenderer $ DecoderInitializationException:解码器初始化失败:OMX.Exynos.avc.dec.secure,Format(p0va0br256000,null,null,video / avc,avc1.4d4015、256000,null ,[426,240,24.0],[-1,-1]) 在com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodecWithFallback(MediaCodecRenderer.java:867) 在com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:561) 在com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1254) 在com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:756) 在com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.readToFlagsOnlyBuffer(MediaCodecRenderer.java:814) 在com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:712) 在com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:599) 在com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:329) 在android.os.Handler.dispatchMessage(Handler.java:98) 在android.os.Looper.loop(Looper.java:154) 在android.os.HandlerThread.run(HandlerThread.java:61) 原因:android.media.MediaCodec $ CodecException:启动失败 在android.media.MediaCodec.native_start(本机方法) 在android.media.MediaCodec.start(MediaCodec.java:1989) 在com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.initCodec(MediaCodecRenderer.java:931) 在com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodecWithFallback(MediaCodecRenderer.java:860) 在com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.maybeInitCodec(MediaCodecRenderer.java:561) 在com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onInputFormatChanged(MediaCodecRenderer.java:1254) 在com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onInputFormatChanged(MediaCodecVideoRenderer.java:756) 在com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.readToFlagsOnlyBuffer(MediaCodecRenderer.java:814) 在com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:712) 在com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:599) 在com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:329) 在android.os.Handler.dispatchMessage(Handler.java:98) 在android.os.Looper.loop(Looper.java:154) 在android.os.HandlerThread.run(HandlerThread.java:61) 2020-09-14 11:51:58.096 20803-20803 / com.rockvillegroup.vidly E / MainVideoPlayerFragment:onPlayerError:Error => 解码器初始化失败:OMX.Exynos.avc.dec.secure ,格式(p0va0br256000,null,null,视频/avc、avc1.4d4015、256000、null、[426、240、24.0]、[-1、-1]) 2020-09-14 11:51:58.097 20803-20803 / com.rockvillegroup.vidly D / MainVideoPlayerFragment:onPlayerStateChanged:STATE_IDLE

解决方法

我之前在尝试播放 hlsv6-widevine DRM 标题时遇到了同样的错误。 com.google.android.exoplayer2.mediacodec.MediaCodecRenderer$DecoderInitializationException:解码器初始化失败:OMX.Exynos.avc.dec.secure,格式(1,空,空,视频/avc,avc1.640028,1461621,空,[854,480,-1.0],[-1,-1])

我第一次播放DRM标题时发生的(可以正常播放); 然后切换到非DRM标题但忘记释放之前的exoplayer实例; 非DRM标题完成后切换回DRM标题时,发生错误。

我在每个游戏播放后及时释放 exoplayer 实例后错误消失了。

从与MediaCodec错误相关的exoplayer问题来看,我看到大部分错误是由于设备的媒体编解码器资源有限而没有及时释放exoplayer实例(资源)引起的。 或者玩家试图将解码的数据渲染到无效的表面(视图)。 https://github.com/google/ExoPlayer/issues

希望答案能有所帮助。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...