я в настоящее время есть приложение, которое я пытаюсь записать видео со следующим методом для инициализации камеры:Android - фатальный сигнал 11 при остановке и сброса камеры после записи видео
private void initRecorder(Surface surface) throws IOException {
if (mCamera == null) {
mCamera = Camera.open();
mCamera.unlock();
}
if (mMediaRecorder == null) mMediaRecorder = new MediaRecorder();
mMediaRecorder.setPreviewDisplay(surface);
mMediaRecorder.setCamera(mCamera);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mMediaRecorder.setVideoEncodingBitRate(512 * 1000);
mMediaRecorder.setVideoFrameRate(30);
mMediaRecorder.setVideoSize(640, 480);
mMediaRecorder.setOutputFile(videoFile);
try {
mMediaRecorder.prepare();
} catch (IllegalStateException e) {
e.printStackTrace();
}
initSuccess = true;
}
Когда я пытаюсь остановить камера или когда surfaceDestroyed
называется, я называю следующий метод:
private void resetCamera() {
mMediaRecorder.stop();
mMediaRecorder.reset();
mMediaRecorder.release();
mCamera.release();
mCamera = null;
try {
initRecorder(mHolder.getSurface());
} catch (IOException e) {
e.printStackTrace();
}
}
Однако где-то в этом коде я получаю фатальный сигнал 11 ошибки. По-видимому, код пытается незаконно получить доступ к части памяти.
Мне было интересно, как мне обойти эту ошибку?
Вот Logcat дамп с момента, когда я начала записи видео до момента, когда я останавливаю запись:
D/dalvikvm: GC_FOR_ALLOC freed 1309K, 27% free 7434K/10168K, paused 9ms, total 9ms
I/dalvikvm: Could not compile trace for Ljava/util/Arrays;fill, offset 5
I/dalvikvm: ++++++++++++++++++++++++++++++++++++++++++++
I/dalvikvm: JIT_INFO: ME Issues while compiling trace Ljava/util/Arrays;fill, offset 5
I/dalvikvm: The trace provoked a spill.
I/dalvikvm: Trying less registerization from 1 to 0
D/dalvikvm: GC_FOR_ALLOC freed 1415K, 27% free 7438K/10168K, paused 10ms, total 10ms
A/libc: Fatal signal 11 (SIGSEGV) at 0x00000010 (code=1), thread 13774 (arch.treadmill3)
Сообщение полный лог ошибки (я знаю, что это не ява следа, а иногда и другая информация в нем полезно). –
У меня такая же проблема. Вы решили это? – YYamil