Doikki / DKVideoPlayer

Android Video Player. 安卓视频播放器,封装MediaPlayer、ExoPlayer、IjkPlayer。模仿抖音并实现预加载,列表播放,悬浮播放,广告播放,弹幕,视频水印,视频滤镜
Apache License 2.0
5.04k stars 1.04k forks source link

OPPO R9m 兼容问题 #72

Closed wendellq89 closed 6 years ago

wendellq89 commented 6 years ago

手机型号:OPPO R9m 系统:android 5.1 问题描述:正常播放视频,然后点击手机左下角“多任务”按键视频暂停播放,在“多任务”列表里面重新点击进入播放的app,视频卡住不动,视频声音正常,拖动进度条视频画面也无法恢复正常。

Doikki commented 6 years ago

你用的是TextrueView还是SurfaceView

wendellq89 commented 6 years ago

使用默认的配置TextureView出现的情况。但是用SurfaceView也有问题,会进入IjkVideoView.STATE_ERROR 状态

Doikki commented 6 years ago

视频地址给我一下

wendellq89 commented 6 years ago

和视频源应该没关系,demo自带的视频源也会出现这种情况 http://mov.bn.netease.com/open-movie/nos/flv/2017/01/03/SC8U8K7BC_hd.flv 我使用的视频源 http://7xo22l.com1.z0.glb.clouddn.com/house/video/2018-07-13/S543536_2.mp4

Doikki commented 6 years ago

有没有打开硬解

wendellq89 commented 6 years ago

没有开启硬解码,和demo里面的PlayerActivity 默认配置一样,只是换了视频源。此问题不是广泛存在的问题,在多款测试机型中只有OPPO R9m 出现此问题。华为,红米,魅族,vivo等几款机型暂无遇到此问题

Doikki commented 6 years ago

这应该是5.1系统的bug。我手上有一台5.1的手机也是这样,但我已经有了解决方法,继承ijkVideoview,重写addDisplay,如下。 @Override protected void addDisplay() { super.addDisplay(); if (mTextureView != null) { mTextureView.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() { @Override public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int width, int height) { mMediaPlayer.setSurface(new Surface(surfaceTexture)); }

            @Override
            public void onSurfaceTextureSizeChanged(SurfaceTexture surfaceTexture, int width, int height) {

            }

            @Override
            public boolean onSurfaceTextureDestroyed(SurfaceTexture surfaceTexture) {
                return false;
            }

            @Override
            public void onSurfaceTextureUpdated(SurfaceTexture surfaceTexture) {

            }
        });
    }
}

当然你也可以直接改我library的源码。 这样做会导致另外一个问题,就是从后台切回来之后会黑屏一下,然后再显示画面。 还有另外一种方式就是在5.1系统使用surfaceview不会有此问题