Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

红米5Plus,Native模式列表中播放2分钟左右,自动出来“播放出错”那个黑色界面 #22

Closed
GeniusJerry opened this issue Sep 4, 2018 · 1 comment

Comments

@GeniusJerry
Copy link

红米5Plus,Native模式列表中播放2分钟左右,自动出来“播放出错”那个黑色界面,其它手机正常。

@yangchong211
Copy link
Owner

嗯嗯,你这边能否用红米5Plus,Native模式播放视频,然后等到播放错误的时候,查看一下错误信息日志。
ijkplayer提供了IMediaPlayer.OnErrorListener监听错误信息的listener,你可以打印一下错误的信息。
排错步骤:
1.找到播放错误页面什么时候才会显示出来【查看VideoPlayerController中onPlayStateChanged方法】
2.找到OnErrorListener错误监听listener【查看VideoPlayer中IMediaPlayer.OnErrorListener方法】
3.打印一下报错信息,VideoLogUtil.d("onError ——> STATE_ERROR ———— what:" + what + ", extra: " + extra);
4.获知报错信息后,先上谷歌上查看是否有解决办法
5.如果还是没有解决,就问问别人,哈哈,建议你顺便把错误信息打出来,这样也方便定位具体的问题。
这个库,你可以自己改改,我这边已经用于了3个正式项目,一般常见的视频大都是可以播放的。

    /**
     * 设置视频错误监听器
     * int MEDIA_INFO_VIDEO_RENDERING_START = 3;//视频准备渲染
     * int MEDIA_INFO_BUFFERING_START = 701;//开始缓冲
     * int MEDIA_INFO_BUFFERING_END = 702;//缓冲结束
     * int MEDIA_INFO_VIDEO_ROTATION_CHANGED = 10001;//视频选择信息
     * int MEDIA_ERROR_SERVER_DIED = 100;//视频中断,一般是视频源异常或者不支持的视频类型。
     * int MEDIA_ERROR_IJK_PLAYER = -10000,//一般是视频源有问题或者数据格式不支持,比如音频不是AAC之类的
     * int MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK = 200;//数据错误没有有效的回收
     */
    private IMediaPlayer.OnErrorListener mOnErrorListener = new IMediaPlayer.OnErrorListener() {
        @Override
        public boolean onError(IMediaPlayer mp, int what, int extra) {
            // 直播流播放时去调用mediaPlayer.getDuration会导致-38和-2147483648错误,忽略该错误
            if (what != -38 && what != -2147483648 && extra != -38 && extra != -2147483648) {
                mCurrentState = ConstantKeys.CurrentState.STATE_ERROR;
                mController.onPlayStateChanged(mCurrentState);
                VideoLogUtil.d("onError ——> STATE_ERROR ———— what:" + what + ", extra: " + extra);
            }
            return true;
        }
    };

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants