jiajunhui / PlayerBase

The basic library of Android player will process complex business components. The access is simple。Android播放器基础库,专注于播放视图组件的高复用性和组件间的低耦合,轻松处理复杂业务。
Apache License 2.0
2.92k stars 437 forks source link

RelationAssist切换解码貌似会黑屏 #75

Closed General110 closed 5 years ago

General110 commented 5 years ago

RelationAssist.switchDecoder切换解码貌似会黑屏,android P

jiajunhui commented 5 years ago

解码器的切换属于冷切换。切换后需要再次设置数据起播。不知道你的用法是否正确。如果用法是正确的,那黑屏发生时有没有异常日志,如果有,请提供一下。

General110 commented 5 years ago

2019-03-15 22:54:17.171 11717-11717/com.test.app D/frameEvent_play: PLAYER_EVENT_ON_START 2019-03-15 22:54:17.173 11717-12180/com.test.app W/MapperHal: buffer descriptor with invalid usage bits 0x2002000 2019-03-15 22:54:17.181 11717-12180/com.test.app W/MapperHal: buffer descriptor with invalid usage bits 0x2002000 2019-03-15 22:54:17.200 11717-12164/com.test.app E/ExoPlayerImplInternal: Internal runtime error. java.lang.IllegalArgumentException: The surface has been released at android.media.MediaCodec.native_setSurface(Native Method) at android.media.MediaCodec.setOutputSurface(MediaCodec.java:1979) at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.setOutputSurfaceV23(MediaCodecVideoRenderer.java:1014) at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.setSurface(MediaCodecVideoRenderer.java:422) at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.handleMessage(MediaCodecVideoRenderer.java:387) at com.google.android.exoplayer2.ExoPlayerImplInternal.deliverMessage(ExoPlayerImplInternal.java:871) at com.google.android.exoplayer2.ExoPlayerImplInternal.sendMessageToTarget(ExoPlayerImplInternal.java:842) at com.google.android.exoplayer2.ExoPlayerImplInternal.sendMessageInternal(ExoPlayerImplInternal.java:824) at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:333) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:193) at android.os.HandlerThread.run(HandlerThread.java:65) 2019-03-15 22:54:17.229 11717-12179/com.test.app D/SurfaceUtils: disconnecting from surface 0x83c22008, reason disconnectFromSurface 2019-03-15 22:54:17.274 11717-11717/com.test.app E/ExoMediaPlayer: java.lang.IllegalArgumentException: The surface has been released 2019-03-15 22:54:17.274 11717-11717/com.test.app E/frameEvent_error: ERROR_EVENT_UNKNOWN 2019-03-15 22:54:17.277 11717-11717/com.test.app D/ExoMediaPlayer: onLoadingChanged : false, bufferPercentage = 0 2019-03-15 22:54:17.277 11717-11717/com.test.app D/ExoMediaPlayer: onPlayerStateChanged : playWhenReady = true, playbackState = 1

在android 6上没事,在Android 9上就出现黑屏。

jiajunhui commented 5 years ago

@General110 是只有切到EXO时报这个错吗?还有你的具体操作步骤。最好进群详聊一下。

General110 commented 5 years ago

抱歉,最近太忙没回复! 由于我切换解码器后,忘记Assist.attachContainer(VideoContainer);导致的。 感谢大佬热情的回复