表面视图相机不保存视频
Surface view Camera not saving video
private boolean prepareMediaRecorder(){
myCamera = getCameraInstance();
// set the orientation here to enable portrait recording.
setCameraDisplayOrientation(this,0,myCamera);
mediaRecorder = new MediaRecorder();
myCamera.unlock();
mediaRecorder.setCamera(myCamera);
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
String pathh=Environment.getExternalStorageDirectory().getPath();
Toast.makeText(getApplicationContext(), "Path is "+pathh,Toast.LENGTH_LONG).show();
mediaRecorder.setOutputFile("/sdcard/myvideo1.mp4");
//mediaRecorder.setOutputFile("/storage/sdcard0/myvideo1.mp4");
mediaRecorder.setMaxDuration(60000); // Set max duration 60 sec.
mediaRecorder.setMaxFileSize(50000000); // Set max file size 50Mb
mediaRecorder.setPreviewDisplay(myCameraSurfaceView.getHolder().getSurface());
mediaRecorder.setOrientationHint(MainActivity.orientation);
try {
mediaRecorder.prepare();
} catch (IllegalStateException e) {
releaseMediaRecorder();
return false;
} catch (IOException e) {
releaseMediaRecorder();
return false;
}
return true;
}
我的任务是使用表面视图捕获视频并将其发送到服务器。我找到了第一个解决方案来捕获表面上的视频并使用一些堆栈溢出 link 将其保存在内存中。一个在下面。
起初应用程序启动并完美运行,还保存了视频。然后我删除了视频,然后尝试视频没有保存在内存中。我试过重命名文件也没有用。
"lrwxrwxrwx" android 中的代码值是什么意思。我在 DDMS
中找到了这个
缺少更新图库的代码 MediaScannerConnection.scanFile。代码可能正在保存视频,但图库不会显示视频。重新启动 phone 将扫描图库,如果保存了视频,它们将会出现。此外,文件应用程序可能会列出视频。
如果程序正在保存视频,请在程序末尾或附近添加代码,或覆盖 onPause:
MediaScannerConnection.scanFile(this, new String[]{videoPathName}, null, null);
videoPathName 是一个字符串,您需要设置为保存的视频的路径和名称。
如果仍然不起作用,以下代码应该可以工作,但您仍需要添加 MediaScanner:http://sandyandroidtutorials.blogspot.com/2013/05/android-video-capture-tutorial.html
private boolean prepareMediaRecorder(){
myCamera = getCameraInstance();
// set the orientation here to enable portrait recording.
setCameraDisplayOrientation(this,0,myCamera);
mediaRecorder = new MediaRecorder();
myCamera.unlock();
mediaRecorder.setCamera(myCamera);
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
String pathh=Environment.getExternalStorageDirectory().getPath();
Toast.makeText(getApplicationContext(), "Path is "+pathh,Toast.LENGTH_LONG).show();
mediaRecorder.setOutputFile("/sdcard/myvideo1.mp4");
//mediaRecorder.setOutputFile("/storage/sdcard0/myvideo1.mp4");
mediaRecorder.setMaxDuration(60000); // Set max duration 60 sec.
mediaRecorder.setMaxFileSize(50000000); // Set max file size 50Mb
mediaRecorder.setPreviewDisplay(myCameraSurfaceView.getHolder().getSurface());
mediaRecorder.setOrientationHint(MainActivity.orientation);
try {
mediaRecorder.prepare();
} catch (IllegalStateException e) {
releaseMediaRecorder();
return false;
} catch (IOException e) {
releaseMediaRecorder();
return false;
}
return true;
}
我的任务是使用表面视图捕获视频并将其发送到服务器。我找到了第一个解决方案来捕获表面上的视频并使用一些堆栈溢出 link 将其保存在内存中。一个在下面。
起初应用程序启动并完美运行,还保存了视频。然后我删除了视频,然后尝试视频没有保存在内存中。我试过重命名文件也没有用。
"lrwxrwxrwx" android 中的代码值是什么意思。我在 DDMS
中找到了这个缺少更新图库的代码 MediaScannerConnection.scanFile。代码可能正在保存视频,但图库不会显示视频。重新启动 phone 将扫描图库,如果保存了视频,它们将会出现。此外,文件应用程序可能会列出视频。
如果程序正在保存视频,请在程序末尾或附近添加代码,或覆盖 onPause: MediaScannerConnection.scanFile(this, new String[]{videoPathName}, null, null); videoPathName 是一个字符串,您需要设置为保存的视频的路径和名称。 如果仍然不起作用,以下代码应该可以工作,但您仍需要添加 MediaScanner:http://sandyandroidtutorials.blogspot.com/2013/05/android-video-capture-tutorial.html