Kickflip / kickflip-android-sdk

Kickflip Android SDK - Live Video Streaming to the Cloud
https://kickflip.io
Apache License 2.0
660 stars 212 forks source link

Sample App crashes on Nexus5 devices (both Lollipop 5.0 and 5.1) when hit Record button #24

Closed jnahansen closed 9 years ago

jnahansen commented 9 years ago

05-04 16:30:36.696: I/FFmpegMuxer(19003): PrepareAVFormatContext for path /storage/emulated/0/MySampleApp/93482c6f-ee6d-4444-8842-e807f28043f4/index.m3u8 05-04 16:30:36.701: D/audio_hw_primary(182): out_set_parameters: enter: usecase(1: low-latency-playback) kvpairs: routing=2 05-04 16:30:36.702: D/audio_hw_primary(182): select_devices: out_snd_device(0: none) in_snd_device(46: camcorder-mic) 05-04 16:30:36.702: D/msm8974_platform(182): platform_send_audio_calibration: sending audio calibration for snd_device(46) acdb_id(61) 05-04 16:30:36.702: D/(182): Failed to fetch the lookup information of the device 0000003D 05-04 16:30:36.702: E/ACDB-LOADER(182): Error: ACDB AudProc vol returned = -19 05-04 16:30:36.702: D/audio_hw_primary(182): enable_snd_device: snd_device(46: camcorder-mic) 05-04 16:30:36.707: D/audio_hw_primary(182): enable_audio_route: apply and update mixer path: audio-record 05-04 16:30:36.729: I/OMX-VENC(182): open Color conv for RGBA888 W: 1280, H: 720 05-04 16:30:36.755: E/OMX-VENC(182): VIDIOC_REQBUFS CAPTURE_MPLANE Failed 05-04 16:30:36.782: E/AndroidRuntime(19003): FATAL EXCEPTION: CameraEncoder 05-04 16:30:36.782: E/AndroidRuntime(19003): Process: io.kickflip.sample, PID: 19003 05-04 16:30:36.782: E/AndroidRuntime(19003): java.nio.ReadOnlyBufferException 05-04 16:30:36.782: E/AndroidRuntime(19003): at java.nio.DirectByteBuffer.put(DirectByteBuffer.java:354) 05-04 16:30:36.782: E/AndroidRuntime(19003): at io.kickflip.sdk.av.FFmpegMuxer.captureH264MetaData(FFmpegMuxer.java:292) 05-04 16:30:36.782: E/AndroidRuntime(19003): at io.kickflip.sdk.av.FFmpegMuxer.handleWriteSampleData(FFmpegMuxer.java:206) 05-04 16:30:36.782: E/AndroidRuntime(19003): at io.kickflip.sdk.av.FFmpegMuxer.writeSampleData(FFmpegMuxer.java:183) 05-04 16:30:36.782: E/AndroidRuntime(19003): at io.kickflip.sdk.av.AndroidEncoder.drainEncoder(AndroidEncoder.java:100) 05-04 16:30:36.782: E/AndroidRuntime(19003): at io.kickflip.sdk.av.CameraEncoder.handleFrameAvailable(CameraEncoder.java:433) 05-04 16:30:36.782: E/AndroidRuntime(19003): at io.kickflip.sdk.av.CameraEncoder.access$200(CameraEncoder.java:27) 05-04 16:30:36.782: E/AndroidRuntime(19003): at io.kickflip.sdk.av.CameraEncoder$EncoderHandler.handleMessage(CameraEncoder.java:835) 05-04 16:30:36.782: E/AndroidRuntime(19003): at android.os.Handler.dispatchMessage(Handler.java:102) 05-04 16:30:36.782: E/AndroidRuntime(19003): at android.os.Looper.loop(Looper.java:135) 05-04 16:30:36.782: E/AndroidRuntime(19003): at io.kickflip.sdk.av.CameraEncoder.run(CameraEncoder.java:610) 05-04 16:30:36.782: E/AndroidRuntime(19003): at java.lang.Thread.run(Thread.java:818) 05-04 16:30:36.784: W/ActivityManager(817): Force finishing activity io.kickflip.sample/io.kickflip.sdk.activity.BroadcastActivity 05-04 16:30:36.816: D/audio_hw_primary(182): select_devices: out_snd_device(2: speaker) in_snd_device(0: none) 05-04 16:30:36.816: D/msm8974_platform(182): platform_send_audio_calibration: sending audio calibration for snd_device(2) acdb_id(15) 05-04 16:30:36.816: D/audio_hw_primary(182): enable_snd_device: snd_device(2: speaker) 05-04 16:30:36.817: D/audio_hw_primary(182): enable_audio_route: apply and update mixer path: low-latency-playback 05-04 16:30:36.825: I/Process(19003): Sending signal. PID: 19003 SIG: 9 05-04 16:30:36.827: V/ActivityManager(817): Display changed displayId=0 05-04 16:30:36.838: I/ActivityManager(817): Config changes=480 {1.0 310mcc?mnc en_US ldltr sw360dp w360dp h567dp 480dpi nrml port finger -keyb/v/h -nav/h s.21} 05-04 16:30:36.849: I/InputReader(817): Reconfiguring input devices. changes=0x00000004 05-04 16:30:36.849: I/InputReader(817): Device reconfigured: id=4, name='touch_dev', size 1080x1920, orientation 0, mode 1, display id 0 05-04 16:30:36.852: I/OpenGLRenderer(817): Initialized EGL, version 1.4 05-04 16:30:36.875: W/InputDispatcher(817): channel '2c245e5a io.kickflip.sample/io.kickflip.sample.activity.MainActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x9 05-04 16:30:36.875: E/InputDispatcher(817): channel '2c245e5a io.kickflip.sample/io.kickflip.sample.activity.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed! 05-04 16:30:36.903: E/JavaBinder(817): !!! FAILED BINDER TRANSACTION !!! 05-04 16:30:36.903: E/JavaBinder(817): !!! FAILED BINDER TRANSACTION !!! 05-04 16:30:36.909: E/JavaBinder(817): !!! FAILED BINDER TRANSACTION !!! 05-04 16:30:36.909: I/ActivityManager(817): Restarting because process died: ActivityRecord{15468e9e u0 io.kickflip.sample/.activity.MainActivity t919} 05-04 16:30:36.913: E/JavaBinder(817): !!! FAILED BINDER TRANSACTION !!! 05-04 16:30:36.914: E/JavaBinder(817): !!! FAILED BINDER TRANSACTION !!! 05-04 16:30:36.915: W/ActivityManager(817): Exception when starting activity io.kickflip.sample/.activity.MainActivity 05-04 16:30:36.915: W/ActivityManager(817): android.os.TransactionTooLargeException 05-04 16:30:36.915: W/ActivityManager(817): at android.os.BinderProxy.transactNative(Native Method) 05-04 16:30:36.915: W/ActivityManager(817): at android.os.BinderProxy.transact(Binder.java:496) 05-04 16:30:36.915: W/ActivityManager(817): at android.app.ApplicationThreadProxy.scheduleLaunchActivity(ApplicationThreadNative.java:793) 05-04 16:30:36.915: W/ActivityManager(817): at com.android.server.am.ActivityStackSupervisor.realStartActivityLocked(ActivityStackSupervisor.java:1157) 05-04 16:30:36.915: W/ActivityManager(817): at com.android.server.am.ActivityStackSupervisor.startSpecificActivityLocked(ActivityStackSupervisor.java:1257) 05-04 16:30:36.915: W/ActivityManager(817): at com.android.server.am.ActivityStack.resumeTopActivityInnerLocked(ActivityStack.java:1882) 05-04 16:30:36.915: W/ActivityManager(817): at com.android.server.am.ActivityStack.resumeTopActivityLocked(ActivityStack.java:1480) 05-04 16:30:36.915: W/ActivityManager(817): at com.android.server.am.ActivityStackSupervisor.resumeTopActivitiesLocked(ActivityStackSupervisor.java:2429) 05-04 16:30:36.915: W/ActivityManager(817): at com.android.server.am.ActivityStack.completePauseLocked(ActivityStack.java:1025) 05-04 16:30:36.915: W/ActivityManager(817): at com.android.server.am.ActivityStack.activityPausedLocked(ActivityStack.java:923) 05-04 16:30:36.915: W/ActivityManager(817): at com.android.server.am.ActivityManagerService.activityPaused(ActivityManagerService.java:6441) 05-04 16:30:36.915: W/ActivityManager(817): at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:513) 05-04 16:30:36.915: W/ActivityManager(817): at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2407) 05-04 16:30:36.915: W/ActivityManager(817): at android.os.Binder.execTransact(Binder.java:446) 05-04 16:30:36.918: W/InputDispatcher(817): channel '187a8098 io.kickflip.sample/io.kickflip.sdk.activity.BroadcastActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x9 05-04 16:30:36.918: E/InputDispatcher(817): channel '187a8098 io.kickflip.sample/io.kickflip.sdk.activity.BroadcastActivity (server)' ~ Channel is unrecoverably broken and will be disposed! 05-04 16:30:36.920: W/CameraService(182): Disconnecting camera client 0xb608cb90 since the binder for it died (this pid 182) 05-04 16:30:36.920: E/OMXNodeInstance(182): !!! Observer died. Quickly, do something, ... anything... 05-04 16:30:36.921: E/Surface(182): queueBuffer: error queuing buffer to SurfaceTexture, -32 05-04 16:30:36.922: E/Camera3-OutputStream(182): returnBufferCheckedLocked: Stream 0: Error queueing buffer to native window: Broken pipe (-32) 05-04 16:30:36.922: E/Camera3-Device(182): Can't return buffer 0 for frame 75 to its stream: Broken pipe (-32) 05-04 16:30:36.922: E/Surface(182): queueBuffer: error queuing buffer to SurfaceTexture, -32 05-04 16:30:36.922: E/Camera3-OutputStream(182): returnBufferCheckedLocked: Stream 0: Error queueing buffer to native window: Broken pipe (-32) 05-04 16:30:36.922: E/Camera3-Device(182): Can't return buffer 0 for frame 76 to its stream: Broken pipe (-32) 05-04 16:30:36.922: E/Surface(182): queueBuffer: error queuing buffer to SurfaceTexture, -32 05-04 16:30:36.923: E/Camera3-OutputStream(182): returnBufferCheckedLocked: Stream 0: Error queueing buffer to native window: Broken pipe (-32) 05-04 16:30:36.923: E/Camera3-Device(182): Can't return buffer 0 for frame 77 to its stream: Broken pipe (-32) 05-04 16:30:36.934: I/WindowState(817): WIN DEATH: Window{187a8098 u0 io.kickflip.sample/io.kickflip.sdk.activity.BroadcastActivity}

jnahansen commented 9 years ago

FYI: Sample App worked fine on Galaxy S5 running 4.4.4

jnahansen commented 9 years ago

FYI: Changing Gradle build params (below) and rebuilding didn't help or make any difference: android { compileSdkVersion 22 <--- ... defaultConfig { minSdkVersion 18 targetSdkVersion 22 <--- versionCode 2 versionName "1.1" }

dependencies { compile 'com.android.support:support-v4:22.1.0' <----

OnlyInAmerica commented 9 years ago

@jnahansen this issue is due to a MediaCodec change that occurred in Android 5.0. The dev branch of kickflip-android-example references the head of kickflip-android-sdk with this issue resolved.

Note that I messed up the ffmpeg build so the produced jniLibs will only work on 5.0+ devices. I will address that as soon as I can find some spare cycles.

Thanks for your patience!

jnahansen commented 9 years ago

Thanks David! I will pull the dev branch of the example and try that out...jh

OnlyInAmerica commented 9 years ago

Closing this but feel free to re-open if this again rears it's head.