我正在编写一个应用程序,通过VideoView小部件播放来自视频服务器(h264)的实时视频流。
我需要检索视频的快照并将其另存为位图图像(以jpg或png格式)。
我编写了以下似乎有效的代码(因为它既没有挂起也没有抛出异常),但我得到的只是一个黑色图像:
final VideoView videoView = (VideoView) findViewById(R.id.videoH264);
new Thread(new Runnable()
{
public void run()
{
videoView.setDrawingCacheEnabled(true);
videoView.buildDrawingCache();
Bitmap bmp = videoView.getDrawingCache();
String path = Environment.getExternalStorageDirectory().toString();
OutputStream fOut = null;
File file = new File(path, "snapshot.jpg");
try
{
fOut = new FileOutputStream(file);
bmp.compress(Bitmap.CompressFormat.JPEG, 85, fOut);
fOut.flush();
fOut.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
try
{
MediaStore.Images.Media.insertImage(getContentResolver(),file.getAbsolutePath(),file.getName(),file.getName());
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
我尝试在活动的onCreate事件中初始化DrawingCache功能,但应用程序保持相同的行为。