四个方案:
1.原生方法,MediaMetadataRetriever
Bitmap bitmap = null;
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
try {
retriever.setDataSource(url, new HashMap<String, String>());
bitmap = retriever.getFrameAtTime(videoView.getCurrentPosition() * 1000);
} catch (Exception ex) {
LogUtils.logE("getCurrentVideoBitmap " + ex);
} finally {
try {
retriever.release();
} catch (RuntimeException ex) {
// Ignore failures while cleaning up.
}
}
if (bitmap == null) {
return null;
}
bitmap = Bitmap.createBitmap(bitmap);
mp4没问题,但对切片类不行
2.ffmpeg等第三方库
全支持,但集成比较麻烦,而且体积也比较大
3.通过MediaProjectionManager录制屏幕获取帧来截图
这个截的是全屏,如果需要去边缘之类的可以直接处理bitmap
网友评论