Ошибка при остановке записи видео

Ответить
vasm
Сообщения: 1
Зарегистрирован: 10 сен 2015, 22:20

Ошибка при остановке записи видео

Сообщение vasm » 10 сен 2015, 22:29

При выполнении команды mMediaRecorder.stop() выходит ошибка: "E/MediaRecorder﹕ stop failed: -1007".
Что за ошибка ?
(файлы примера во вложении)

public class MainActivity extends Activity implements SurfaceHolder.Callback {

public final int MEDIA_TYPE_IMAGE = 1;
public final int MEDIA_TYPE_VIDEO = 2;

private SurfaceView mSurfaceView;
private SurfaceHolder mHolder;
private boolean mIsPreviewing = false;
private boolean isRecording = false;

private Camera mCamera;
private MediaRecorder mMediaRecorder;

private static final String TAG = "Recorder";
private Button captureButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
captureButton = (Button)findViewById(R.id.button_capture);
mSurfaceView = (SurfaceView)findViewById(R.id.surfaceView);
mHolder = mSurfaceView.getHolder();
mHolder.addCallback(this);
}


@Override
protected void onPause() {
super.onPause();
releaseMediaRecorder();
releaseCamera();
}


public void surfaceCreated(SurfaceHolder holder) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
mCamera = Camera.open(0);
} else {
mCamera = Camera.open();
}

try {
mCamera.setPreviewDisplay(holder);
mCamera.startPreview();
} catch (IOException e) {
}
}


public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
try {
if (mIsPreviewing) {
mCamera.stopPreview();
mIsPreviewing = false;
}
} catch (Exception e){
}

if (mCamera != null) {
try {
mCamera.setPreviewDisplay(holder);
mCamera.startPreview();
mIsPreviewing = true;
} catch (Exception e) {
}
}
}


public void surfaceDestroyed(SurfaceHolder holder) {
if (mCamera != null) {
mCamera.stopPreview();
mCamera.release();
mCamera = null;
mIsPreviewing = false;
}
}


public void onCaptureClick(View view) {
try {
if (isRecording) {
mMediaRecorder.stop();
releaseMediaRecorder();
mCamera.lock();
setCaptureButtonText("Capture");
isRecording = false;
} else {
if (prepareVideoRecorder()) {
mMediaRecorder.start();
setCaptureButtonText("Stop");
isRecording = true;
} else {
releaseMediaRecorder();
}
}
} catch (Exception e) {
}
}


private boolean prepareVideoRecorder(){
try {
mMediaRecorder = new MediaRecorder();
mCamera.unlock();
mMediaRecorder.setCamera(mCamera);
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mMediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
mMediaRecorder.setOutputFile(getOutputMediaFile(CameraHelper.MEDIA_TYPE_VIDEO).toString());
} catch (Exception e) {
return false;
}
try {
mMediaRecorder.setPreviewDisplay(mSurfaceView.getHolder().getSurface());
mMediaRecorder.prepare();
} catch (IllegalStateException e) {
releaseMediaRecorder();
return false;
} catch (IOException e) {
releaseMediaRecorder();
return false;
}
return true;
}


private void setCaptureButtonText(String title) {
captureButton.setText(title);
}

private void releaseMediaRecorder(){
if (mMediaRecorder != null) {
mMediaRecorder.reset();
mMediaRecorder.release();
mMediaRecorder = null;
mCamera.lock();
}
}

private void releaseCamera(){
if (mCamera != null){
mCamera.release();
mCamera = null;
}
}

public File getOutputMediaFile(int type){
if (!Environment.getExternalStorageState().equalsIgnoreCase(Environment.MEDIA_MOUNTED)) {
return null;
}
File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "CameraSample");
if (! mediaStorageDir.exists()){
if (! mediaStorageDir.mkdirs()) {
return null;
}
}
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
File mediaFile;
if (type == MEDIA_TYPE_IMAGE){
mediaFile = new File(mediaStorageDir.getPath() + File.separator + "IMG_"+ timeStamp + ".jpg");
} else if(type == MEDIA_TYPE_VIDEO) {
mediaFile = new File(mediaStorageDir.getPath() + File.separator + "VID_"+ timeStamp + ".mp4");
} else {
return null;
}
return mediaFile;
}
}
Вложения
Example.rar
(3.13 КБ) 152 скачивания

Ответить