googlearchive / android-Camera2Video

Migrated:
https://github.com/android/camera
Apache License 2.0
1.21k stars 569 forks source link

Camera2Video app crashes on Nexus 7 device with android version 5.0.2 #2

Closed mikosik closed 5 years ago

mikosik commented 9 years ago

Steps to reproduce:

  1. Download android-Camera2Video source and check-out b9343127feddcf2c1d7dd330e190e9f21e41ab02
  2. build app via ./gradlew assembleDebug run from project root
  3. install to device via adb install Application/build/outputs/apk/Application-debug.apk
  4. run app by tapping app icon - it will show preview video from front-facing camera.
  5. press start button. It will cause start button to change label to stop, preview will still show video from front-facing camera
  6. press stop button. It will cause stop button to change to start. Preview picture will freeze.
  7. After around 1-2 second since pressing stop application will just quit automatically without displaying any error/information. logcat will contain a couple of exceptions and errors. Whole logcat (starting just before application was launched) is pasted below. Note that probably the most interesting errors happen just after start is pressed.

I run the same binary on nexus-5 and it worked correctly. After pressing stop preview didn't freeze and toast appeared informing where video file was saved on device.

LOGCAT

I/ActivityManager( 482): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.example.android.camera2video/.CameraActivity (has extras)} from uid 10033 on display 0 I/ActivityManager( 482): Start proc com.example.android.camera2video for activity com.example.android.camera2video/.CameraActivity: pid=2992 uid=10074 gids={50074, 9997} abi=armeabi-v7a I/art ( 2992): Late-enabling -Xcheck:jni D/OpenGLRenderer( 2992): Render dirty regions requested: false D/Atlas ( 2992): Validating map... D/libEGL ( 2992): loaded /system/lib/egl/libEGL_tegra.so D/libEGL ( 2992): loaded /system/lib/egl/libGLESv1_CM_tegra.so D/libEGL ( 2992): loaded /system/lib/egl/libGLESv2_tegra.so I/OpenGLRenderer( 2992): Initialized EGL, version 1.4 D/OpenGLRenderer( 2992): Enabling debug mode 0 I/CameraService( 135): getCameraCharacteristics: Switching to HAL1 shim implementation... W/ArrayUtils( 2992): Ignoring invalid value nv-vivid W/ArrayUtils( 2992): Ignoring invalid value nv-emboss E/Camera2VideoFragment( 2992): Couldn't find any suitable preview size W/ArrayUtils( 2992): Ignoring invalid value nv-vivid W/ArrayUtils( 2992): Ignoring invalid value nv-emboss I/CameraManager( 2992): Using legacy camera HAL. W/AudioFlinger( 135): acquireAudioSessionId() unknown client 2992 for session 13 W/AudioFlinger( 135): acquireAudioSessionId() unknown client 2992 for session 14 I/CameraClient( 135): Opening camera 0 I/NvOmxCamera( 135): HAL_camera_device_open: open camera 0 E/ ( 135): ioctl SetWhiteBalance failed: -1 E/NvOmxCameraSettingsParser( 135): Param type 70 not supported I/NvOmxCamera( 135): HAL_camera_device_open: opened camera 0 (0x420c4cb8) W/ArrayUtils( 2992): Ignoring invalid value nv-vivid W/ArrayUtils( 2992): Ignoring invalid value nv-emboss I/ActivityManager( 482): Displayed com.example.android.camera2video/.CameraActivity: +854ms E/OMXNodeInstance( 135): OMX_SetParameter() failed for StoreMetaDataInBuffers: 0x80001005 E/ACodec ( 135): [OMX.Nvidia.h264.encoder] storeMetaDataInBuffers (output) failed w/ err -2147483648 W/ACodec ( 135): do not know color format 0x7f000789 = 2130708361 D/NvOsDebugPrintf( 135): NvMMLiteOpen : Block : BlockType = 4 D/NvOsDebugPrintf( 135): NvRmPowerModuleClockControl on MOD[29] INST[0] D/NvOsDebugPrintf( 135): NvRmModuleResetWithHold deassert MOD[29] INST[0] D/NvOsDebugPrintf( 135): NvMMLiteBlockCreate : Block : BlockType = 4 I/ACodec ( 135): setupVideoEncoder succeeded W/ACodec ( 135): do not know color format 0x7f000789 = 2130708361 E/OMXNodeInstance( 135): OMX_EnableAndroidNativeBuffers failed with error -2147479547 (0x80001005) D/NvOsDebugPrintf( 135): +NvxVideoEncoderSetNvMMAttributes D/NvOsDebugPrintf( 135): -NvxVideoEncoderSetNvMMAttributes I/AudioFlinger( 135): AudioFlinger's thread 0x4177c008 ready to run W/AudioFlinger( 135): acquireAudioSessionId() unknown client 2992 for session 15 I/CameraDeviceState( 2992): Legacy camera service transitioning to state CONFIGURING I/RequestThread-0( 2992): Configure outputs: 2 surfaces configured. D/Camera ( 2992): app passed NULL surface I/CameraDeviceState( 2992): Legacy camera service transitioning to state IDLE I/RequestQueue( 2992): Repeating capture request set. W/LegacyRequestMapper( 2992): convertRequestMetadata - control.awbRegions setting is not supported, ignoring value W/LegacyRequestMapper( 2992): convertRequestToMetadata - Ignoring android.lens.focusDistance false, only 0.0f is supported D/ ( 135): Camera fd open as: 119 E/NvOmxCamera( 135): OMXERRORTYPE android::NvOmxCamera::getCameraStereoMode(NvxComponent, NvOmxCameraUserStereoMode&): Error: invalid NVX mode 0. E/NvOmxCamera( 135): OMXERRORTYPE android::NvOmxCamera::getCameraStereoModeAndCaptureInfo(NvxComponent, NvOmxCameraUserStereoMode&, NVX_STEREOCAPTUREINFO&): getCameraStereoMode failed with 0x00000000 I/CameraDeviceState( 2992): Legacy camera service transitioning to state CAPTURING E/WifiStateMachine( 482): WifiStateMachine CMD_START_SCAN source -2 txSuccessRate=0.03 rxSuccessRate=0.03 targetRoamBSSID=64:70:02:c0:3b:e0 RSSI=-53 I/wpa_supplicant( 726): wlan0: CTRL-EVENT-SCAN-STARTED I/MPEG4Writer( 135): limits: 4294967295/0 bytes/us, bit rate: 10012200 bps and the estimated moov size 3072 bytes I/MPEG4Writer( 135): Start time offset: 200000 us I/MediaCodecSource( 135): MediaCodecSource (video) starting I/MediaCodecSource( 135): MediaCodecSource (video) started I/MPEG4Writer( 135): Start time offset: 200000 us I/MediaCodecSource( 135): MediaCodecSource (audio) starting I/MediaCodecSource( 135): MediaCodecSource (audio) started D/TaskPersister( 482): removeObsoleteFile: deleting file=16_task.xml D/TaskPersister( 482): removeObsoleteFile: deleting file=16_task_thumbnail.png I/MPEG4Writer( 135): setStartTimestampUs: 25290 I/MPEG4Writer( 135): Earliest track starting time: 25290 I/MPEG4Writer( 135): setStartTimestampUs: 4075 I/MPEG4Writer( 135): Earliest track starting time: 4075 D/MPEG4Writer( 135): Video track stopping D/MPEG4Writer( 135): Video track source stopping I/MediaCodecSource( 135): encoder (video) stopping I/MPEG4Writer( 135): Received total/0-length (34/0) buffers and encoded 33 frames. - Video W/GraphicBufferSource( 135): Dropped back down to Loaded without Executing D/NvOsDebugPrintf( 135): NvRmPowerModuleClockControl off MOD[29] INST[0] I/MediaCodecSource( 135): encoder (video) stopped D/MPEG4Writer( 135): Video track source stopped D/MPEG4Writer( 135): Video track stopped D/MPEG4Writer( 135): Audio track stopping D/MPEG4Writer( 135): Audio track source stopping I/MediaCodecSource( 135): encoder (audio) stopping I/MPEG4Writer( 135): Received total/0-length (18/0) buffers and encoded 17 frames. - Audio I/MPEG4Writer( 135): Audio track drift time: 0 us I/MediaCodecSource( 135): encoder (audio) stopped I/MediaCodecSource( 135): puller (audio) stopping E/BufferQueueProducer( 135): [GraphicBufferSource] dequeueBuffer: BufferQueue has been abandoned W/nvwsi ( 2992): dequeueBuffer failed, error -19 E/libEGL ( 2992): eglMakeCurrent:777 error 300b (EGL_BAD_NATIVE_WINDOW) E/CameraDeviceGLThread-0( 2992): Received exception on GL render thread: E/CameraDeviceGLThread-0( 2992): java.lang.IllegalStateException: makeCurrent: EGL error: 0x300b E/CameraDeviceGLThread-0( 2992): at android.hardware.camera2.legacy.SurfaceTextureRenderer.checkEglError(SurfaceTextureRenderer.java:487) E/CameraDeviceGLThread-0( 2992): at android.hardware.camera2.legacy.SurfaceTextureRenderer.makeCurrent(SurfaceTextureRenderer.java:475) E/CameraDeviceGLThread-0( 2992): at android.hardware.camera2.legacy.SurfaceTextureRenderer.drawIntoSurfaces(SurfaceTextureRenderer.java:675) E/CameraDeviceGLThread-0( 2992): at android.hardware.camera2.legacy.GLThreadManager$1.handleMessage(GLThreadManager.java:103) E/CameraDeviceGLThread-0( 2992): at android.os.Handler.dispatchMessage(Handler.java:98) E/CameraDeviceGLThread-0( 2992): at android.os.Looper.loop(Looper.java:135) E/CameraDeviceGLThread-0( 2992): at android.os.HandlerThread.run(HandlerThread.java:61) I/CameraDeviceState( 2992): Legacy camera service transitioning to state ERROR I/MediaCodecSource( 135): puller (audio) stopped D/MPEG4Writer( 135): Audio track source stopped D/MPEG4Writer( 135): Audio track stopped D/MPEG4Writer( 135): Duration from tracks range is [2176000, 2198741] us D/MPEG4Writer( 135): Stopping writer thread D/MPEG4Writer( 135): 0 chunks are written in the last batch D/MPEG4Writer( 135): Writer thread stopped D/MPEG4Writer( 135): Video track stopping D/MPEG4Writer( 135): Audio track stopping W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. W/ALooperRoster( 135): failed to deliver message. Target handler not registered. E/OMXNodeInstance( 135): OMX_SetParameter() failed for StoreMetaDataInBuffers: 0x80001005 E/ACodec ( 135): [OMX.Nvidia.h264.encoder] storeMetaDataInBuffers (output) failed w/ err -2147483648 W/ACodec ( 135): do not know color format 0x7f000789 = 2130708361 D/NvOsDebugPrintf( 135): NvMMLiteOpen : Block : BlockType = 4 D/NvOsDebugPrintf( 135): NvRmPowerModuleClockControl on MOD[29] INST[0] D/NvOsDebugPrintf( 135): NvRmModuleResetWithHold deassert MOD[29] INST[0] D/NvOsDebugPrintf( 135): NvMMLiteBlockCreate : Block : BlockType = 4 I/ACodec ( 135): setupVideoEncoder succeeded W/ACodec ( 135): do not know color format 0x7f000789 = 2130708361 E/OMXNodeInstance( 135): OMX_EnableAndroidNativeBuffers failed with error -2147479547 (0x80001005) D/NvOsDebugPrintf( 135): +NvxVideoEncoderSetNvMMAttributes D/NvOsDebugPrintf( 135): -NvxVideoEncoderSetNvMMAttributes I/AudioFlinger( 135): AudioFlinger's thread 0x4250e008 ready to run W/AudioFlinger( 135): acquireAudioSessionId() unknown client 2992 for session 19 W/AudioFlinger( 135): session id 15 not found for pid 2992 W/System.err( 2992): android.hardware.camera2.CameraAccessException: The camera device has encountered a serious error W/System.err( 2992): at android.hardware.camera2.impl.CameraDeviceImpl.checkIfCameraClosedOrInError(CameraDeviceImpl.java:1478) W/System.err( 2992): at android.hardware.camera2.impl.CameraDeviceImpl.createCaptureRequest(CameraDeviceImpl.java:476) W/System.err( 2992): at com.example.android.camera2video.Camera2VideoFragment.startPreview(Camera2VideoFragment.java:408) W/System.err( 2992): at com.example.android.camera2video.Camera2VideoFragment.stopRecordingVideo(Camera2VideoFragment.java:543) W/System.err( 2992): at com.example.android.camera2video.Camera2VideoFragment.onClick(Camera2VideoFragment.java:292) W/System.err( 2992): at android.view.View.performClick(View.java:4756) W/System.err( 2992): at android.view.View$PerformClick.run(View.java:19749) W/System.err( 2992): at android.os.Handler.handleCallback(Handler.java:739) W/System.err( 2992): at android.os.Handler.dispatchMessage(Handler.java:95) W/System.err( 2992): at android.os.Looper.loop(Looper.java:135) W/System.err( 2992): at android.app.ActivityThread.main(ActivityThread.java:5221) W/System.err( 2992): at java.lang.reflect.Method.invoke(Native Method) W/System.err( 2992): at java.lang.reflect.Method.invoke(Method.java:372) W/System.err( 2992): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) W/System.err( 2992): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) E/RequestThread-0( 2992): Timed out while waiting for request to complete. W/CaptureCollector( 2992): Preview buffers dropped for request: 0 E/CameraDeviceState( 2992): Cannot receive result while in state: 0 E/CameraDeviceState( 2992): Cannot receive result while in state: 0 E/CameraDeviceState( 2992): Cannot receive result while in state: 0 W/MessageQueue( 2992): Handler (android.graphics.SurfaceTexture$1) {156a802e} sending message to a Handler on a dead thread W/MessageQueue( 2992): java.lang.IllegalStateException: Handler (android.graphics.SurfaceTexture$1) {156a802e} sending message to a Handler on a dead thread W/MessageQueue( 2992): at android.os.MessageQueue.enqueueMessage(MessageQueue.java:325) W/MessageQueue( 2992): at android.os.Handler.enqueueMessage(Handler.java:631) W/MessageQueue( 2992): at android.os.Handler.sendMessageAtTime(Handler.java:600) W/MessageQueue( 2992): at android.os.Handler.sendMessageDelayed(Handler.java:570) W/MessageQueue( 2992): at android.os.Handler.sendEmptyMessageDelayed(Handler.java:534) W/MessageQueue( 2992): at android.os.Handler.sendEmptyMessage(Handler.java:519) W/MessageQueue( 2992): at android.graphics.SurfaceTexture.postEventFromNative(SurfaceTexture.java:368) E/BufferQueueProducer( 2992): [unnamed-2992-1] queueBuffer: BufferQueue has been abandoned E/Surface ( 135): queueBuffer: error queuing buffer to SurfaceTexture, -19 E/NvOmxCamera( 135): Queue Buffer Failed. Skipping buffer. E/BufferQueueProducer( 2992): [unnamed-2992-1] dequeueBuffer: BufferQueue has been abandoned E/NvOmxCamera( 135): Dequeue Buffer Failed E/BufferQueueProducer( 2992): [unnamed-2992-1] queueBuffer: BufferQueue has been abandoned E/Surface ( 135): queueBuffer: error queuing buffer to SurfaceTexture, -19 E/NvOmxCamera( 135): Queue Buffer Failed. Skipping buffer. E/BufferQueueProducer( 2992): [unnamed-2992-1] dequeueBuffer: BufferQueue has been abandoned E/NvOmxCamera( 135): Dequeue Buffer Failed E/BufferQueueProducer( 2992): [unnamed-2992-1] cancelBuffer: BufferQueue has been abandoned E/BufferQueueProducer( 2992): [unnamed-2992-1] cancelBuffer: BufferQueue has been abandoned D/ ( 135): Camera fd close (MI1040) E/NvOmxCamera( 135): Already called release() I/CameraClient( 135): Destroying camera 0 W/NvOmxCamera( 135): Already called release() D/NuPlayerDriver( 135): reset(0x40d727e0) D/NuPlayerDriver( 135): notifyResetComplete(0x40d727e0) D/NuPlayerDriver( 135): reset(0x4004ed00) D/NuPlayerDriver( 135): notifyResetComplete(0x4004ed00) I/Choreographer( 2992): Skipped 184 frames! The application may be doing too much work on its main thread. D/MPEG4Writer( 135): Video track stopping E/MPEG4Writer( 135): Stop() called but track is not started W/GraphicBufferSource( 135): Dropped back down to Loaded without Executing D/NvOsDebugPrintf( 135): NvRmPowerModuleClockControl off MOD[29] INST[0] D/MPEG4Writer( 135): Audio track stopping E/MPEG4Writer( 135): Stop() called but track is not started W/AudioFlinger( 135): session id 19 not found for pid 2992 I/ActivityManager( 482): Killing 2460:com.google.android.inputmethod.korean/u0a30 (adj 15): empty #17 W/libprocessgroup( 482): failed to open /acct/uid_10030/pid_2460/cgroup.procs: No such file or directory W/MessageQueue( 2992): Handler (android.os.Handler) {1d22713a} sending message to a Handler on a dead thread W/MessageQueue( 2992): java.lang.IllegalStateException: Handler (android.os.Handler) {1d22713a} sending message to a Handler on a dead thread W/MessageQueue( 2992): at android.os.MessageQueue.enqueueMessage(MessageQueue.java:325) W/MessageQueue( 2992): at android.os.Handler.enqueueMessage(Handler.java:631) W/MessageQueue( 2992): at android.os.Handler.sendMessageAtFrontOfQueue(Handler.java:623) W/MessageQueue( 2992): at android.hardware.camera2.legacy.RequestThreadManager.quit(RequestThreadManager.java:941) W/MessageQueue( 2992): at android.hardware.camera2.legacy.LegacyCameraDevice.close(LegacyCameraDevice.java:444) W/MessageQueue( 2992): at android.hardware.camera2.legacy.LegacyCameraDevice.finalize(LegacyCameraDevice.java:468) W/MessageQueue( 2992): at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:190) W/MessageQueue( 2992): at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:173) W/MessageQueue( 2992): at java.lang.Thread.run(Thread.java:818) E/WifiStateMachine( 482): WifiStateMachine CMD_START_SCAN source -2 txSuccessRate=0.00 rxSuccessRate=0.25 targetRoamBSSID=64:70:02:c0:3b:e0 RSSI=-51 E/WifiStateMachine( 482): WifiStateMachine starting scan for "moria"WPA_PSK with 2437 I/wpa_supplicant( 726): wlan0: CTRL-EVENT-SCAN-STARTED

jfschmakeit commented 9 years ago

Thanks for your detailed issue report! Over to yaraki for comment, but my understanding is that the Nexus 7 only supports a part of the camera2 API, not the full API. Either way, the sample should not crash with an exception.

jfschmakeit commented 9 years ago

(Internal: 19083047)

mikosik commented 9 years ago

Thanks a lot for so quick response.

As this problem blocks some of my daily job tasks I would be grateful if you could provide some details about root cause of the problem once you pinpoint it.

My understanding is that basic functionality of camera2 that is used by camera2video app should be supported by any lollipop device. This means we have a bug in android 5.0.2 as it doesn't provide basic camera functionality on some devices. This would force me to use old camera API on those devices but I prefer to wait for results of your investigation.

Nyceane commented 9 years ago

Hey there, same problems happens on Moto X, is there any fix around this?

AlemaoEc commented 9 years ago

+1

RPetrov commented 9 years ago

I have the same. nexus 7, Android 5.0.2

RPetrov commented 9 years ago

Nexus 7 only supports a part of the camera2 API, not the full API

May be Nexus 7 doesn't support some other parts of API? How can i understand it? I have Android 5.0.2 and it means i can use API 21, i think. Can i use some workaround?

tfrysinger commented 9 years ago

I have seen this same behavior recently. Anyone have a work-around?

RPetrov commented 9 years ago

I have.. but i have specific situation: I don't need preview without recording. I start recording after starting preview immediately. So, i changed code a bit. If it is OK for you, i will share it.

tfrysinger commented 9 years ago

I don't need preview at all..but sure, share what you have.

RPetrov commented 9 years ago

https://gist.github.com/anonymous/be03bb6f5fa5287bc52b I changed stopRecordingVideo() method. And I start recording automatically after adding fragment, see startPreview() or switchCamera(). It works OK for me.

TommyVisic commented 9 years ago

One issue I had w/ the Nexus 7 was assuming that a back camera would be available (there's none on the first version). I needed to fall back to CameraCharacteristics.LENS_FACING_FRONT in this case.

madhavajay commented 9 years ago

Crashes as soon as you hit stop on my Nexus 4 Android 5.0.1 as well. The video file gets successfully written but it seems to create a new media recorder with a new file and then crash. I can tell coz I changed the filename to a timestamp, and every time it crashes the activity i can see 1 file for the video and a new file of 0k with the timestamp of the second i hit stop.

This is really annoying as I was hoping to use the new APIs rather than the old ones for my app.

04-12 18:08:38.706 24717-24743/com.example.android.camera2video D/OpenGLRenderer﹕ Render dirty regions requested: true 04-12 18:08:38.715 24717-24717/com.example.android.camera2video D/Atlas﹕ Validating map... 04-12 18:08:38.914 24717-24743/com.example.android.camera2video I/Adreno-EGL﹕ : QUALCOMM Build: 10/28/14, c33033c, Ia6306ec328 04-12 18:08:38.915 24717-24743/com.example.android.camera2video I/OpenGLRenderer﹕ Initialized EGL, version 1.4 04-12 18:08:38.940 24717-24743/com.example.android.camera2video D/OpenGLRenderer﹕ Enabling debug mode 0 04-12 18:08:39.010 24717-24717/com.example.android.camera2video W/ArrayUtils﹕ Ignoring invalid value normal 04-12 18:08:39.010 24717-24717/com.example.android.camera2video W/ArrayUtils﹕ Ignoring invalid value emboss 04-12 18:08:39.011 24717-24717/com.example.android.camera2video W/ArrayUtils﹕ Ignoring invalid value sketch 04-12 18:08:39.011 24717-24717/com.example.android.camera2video W/ArrayUtils﹕ Ignoring invalid value neon 04-12 18:08:39.011 24717-24717/com.example.android.camera2video W/ArrayUtils﹕ Ignoring invalid value asd 04-12 18:08:39.011 24717-24717/com.example.android.camera2video W/ArrayUtils﹕ Ignoring invalid value backlight 04-12 18:08:39.011 24717-24717/com.example.android.camera2video W/ArrayUtils﹕ Ignoring invalid value flowers 04-12 18:08:39.011 24717-24717/com.example.android.camera2video W/ArrayUtils﹕ Ignoring invalid value AR 04-12 18:08:39.023 24717-24717/com.example.android.camera2video E/Camera2VideoFragment﹕ Couldn't find any suitable preview size 04-12 18:08:39.029 24717-24717/com.example.android.camera2video W/ArrayUtils﹕ Ignoring invalid value normal 04-12 18:08:39.030 24717-24717/com.example.android.camera2video W/ArrayUtils﹕ Ignoring invalid value emboss 04-12 18:08:39.030 24717-24717/com.example.android.camera2video W/ArrayUtils﹕ Ignoring invalid value sketch 04-12 18:08:39.030 24717-24717/com.example.android.camera2video W/ArrayUtils﹕ Ignoring invalid value neon 04-12 18:08:39.030 24717-24717/com.example.android.camera2video W/ArrayUtils﹕ Ignoring invalid value asd 04-12 18:08:39.030 24717-24717/com.example.android.camera2video W/ArrayUtils﹕ Ignoring invalid value backlight 04-12 18:08:39.030 24717-24717/com.example.android.camera2video W/ArrayUtils﹕ Ignoring invalid value flowers 04-12 18:08:39.030 24717-24717/com.example.android.camera2video W/ArrayUtils﹕ Ignoring invalid value AR 04-12 18:08:39.035 24717-24717/com.example.android.camera2video I/CameraManager﹕ Using legacy camera HAL. 04-12 18:08:39.296 24717-24717/com.example.android.camera2video W/ArrayUtils﹕ Ignoring invalid value normal 04-12 18:08:39.296 24717-24717/com.example.android.camera2video W/ArrayUtils﹕ Ignoring invalid value emboss 04-12 18:08:39.296 24717-24717/com.example.android.camera2video W/ArrayUtils﹕ Ignoring invalid value sketch 04-12 18:08:39.296 24717-24717/com.example.android.camera2video W/ArrayUtils﹕ Ignoring invalid value neon 04-12 18:08:39.296 24717-24717/com.example.android.camera2video W/ArrayUtils﹕ Ignoring invalid value asd 04-12 18:08:39.296 24717-24717/com.example.android.camera2video W/ArrayUtils﹕ Ignoring invalid value backlight 04-12 18:08:39.296 24717-24717/com.example.android.camera2video W/ArrayUtils﹕ Ignoring invalid value flowers 04-12 18:08:39.296 24717-24717/com.example.android.camera2video W/ArrayUtils﹕ Ignoring invalid value AR 04-12 18:08:39.544 24717-24717/com.example.android.camera2video I/CameraDeviceState﹕ Legacy camera service transitioning to state CONFIGURING 04-12 18:08:39.545 24717-24766/com.example.android.camera2video I/RequestThread-0﹕ Configure outputs: 2 surfaces configured. 04-12 18:08:39.545 24717-24766/com.example.android.camera2video D/Camera﹕ app passed NULL surface 04-12 18:08:39.610 24717-24717/com.example.android.camera2video I/CameraDeviceState﹕ Legacy camera service transitioning to state IDLE 04-12 18:08:39.622 24717-24739/com.example.android.camera2video I/RequestQueue﹕ Repeating capture request set. 04-12 18:08:39.628 24717-24766/com.example.android.camera2video W/LegacyRequestMapper﹕ convertRequestMetadata - control.awbRegions setting is not supported, ignoring value 04-12 18:08:39.631 24717-24766/com.example.android.camera2video W/LegacyRequestMapper﹕ Only received metering rectangles with weight 0. 04-12 18:08:39.631 24717-24766/com.example.android.camera2video W/LegacyRequestMapper﹕ Only received metering rectangles with weight 0. 04-12 18:08:40.067 24717-24782/com.example.android.camera2video I/CameraDeviceState﹕ Legacy camera service transitioning to state CAPTURING 04-12 18:08:50.287 24717-24782/com.example.android.camera2video W/Adreno-EGLSUB﹕ DequeueBuffer:721: dequeue native buffer fail: No such device, buffer=0x0, handle=0x0 04-12 18:08:50.287 24717-24782/com.example.android.camera2video W/Adreno-EGL﹕ : EGL_BAD_SURFACE 04-12 18:08:50.290 24717-24782/com.example.android.camera2video E/CameraDeviceGLThread-0﹕ Received exception on GL render thread: java.lang.IllegalStateException: swapBuffers: EGL error: 0x300d 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) 04-12 18:08:50.290 24717-24782/com.example.android.camera2video I/CameraDeviceState﹕ Legacy camera service transitioning to state ERROR 04-12 18:08:50.320 24717-24782/com.example.android.camera2video W/Adreno-EGLSUB﹕ DequeueBuffer:721: dequeue native buffer fail: No such device, buffer=0x0, handle=0x0 04-12 18:08:50.320 24717-24782/com.example.android.camera2video W/Adreno-ES20﹕ : GL_OUT_OF_MEMORY 04-12 18:08:50.322 24717-24782/com.example.android.camera2video W/GLConsumer﹕ [unnamed-24717-1] bindTextureImage: clearing GL error: 0x505 04-12 18:08:50.323 24717-24782/com.example.android.camera2video W/Adreno-EGLSUB﹕ DequeueBuffer:721: dequeue native buffer fail: No such device, buffer=0x0, handle=0x0 04-12 18:08:50.356 24717-24782/com.example.android.camera2video W/Adreno-EGLSUB﹕ DequeueBuffer:721: dequeue native buffer fail: No such device, buffer=0x0, handle=0x0 04-12 18:08:50.356 24717-24782/com.example.android.camera2video W/Adreno-ES20﹕ : GL_OUT_OF_MEMORY 04-12 18:08:50.357 24717-24782/com.example.android.camera2video W/GLConsumer﹕ [unnamed-24717-1] bindTextureImage: clearing GL error: 0x505 04-12 18:08:50.721 24717-24717/com.example.android.camera2video W/System.err﹕ android.hardware.camera2.CameraAccessException: The camera device has encountered a serious error 04-12 18:08:50.722 24717-24717/com.example.android.camera2video W/System.err﹕ at android.hardware.camera2.impl.CameraDeviceImpl.checkIfCameraClosedOrInError(CameraDeviceImpl.java:1478) 04-12 18:08:50.722 24717-24717/com.example.android.camera2video W/System.err﹕ at android.hardware.camera2.impl.CameraDeviceImpl.createCaptureRequest(CameraDeviceImpl.java:476) 04-12 18:08:50.722 24717-24717/com.example.android.camera2video W/System.err﹕ at com.example.android.camera2video.Camera2VideoFragment.startPreview(Camera2VideoFragment.java:408) 04-12 18:08:50.722 24717-24717/com.example.android.camera2video W/System.err﹕ at com.example.android.camera2video.Camera2VideoFragment.stopRecordingVideo(Camera2VideoFragment.java:543) 04-12 18:08:50.722 24717-24717/com.example.android.camera2video W/System.err﹕ at com.example.android.camera2video.Camera2VideoFragment.onClick(Camera2VideoFragment.java:292) 04-12 18:08:50.722 24717-24717/com.example.android.camera2video W/System.err﹕ at android.view.View.performClick(View.java:4756) 04-12 18:08:50.722 24717-24717/com.example.android.camera2video W/System.err﹕ at android.view.View$PerformClick.run(View.java:19749) 04-12 18:08:50.722 24717-24717/com.example.android.camera2video W/System.err﹕ at android.os.Handler.handleCallback(Handler.java:739) 04-12 18:08:50.722 24717-24717/com.example.android.camera2video W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:95) 04-12 18:08:50.722 24717-24717/com.example.android.camera2video W/System.err﹕ at android.os.Looper.loop(Looper.java:135) 04-12 18:08:50.722 24717-24717/com.example.android.camera2video W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5221) 04-12 18:08:50.722 24717-24717/com.example.android.camera2video W/System.err﹕ at java.lang.reflect.Method.invoke(Native Method) 04-12 18:08:50.722 24717-24717/com.example.android.camera2video W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:372) 04-12 18:08:50.722 24717-24717/com.example.android.camera2video W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 04-12 18:08:50.723 24717-24717/com.example.android.camera2video W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 04-12 18:08:53.309 24717-24766/com.example.android.camera2video E/RequestThread-0﹕ Timed out while waiting for request to complete. 04-12 18:08:53.325 24717-24766/com.example.android.camera2video W/CaptureCollector﹕ Preview buffers dropped for request: 0 04-12 18:08:53.326 24717-24766/com.example.android.camera2video E/CameraDeviceState﹕ Cannot receive result while in state: 0 04-12 18:08:53.326 24717-24766/com.example.android.camera2video E/CameraDeviceState﹕ Cannot receive result while in state: 0 04-12 18:08:53.402 24717-24766/com.example.android.camera2video E/CameraDeviceState﹕ Cannot receive result while in state: 0 04-12 18:08:53.410 24717-24782/com.example.android.camera2video W/Adreno-EGLSUB﹕ DequeueBuffer:721: dequeue native buffer fail: No such device, buffer=0x0, handle=0x0 04-12 18:08:53.410 24717-24782/com.example.android.camera2video W/Adreno-ES20﹕ : GL_OUT_OF_MEMORY 04-12 18:08:53.422 24717-24733/com.example.android.camera2video W/MessageQueue﹕ Handler (android.graphics.SurfaceTexture$1) {2b83a144} sending message to a Handler on a dead thread java.lang.IllegalStateException: Handler (android.graphics.SurfaceTexture$1) {2b83a144} sending message to a Handler on a dead thread at android.os.MessageQueue.enqueueMessage(MessageQueue.java:325) at android.os.Handler.enqueueMessage(Handler.java:631) at android.os.Handler.sendMessageAtTime(Handler.java:600) at android.os.Handler.sendMessageDelayed(Handler.java:570) at android.os.Handler.sendEmptyMessageDelayed(Handler.java:534) at android.os.Handler.sendEmptyMessage(Handler.java:519) at android.graphics.SurfaceTexture.postEventFromNative(SurfaceTexture.java:368) 04-12 18:08:53.445 24717-24766/com.example.android.camera2video E/BufferQueueProducer﹕ [unnamed-24717-1] cancelBuffer: BufferQueue has been abandoned 04-12 18:08:53.449 24717-24766/com.example.android.camera2video E/BufferQueueProducer﹕ [unnamed-24717-1] cancelBuffer: BufferQueue has been abandoned 04-12 18:08:53.453 24717-24766/com.example.android.camera2video E/BufferQueueProducer﹕ [unnamed-24717-1] cancelBuffer: BufferQueue has been abandoned 04-12 18:08:53.457 24717-24766/com.example.android.camera2video E/BufferQueueProducer﹕ [unnamed-24717-1] cancelBuffer: BufferQueue has been abandoned 04-12 18:08:53.460 24717-24766/com.example.android.camera2video E/BufferQueueProducer﹕ [unnamed-24717-1] cancelBuffer: BufferQueue has been abandoned 04-12 18:08:53.573 24717-24717/com.example.android.camera2video I/Choreographer﹕ Skipped 170 frames! The application may be doing too much work on its main thread. 04-12 18:08:59.716 24717-24729/com.example.android.camera2video W/MessageQueue﹕ Handler (android.os.Handler) {6bb8db0} sending message to a Handler on a dead thread java.lang.IllegalStateException: Handler (android.os.Handler) {6bb8db0} sending message to a Handler on a dead thread at android.os.MessageQueue.enqueueMessage(MessageQueue.java:325) at android.os.Handler.enqueueMessage(Handler.java:631) at android.os.Handler.sendMessageAtFrontOfQueue(Handler.java:623) at android.hardware.camera2.legacy.RequestThreadManager.quit(RequestThreadManager.java:941) at android.hardware.camera2.legacy.LegacyCameraDevice.close(LegacyCameraDevice.java:444) at android.hardware.camera2.legacy.LegacyCameraDevice.finalize(LegacyCameraDevice.java:468) at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:190) at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:173) at java.lang.Thread.run(Thread.java:818)

lnikkila commented 9 years ago

I think what’s happening here is that when MediaRecorder is reset, it kills the surface while the background thread is still trying to draw captured images onto it. I’m suspecting this based on the EGL error codes 0x300b and 0x300d (EGL_BAD_NATIVE_WINDOW and EGL_BAD_SURFACE, respectively.)

Closing the camera before resetting the recorder and reopening it afterwards works around the issue.

I’ve experimented with different ways of handling this when stopping recording. The snippet below is pretty clean and it results in less than a second of delay on a 2013 Nexus 7.

tl;dr: No need to close the camera, just create a new session after the recorder is ready again.

try {
    // Abort all pending captures.
    cameraCaptureSession.abortCaptures();
} catch (CameraAccessException e) {
    e.printStackTrace();
}

mediaRecorder.stop();

// Prepare the recorder again, nothing special about it.
prepareMediaRecorder();

try {
    // Create a new session with a new set of surfaces.
    // This causes the old session to be handed off gracefully.
    camera.createCaptureSession(getSurfaces(), sessionCallback, backgroundHandler);
} catch (CameraAccessException e) {
    e.printStackTrace();
}
yaroslavkulinich commented 9 years ago

@lnikkila Thank you! It helped me on Moto G, Lollipop 5.0.2.

dodgaga commented 9 years ago

Since be annoyed by bugs for a period of time,finally,I found it the problem is emulator! Here,I want to say: Must use the actual device !

davidmichaelkarr commented 8 years ago

I see the same problem on a Galaxy Note 3, when I cloned from master. Is a fix for this in a branch of this repo, or in a fork?

@lnikkila It's not 100% clear what code this snippet is intended to replace. It might be in "stopRecordingVideo()", but I"m not certain of that.

vespakoen commented 8 years ago

@lnikkila Thanks! that code works on my Nexus 7 as well, perhaps make a pull request for this?

elezra commented 8 years ago

@lnikkila Thanks!!!

RoundSparrow commented 8 years ago

Testing on some 5.1 devices from LG... I found that another thing to try is to stop the preview explicitly before stopping the media recorder. Reference: http://stackoverflow.com/questions/27907090/android-camera-2-api

private void stopRecordingVideo() {
    // UI
    mIsRecordingVideo = false;
    mButtonVideo.setText(R.string.record);
    // Added by Ben Ning, to resolve exception issue when stop recording.
    try {
        mPreviewSession.stopRepeating();
        mPreviewSession.abortCaptures();
    } catch (CameraAccessException e) {
        e.printStackTrace();
    } 

    // Stop recording
    mMediaRecorder.stop();
    mMediaRecorder.reset();
}
Gene-Rides commented 8 years ago

RoundSparrow's approach worked well on my Galaxy S5 whihc had a similar issue.

donniesky commented 7 years ago

@RoundSparrow that code work well ! no crash at more !

sandeeptengale commented 7 years ago

@RoundSparrow Hello I tired adding

try { mPreviewSession.stopRepeating(); mPreviewSession.abortCaptures(); } catch (CameraAccessException e) { e.printStackTrace(); }

It worked perfectly for Nexus and Moto devices. but on Samsung S6, it is causing void onConfigureFailed(CameraCaptureSession cameraCaptureSession) called. Is there any workaround for this??

sandeeptengale commented 7 years ago

Failed to recreate the session W/System.err: android.hardware.camera2.CameraAccessException: Operation timed out in camera service W/System.err: at android.hardware.camera2.utils.CameraBinderDecorator.throwOnError(CameraBinderDecorator.java:118) W/System.err: at android.hardware.camera2.utils.CameraBinderDecorator$CameraBinderDecoratorListener.onAfterInvocation(CameraBinderDecorator.java:73) W/System.err: at android.hardware.camera2.utils.Decorator.invoke(Decorator.java:81) W/System.err: at java.lang.reflect.Proxy.invoke(Proxy.java:393) W/System.err: at $Proxy1.waitUntilIdle(Unknown Source) W/System.err: at android.hardware.camera2.impl.CameraDeviceImpl.waitUntilIdle(CameraDeviceImpl.java:950) W/System.err: at android.hardware.camera2.impl.CameraDeviceImpl.configureStreamsChecked(CameraDeviceImpl.java:399) W/System.err: at android.hardware.camera2.impl.CameraDeviceImpl.createCaptureSessionInternal(CameraDeviceImpl.java:561) W/System.err: at android.hardware.camera2.impl.CameraDeviceImpl.createCaptureSession(CameraDeviceImpl.java:476)

RoundSparrow commented 7 years ago

Make sure you reboot the device (prefer a cold power off and on) when testing this code - as it's possible on some of the Android 5.0/5.1 hardware I've tried to get the driver in a state that it fails even when the code itself is good because it doesn't properly recover from previous attempts.

sandeeptengale commented 7 years ago

Thank you, I think pull request #6 fixed my problem. It basically reopens the camera, looks like good workaround until I find proper solution for this

loripise commented 7 years ago

Application is getting crash while recording a video in Intex Aqua Shine 5.0 and above. my applictaion is using api for version till 4.4.4. And now i want include video functionality for 5.0 and above. How can i make it? please provide me solution.

grabya commented 7 years ago

Fixed the problem for my Samsung S5. @RoundSparrow ... I updated your function to the latest sample code

    private void stopRecordingVideo() {
        // UI
        mIsRecordingVideo = false;
        mButtonVideo.setText(R.string.record);
        // Added by Ben Ning, to resolve exception issue when stop recording.
        try {
            mPreviewSession.stopRepeating();
            mPreviewSession.abortCaptures();
        } catch (CameraAccessException e) {
            e.printStackTrace();
        }

        // Stop recording
        mMediaRecorder.stop();
        mMediaRecorder.reset();

        Activity activity = getActivity();
        if (null != activity) {
            Toast.makeText(activity, "Video saved: " + mNextVideoAbsolutePath,
                    Toast.LENGTH_SHORT).show();
            Log.d(TAG, "Video saved: " + mNextVideoAbsolutePath);
        }
        mNextVideoAbsolutePath = null;
        startPreview();
    }
niketaB commented 6 years ago

I am getting crash with "IMediaDeathNotifier: media server died" while starting recording. I am getting this crash on LG Q7 device with OS 7.1.1. Let me know if anybody has solution.

LouisCAD commented 6 years ago

You just have to stopRepeating before stopping the MediaRecorder

kscott5 commented 6 years ago

I get what occurs. Sure frameworks, API and life provide bugs/challenges that need triage and most are discovered are not deliberate. I understand android.hardware.camera2 pipeline with nested callback and handlers but I thought the implementation would be a cleaner. I know it can change and have adapted my code to reflect the different functional changes between API levels but I could use help or could someone provide the source code for the Android OS built-in camera app. I think it would serve as a better camera or api guide. ''' Start Preview try {

        if(!view.surfacesAvailable()) return;

        this.setDefaultBufferSize(view);

        CameraData primaryData = getCameraData(true);
        primaryData.surfaces[0] = view.getPrimarySurface();
        primaryData.surfaces[1] = view.getSecondarySurface();

        primaryData.device.createCaptureSession(Collections.singletonList(primaryData.surfaces[0]),
                captureSessionCallback, null);

        CameraData secondaryData = getCameraData(false);
        secondaryData.surfaces[0] = view.getSecondarySurface();
        secondaryData.surfaces[1] =  view.getPrimarySurface();
        secondaryData.device.createCaptureSession(Collections.singletonList(secondaryData.surfaces[0]),
                captureSessionCallback, null);

    } catch(CameraAccessException e ) {
        e.printStackTrace();
    }
3 use cases #UC to a new createCaptureSession. 

Want to change camera surface used.

// Documentation states setting the output parameter to an empty list // or null will close the current session. This causes the app to crash // and hang. primaryData.device.createCaptureSession(null, captureSessionCallback, null); secondaryData.device.createCaptureSession(null, captureSessionCallback, null);

// Documentation states this is the quickest method to stop the current // pending and in-progress captures before a new session is created. // Its not the most efficient due to camera pipelinie response from a new // camera session request. primaryData.session.abortCaptures(); secondaryData.session.abortCaptures();

// Documentation states additional calls to the createCaptureSession will // close any previous sessions. This causes the app to crash and hang. primaryData.device.createCaptureSession(Collections.singletonList(primaryData.surfaces[1]), captureSessionCallback, null); secondaryData.device.createCaptureSession(Collections.singletonList(secondaryData.surfaces[0]), captureSessionCallback, null);



NOTE: There are no immediate plans to share my codebase on github public or privately at the moment but once its I think is prod ready. I will think about publishing.
kscott5 commented 6 years ago

Android Source

codingjeremy commented 5 years ago

This sample has been migrated to a new location where we can accept Pull Requests (check README for more information).

As recommended by GitHub, we are closing all issues and pull requests now that this older repo will be archived.

If you still see this issue in the updated repo, please reopen the issue/PR there. Thank you!