欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ijkplayer 直播时截屏的实现

程序员文章站 2022-07-01 20:31:16
...

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()这个方法就可以了
相关标签: android ijkplayer