나는 camera2 API를 사용해 왔습니다. 작동 방법에 대해 알아 보려면Android 카메라 2 Api
https://developer.android.com/samples/Camera2Video/index.html의 코드를 다운로드했습니다. 녹음을 멈출 때까지 잘 작동합니다. 녹음을 중지하면 다음 코드가 실행됩니다.
private void stopRecordingVideo() {
// UI
mIsRecordingVideo = false;
mBtn_Video.setText(R.string.record);
// Stop recording
try {
mMediaRecorder.stop();
mMediaRecorder.reset();
}
catch (Exception e) {
e.printStackTrace();
}
Activity activity = getActivity();
if (null != activity) {
System.out.println("file " + getVideoFile(activity));
Toast.makeText(activity, "Video saved: " + getVideoFile(activity),
Toast.LENGTH_SHORT).show();
}
startPreview();
at mMediaRecorder.stop(); 다음과 같은 오류가 발생합니다
01-12 16:24:23.115 2161-2200/com.cameratwoapi E/Surface﹕ queueBuffer: error queuing buffer to SurfaceTexture, -19
01-12 16:24:23.135 2161-2200/com.cameratwoapi E/EGL_emulation﹕ tid 2200: swapBuffers(285): error 0x3003 (EGL_BAD_ALLOC)
01-12 16:24:23.197 2161-2200/com.cameratwoapi E/CameraDeviceGLThread-0﹕ Received exception on GL render thread:
java.lang.IllegalStateException: swapBuffers: EGL error: 0x3003
at android.hardware.camera2.legacy.SurfaceTextureRenderer.checkEglError(SurfaceTextureRenderer.java:487)
at android.hardware.camera2.legacy.SurfaceTextureRenderer.swapBuffers(SurfaceTextureRenderer.java:480)
at android.hardware.camera2.legacy.SurfaceTextureRenderer.drawIntoSurfaces(SurfaceTextureRenderer.java:681)
at android.hardware.camera2.legacy.GLThreadManager$1.handleMessage(GLThreadManager.java:103)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:135)
at android.os.HandlerThread.run(HandlerThread.java:61)
어떤 생각을 잘못하고 있습니다. 나는 몇 시간을 보냈지만 어떤 해결책도 찾을 수 없었다.
수정 - Geneymotion 에뮬레이터를 사용하고 있습니다. 내가 IllegalStateException
mMediaRecorder.stop()
을 호출 한 후
파일 /storage/emulated/0/Android/data/com.gold.cameratwoapi/files/video.mp4에게
감사
EGL 오류 0x3003은 "잘못된 할당"입니다. 뭔가 잘못된 것이 메모리에서 발생하고 있습니다 ... – shkschneider
디버깅을 시도하고 위의 문제를 일으키는 특정 호출을 확인한 적이 있습니까? 또한 비디오를 저장할 가능성이 있기 때문에 응용 프로그램 매니페스트 파일에'WRITE_EXTERNAL_STORAGE' 권한을 추가했는지 확인하십시오. – Willis
감사합니다. @Willis 매니페스트 파일에 쓰기 권한을 부여했습니다.이 경로를 사용하여 /storage/emulated/0/Android/data/com.gold.cameratwoapi/files/video.mp4 파일을 저장하고 있습니다. 이 문제는 mMediaRecorder.stop()에서 발생합니다. – user1154390