【发布时间】:2015-03-10 12:29:27
【问题描述】:
我一直在尝试 camera2 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();
在 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 模拟器。我正在使用的路径
文件/storage/emulated/0/Android/data/com.gold.cameratwoapi/files/video.mp4
谢谢
【问题讨论】:
-
EGL 错误 0x3003 用于“错误分配”。内存出现问题...
-
您是否尝试过调试并查看导致上述问题的具体调用?另外,由于您可能正在保存视频,您是否确保已将
WRITE_EXTERNAL_STORAGE权限添加到您的应用程序清单文件中? -
谢谢大家,@Willis 我确实在清单文件中写入了权限。我正在使用此路径来存储文件 /storage/emulated/0/Android/data/com.gold.cameratwoapi/files/视频.mp4。这个问题发生在 mMediaRecorder.stop();
-
您是否尝试过在实际设备上运行该应用程序?我过去在尝试使用模拟器保存文件时遇到过问题,即使它是允许的。
-
我使用 Nexus 7(硬件) - 我有这个错误