Reputation: 2412
I am working on video recording app in which i want to display preview and when user click on record button it start recording and when user click stop button it stop recording.
I got camera preview and recording back camera is working fine.
But when I flip camera to front camera and when I start recording it occurs error like this:
FATAL EXCEPTION: main java.lang.RuntimeException: start failed.
at android.media.MediaRecorder.start(Native Method) at
com.opkix.app.fragments.CameraFragment.startRecording(
CameraFragment.java:104)
Here's my code for recording video code:
private boolean prepareMediaRecorder() {
// set the orientation here to enable portrait recording.
mediaRecorder = new MediaRecorder();
mCamera.unlock();
mediaRecorder.setCamera(mCamera);
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
mediaRecorder.setOutputFile(StorageUtils.getOutputMediaFilePath());
mediaRecorder.setMaxDuration(120000); // Set max duration 60 sec.
mediaRecorder.setMaxFileSize(100000000); // Set max file size 50Mb
mediaRecorder.setPreviewDisplay(mPreview.getHolder().getSurface());
try {
mediaRecorder.prepare();
} catch (IllegalStateException e) {
releaseMediaRecorder();
return false;
} catch (IOException e) {
releaseMediaRecorder();
return false;
}
return true;
}
Can anyone please suggest solution?
Upvotes: 1
Views: 1957
Reputation: 640
now, i am also working on Video Recording App.Please one time Run your Code in some another device's.also i am sharing my Code with you.in which some of code is my App related code.remove that if you don't need that.
My Code :
private boolean prepareVideoRecorder() {
mRecorder = new MediaRecorder();
// Both are required for Portrait Video
mCamera.setDisplayOrientation(90);
if (mCameraId == CAMERA_FACING_FRONT) {
mRecorder.setOrientationHint(270);
} else {
mRecorder.setOrientationHint(90);
}
// Step 1: Unlock and set camera to MediaRecorder
mCamera.unlock();
mRecorder.setCamera(mCamera);
// Step 2: Set sources
mRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
mRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
// Step 3: Set a CamcorderProfile (requires API Level 8 or higher)
mRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_480P));
// Step 4: Set output file
final File folder;
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
folder = new File(Environment.getExternalStorageDirectory() + "/CameraApp/Videos");
} else {
folder = new File(Environment.getExternalStorageDirectory() + "/CameraApp/Videos");
}
boolean success = true;
File videoFile;
if (!folder.exists()) {
success = folder.mkdirs();
}
if (success) {
videoFile = new File(folder.getAbsolutePath() + File.separator + getFileNameCustomFormat() + " " + ".mp4");
SavedVideoPath = getFileNameCustomFormat() + " " + ".mp4";
Log.e("Video Path - ", SavedVideoPath);
} else {
Toast.makeText(getBaseContext(), "Video Not saved", Toast.LENGTH_SHORT).show();
return true;
}
mRecorder.setOutputFile(String.valueOf(videoFile));
// mRecorder.setVideoSize(mPreviewWidth, mPreviewHeight);
// Step 5: Set the preview output
mRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());
// Step 6: Prepare configured MediaRecorder
try {
mRecorder.prepare();
} catch (IllegalStateException e) {
Toast.makeText(getApplicationContext(), "prepareVideoRecorder() Exception: " + e.getMessage(), Toast.LENGTH_LONG).show();
releaseMediaRecorder();
return false;
} catch (IOException e) {
Toast.makeText(getApplicationContext(), "prepareVideoRecorder() Exception: " + e.getMessage(), Toast.LENGTH_LONG).show();
releaseMediaRecorder();
return false;
}
return true;
}
And let me know what happen.? after trying my code. Hope this will Helps :
Upvotes: 5