我编写了一个Android应用程序来捕获视频并使用Directory.DCIM将其存储在手机的文件系统中,然后尝试使用MediaMetaDataRetriever捕获帧,但结果是IllegalStateException。
//用于捕获视频的代码段
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM),CAPTURE_TITLE);
Uri outputFileUri = Uri.fromFile( file );
Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(intent, ACTION_TAKE_VIDEO);
//捕捉帧的片段
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource(path);
ArrayList<Object> al = new ArrayList<Object>();
System.out.println(retriever.getFrameAtTime().toString());
Log.d("Frame Capture", retriever.getFrameAtTime().toString());
al.add(retriever.getFrameAtTime());
是否有更好的方法直接从正在录制的视频中捕获帧并直接将其发送到服务器而不将视频存储在移动设备的文件系统中?如果没有,如何在不遇到非法状态异常的情况下使上述代码片段正常工作。