2013-11-04 3 views
2

카메라의 onPreviewFrame 콜백을 사용하여 mp4 또는 모든 종류의 비디오 파일을 인코딩하는 방법을 배우려고합니다.MediaCodec.configure에서 잘못된 예외가 발생했습니다.

현재, 나는

Encoding H.264 from camera with Android MediaCodec

불행하게도, 난, 널, 널 (null)의

mediaCodec.configure (mediaFormat상의 IllegalException을 받고 MediaCodec을 유지 오전이 게시물에서 예제 코드를하려합니다. CONFIGURE_FLAG_ENCODE);

다른 게시물에서 IllegalStateException when MediaCodec.configure Android, 내가 MediaCodec에 대해 설정해야하는 몇 가지 필수 값입니다.

나는 모든 필수 mediacodec의 필수 값 여전히 IllegalException 지난

을 얻는 행운을 시도했다.

지금 나는 시도 할 아이디어가 부족합니다. 어떤 제안, 의견 또는 힌트도 크게 감사하겠습니다. 당신은 퀄컴 장치 색상 형식 (19) (COLOR_FormatYUV420Planar, A/K/A I420)를 사용하려는처럼

감사

11-04 12:27:14.785  175-894/? E/mm-libcamera2﹕ PROFILE HAL: stopPreview(): E: 1383596834.803557773 
11-04 12:27:14.795  175-175/? E/OMXNodeInstance﹕ !!! Observer died. Quickly, do something, ... anything... 
11-04 12:27:14.795  208-5797/? E/mm-camera﹕ config_shutdown_pp Camera not in streaming mode. Returning. 
11-04 12:27:14.795  208-5797/? E/mm-camera﹕ vfe_ops_deinit: E 
11-04 12:27:14.825  175-5814/? E/OMX-VENC-720p﹕ ioctl VEN_IOCTL_CMD_READ_NEXT_MSG failed 
11-04 12:27:14.825  175-175/? E/OMX-VENC-720p﹕ Destroy C2D instance 
11-04 12:27:14.835  527-539/? E/qcom_sensors_hal﹕ hal_process_report_ind: Bad item quality: 11 
11-04 12:28:17.642 6241-6247/? E/jdwp﹕ Failed sending reply to debugger: Broken pipe 
11-04 12:28:17.912  527-539/? E/qcom_sensors_hal﹕ hal_process_report_ind: Bad item quality: 11 
11-04 12:28:17.922  208-6264/? E/mm-camera﹕ sensor_load_chromatix: libchromatix_imx111_preview.so: 30 
11-04 12:28:18.032  208-6264/? E/mm-camera﹕ vfe_ops_init: E 
11-04 12:28:18.042  208-6264/? E/mm-camera﹕ vfe_legacy_stats_buffer_init: AEC_STATS_BUFNUM 
11-04 12:28:18.052  208-6264/? E/mm-camera﹕ vfe_legacy_stats_buffer_init: AEC_STATS_BUFNUM 
11-04 12:28:18.052  208-6264/? E/mm-camera﹕ mctl_init_stats_proc_info: snap_max_line_cnt =30096 
11-04 12:28:18.213 6241-6241/? E/CamcorderProfile﹕ width: 720 
11-04 12:28:18.213 6241-6241/? E/CamcorderProfile﹕ height: 480 
11-04 12:28:18.213 6241-6241/? E/CamcorderProfile﹕ audioSampleRate: 48000 
11-04 12:28:18.213 6241-6241/? E/CamcorderProfile﹕ videoBitRate: 5000000 
11-04 12:28:18.213 6241-6241/? E/CamcorderProfile﹕ videoFrameRate: 30 
11-04 12:28:18.233  175-617/? E/OMX-VENC-720p﹕ Is component secure 0 
11-04 12:28:18.263 6241-6280/? E/ACodec﹕ [OMX.qcom.video.encoder.avc] does not support color format 19 
11-04 12:28:18.263 6241-6280/? E/ACodec﹕ [OMX.qcom.video.encoder.avc] configureCodec returning error -2147483648 
11-04 12:28:18.263 6241-6279/? E/MediaCodec﹕ Codec reported an error. (omx error 0x80001001, internalError -2147483648) 
11-04 12:28:18.263 6241-6241/? E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    java.lang.IllegalStateException 
      at android.media.MediaCodec.native_configure(Native Method) 
      at android.media.MediaCodec.configure(MediaCodec.java:259) 
      at com.example.mediacodec.AvcEncoder.<init>(AvcEncoder.java:40) 
      at com.example.mediacodec.Preview.surfaceCreated(MediaCodecActivity.java:304) 
      at android.view.SurfaceView.updateWindow(SurfaceView.java:571) 
      at android.view.SurfaceView.access$000(SurfaceView.java:86) 
      at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:175) 
      at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:833) 
      at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1860) 
      at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004) 
      at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481) 
      at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749) 
      at android.view.Choreographer.doCallbacks(Choreographer.java:562) 
      at android.view.Choreographer.doFrame(Choreographer.java:532) 
      at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735) 
      at android.os.Handler.handleCallback(Handler.java:730) 
      at android.os.Handler.dispatchMessage(Handler.java:92) 
      at android.os.Looper.loop(Looper.java:137) 
      at android.app.ActivityThread.main(ActivityThread.java:5103) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:525) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
      at dalvik.system.NativeStart.main(Native Method) 
11-04 12:28:20.135  175-617/? E/mm-libcamera2﹕ PROFILE HAL: stopPreview(): E: 1383596900.149872429 
11-04 12:28:20.135  175-575/? E/OMXNodeInstance﹕ !!! Observer died. Quickly, do something, ... anything... 
11-04 12:28:20.135  208-6264/? E/mm-camera﹕ config_shutdown_pp Camera not in streaming mode. Returning. 
11-04 12:28:20.145  208-6264/? E/mm-camera﹕ vfe_ops_deinit: E 
11-04 12:28:20.165  175-6283/? E/OMX-VENC-720p﹕ ioctl VEN_IOCTL_CMD_READ_NEXT_MSG failed 
11-04 12:28:20.165  175-575/? E/OMX-VENC-720p﹕ Destroy C2D instance 
11-04 12:28:20.195  527-539/? E/qcom_sensors_hal﹕ hal_process_report_ind: Bad item quality: 11 

답변

5
E/ACodec﹕ [OMX.qcom.video.encoder.avc] does not support color format 19 

보인다. 내 장치 중 하나에 대한 빠른 테스트는 해당 코덱이 컬러 형식 21 (COLOR_FormatYUV420SemiPlanar, a/k/a NV12)을 원함을 나타냅니다.

EncodeDecodeTest sources의 버퍼 간 테스트는 MediaCodecInfo에 적절한 색 형식을 쿼리하는 방법을 보여줍니다. 카메라에서 입력을 받기 때문에 미리보기 형식을 반 평면형 레이아웃 (NV21)으로 설정 한 다음 U/V swap을 MediaCodec에 전달하기를 원할 것입니다.

Android 4.3 이상인 경우 체조 형식을 모두 건너 뛰고 Surface 미리보기 출력을 사용할 수 있습니다. 예를 들어 CameraToMpegTest sources을 참조하십시오.

관련 문제