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()这个方法就可以了 上一篇: 天地图web开发中查阅api的相关问题
下一篇: CSS:画扇形