如何在android中播放视频时拍摄videoview的快照?
Posted
技术标签:
【中文标题】如何在android中播放视频时拍摄videoview的快照?【英文标题】:How to take snapshot of videoview while video is playing in android? 【发布时间】:2016-06-08 07:46:50 【问题描述】:我的黑屏不是视频内容,请帮帮我。
我的代码:
private Bitmap takeScreenshot()
relate.setDrawingCacheEnabled(true);
relate.buildDrawingCache();
return relate.getDrawingCache();
private void saveBitmap(Bitmap bitmap)
// File imagePath = new File(Environment.getExternalStorageDirectory() + "/screenshot.png");
FileOutputStream fos;
// String path ="data/data/com.focusmedica.eyeactivity/files/Images" + filename;
try
fos =new FileOutputStream(path);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
sentmail(path);
catch (FileNotFoundException e)
Log.e("GREC", e.getMessage(), e);
catch (IOException e)
Log.e("GREC", e.getMessage(), e);
我正在使用canvas
在videoview
上绘制一些东西。只有我得到黑屏。
我的videoview
在relative layout
里面。
提前致谢.....
【问题讨论】:
你用的是surfaceview还是textureview? 不,我没有同时使用这两个,实际上我是 android 新手,所以我不知道这些东西...@gvsharma 【参考方案1】:您可以从android 获取视频视图的快照或帧。
你可以试试这个代码来获取videoview帧。
public static Bitmap createVideoThumbnail(Context context, Uri uri, int i)
MediaMetadataRetriever mediametadataretriever = new MediaMetadataRetriever();
try
mediametadataretriever.setDataSource(context, uri);
Bitmap bitmap = mediametadataretriever.getFrameAtTime(-1L);
if(null != bitmap)
int j = getThumbnailSize(context, i);
return ThumbnailUtils.extractThumbnail(bitmap, j, j, 2);
return bitmap;
catch (Throwable t)
// TODO log
return null;
finally
try
mediametadataretriever.release();
catch(RuntimeException e)
您可以根据需要使用此方法。
【讨论】:
谢谢兄弟,这个方法帮了我很多..@gvsharma @GvSharma 你能告诉我什么是 getThumbnailSize @GowthamanM,它是一种调整位图高度和宽度的方法。【参考方案2】:我有一个替代解决方案来替换Android MediaMetadataRetriever
的getFrameAt
方法。 AV_FrameCapture 使用MediaCodec
解码视频帧并使用OpenGL
将视频帧转换为RGB 位图。由于AndroidMediaMetadataRetriever
不保证调用getFrameAtTime
时返回结果,所以这个AV_FrameCapture
可以用来提取一帧视频,准确度。
https://***.com/a/60633395/6676310
【讨论】:
以上是关于如何在android中播放视频时拍摄videoview的快照?的主要内容,如果未能解决你的问题,请参考以下文章
在 VideoView 中播放流,将 url 转换为 rtsp
在 Android 中播放 RTSP 流视频时如何保持宽高比?
为视频播放器启动新活动时,如何强制android视频播放器在视频播放后不退出