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()这个方法就可以了