ijkplayer 直播时截屏的实现

ijkplayer官方文件在这里 https://github.com/Bilibili/ijkplayer

接入实现主要参考了这篇文章 https://blog.csdn.net/huaxun66/article/details/53401231

在直播时获取当前页面的截图需要 setRender时设置为TextureRenderView。

在封装好的IjkVideoView这个类里面有setRender如下方法:

   public void setRender(int render) {
        Log.e("2018/5/30", "setRender(IjkVideoView.java:381)-->>");
        switch(render) {
        case 0:
            this.setRenderView((IRenderView)null);
            break;
        case 1:
            SurfaceRenderView renderView1 = new SurfaceRenderView(this.getContext());
            this.setRenderView(renderView1);
            break;
        case 2:
            TextureRenderView renderView = new TextureRenderView(this.getContext());
            if (this.mMediaPlayer != null) {
                renderView.getSurfaceHolder().bindToMediaPlayer(this.mMediaPlayer);
                renderView.setVideoSize(this.mMediaPlayer.getVideoWidth(), this.mMediaPlayer.getVideoHeight());
                renderView.setVideoSampleAspectRatio(this.mMediaPlayer.getVideoSarNum(), this.mMediaPlayer.getVideoSarDen());
                renderView.setAspectRatio(this.mCurrentAspectRatio);
            }

            this.setRenderView(renderView);
            break;
        default:
            Log.e(this.TAG, String.format(Locale.getDefault(), "invalid render %d\n", render));
        }

    }

即在初始化IjkVideoView的时候需要调用这个方法,并设置成TextureRenderView。

接下来需要在IjkVideoView这个类里面添加截图方法,方法如下;

 @TargetApi(14)
    public Bitmap getShortcut() {
        return this.mRenderView instanceof TextureRenderView ? ((TextureRenderView)this.mRenderView).getBitmap() : null;
    }
然后在直播过程中需要截图的时候调用getShortcut()这个方法就可以了

猜你喜欢

转载自blog.csdn.net/weixin_42363443/article/details/80567725