捕获并将从android应用程序录制的视频中捕获的帧发送到服务器
我编写了一个android应用程序来捕获视频,并使用Directory.DCIM将其存储在手机的文件系统中,然后尝试使用MediaMetaDataRetriever来捕获帧,但它导致了非法状态异常 //用于捕获视频的片段捕获并将从android应用程序录制的视频中捕获的帧发送到服务器,android,video,video-streaming,frame,video-capture,Android,Video,Video Streaming,Frame,Video Capture,我编写了一个android应用程序来捕获视频,并使用Directory.DCIM将其存储在手机的文件系统中,然后尝试使用MediaMetaDataRetriever来捕获帧,但它导致了非法状态异常 //用于捕获视频的片段 File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM),CAPTURE_TITLE); Uri outputFileUri =
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());
MediaMetadataRetriever retriever=新的MediaMetadataRetriever();
retriever.setDataSource(路径);
ArrayList al=新的ArrayList();
System.out.println(retriever.getFrameAtTime().toString());
Log.d(“帧捕获”,retriever.getFrameAtTime().toString());
al.add(retriever.getFrameAtTime());
有没有更好的方法可以直接从正在录制的视频中捕获帧并直接发送到服务器,而无需将视频存储在移动设备的文件系统中?如果不是,我如何才能让上面的代码段工作而不运行非法状态异常