2011-02-28 4 views
1

HTC MyTouch 3G 슬라이드 (Android 2.1, API 레벨 7)가 있습니다. 15fps에서 320x240 h.264 비디오를 녹화하는 프로그램을 작성하려고하는데 2 가지 주요 문제점이 있습니다. 어느 쪽의 문제에 대한 해결책에 대해 고맙게 생각합니다. 여기에 내가 뭐하는 거지 : 1) H263 및 MPEG_4_SP가 잘 작동Android : H.264 인코딩 및 Framerate 작동하지 않음 설정

mediaRecorder = new MediaRecorder(); 
mediaRecorder.setCamera(camera); 
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT); 
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); 
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
mediaRecorder.setMaxDuration(600000); 
mediaRecorder.setOutputFile("/sdcard/test.mp4"); 
mediaRecorder.setVideoFrameRate(15); 
mediaRecorder.setVideoSize(320, 240); 
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); 
mediaRecorder.setPreviewDisplay(holder.getSurface()); 
mediaRecorder.setMaxFileSize(maxFileSizeInBytes); 
mediaRecorder.prepare(); 
mediaRecorder.start(); 

문제지만, H264하지 않습니다. 호출) (제조에서 로그 캣 아래 오류 충전 :

E/PackageInstallationReceiver( 209): Remove /data/local/tmp/com.helios.apk Fail! 
E/mm-camera 7x-vfe(2496): Received VFE start ACK!!! This is a user preview start. 
E/audio_input(2496): unsupported parameter: x-pvmf/media-input-node/cap-config-interface;valtype=key_specific_value 
E/audio_input(2496): VerifyAndSetParameter failed 
E/CameraInput(2496): Unsupported parameter(x-pvmf/media-input-node/cap-config-interface;valtype=key_specific_value) 
E/CameraInput(2496): VerifiyAndSetParameter failed on parameter #0 
E/PVOMXEncNode(2496): PVMFOMXEncNode-Audio_AMRNB::DoPrepare(): Got Component OMX.PV.amrencnb handle 
E/PVOMXEncNode(2496): PVMFOMXEncNode-Video_AVC::DoPrepare(): Cannot get component OMX.PV.avcenc handle, try another component if available 
E/AuthorDriver(2496): Command 13 completed with error -17 
E/MediaRecorder(3221): prepare failed: -17 
E/Helios (3221): prepare failed. 
E/AndroidRuntime(3221): Uncaught handler: thread main exiting due to uncaught exception 
E/AndroidRuntime(3221): java.lang.RuntimeException: unlock failed 
E/AndroidRuntime(3221): at android.hardware.Camera.unlock(Native Method) 
E/AndroidRuntime(3221): at com.helios.ActivityLauncher.startRecording(ActivityLauncher.java:268) 
E/AndroidRuntime(3221): at com.helios.ActivityLauncher.onLongClick(ActivityLauncher.java:223) 
E/AndroidRuntime(3221): at com.helios.ActivityLauncher.onClick(ActivityLauncher.java:203) 
E/AndroidRuntime(3221): at android.view.View.performClick(View.java:2361) 
E/AndroidRuntime(3221): at android.view.View.onTouchEvent(View.java:4176) 
E/AndroidRuntime(3221): at android.view.View.dispatchTouchEvent(View.java:3706) 
E/AndroidRuntime(3221): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:924) 
E/AndroidRuntime(3221): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:924) 
E/AndroidRuntime(3221): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:924) 
E/AndroidRuntime(3221): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:924) 
E/AndroidRuntime(3221): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1696) 
E/AndroidRuntime(3221): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1117) 
E/AndroidRuntime(3221): at android.app.Activity.dispatchTouchEvent(Activity.java:2068) 
E/AndroidRuntime(3221): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1680) 
E/AndroidRuntime(3221): at android.view.ViewRoot.handleMessage(ViewRoot.java:1707) 
E/AndroidRuntime(3221): at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime(3221): at android.os.Looper.loop(Looper.java:123) 
E/AndroidRuntime(3221): at android.app.ActivityThread.main(ActivityThread.java:4702) 
E/AndroidRuntime(3221): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(3221): at java.lang.reflect.Method.invoke(Method.java:521) 
E/AndroidRuntime(3221): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
E/AndroidRuntime(3221): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
E/AndroidRuntime(3221): at dalvik.system.NativeStart.main(Native Method) 
E/dalvikvm(3221): Unable to open stack trace file '/data/anr/traces.txt': Permission denied 
E/JavaBinder( 78): !!! FAILED BINDER TRANSACTION !!! 
E/ActivityManager( 78): fail to set top app changed! 
E/audio_input(2496): unsupported parameter: x-pvmf/media-input-node/cap-config-interface;valtype=key_specific_value 
E/audio_input(2496): VerifyAndSetParameter failed 
E/CameraInput(2496): Unsupported parameter(x-pvmf/media-input-node/cap-config-interface;valtype=key_specific_value) 
E/CameraInput(2496): VerifiyAndSetParameter failed on parameter #0 
E/CameraService(2496): getClientFromCookie: client appears to have died 
E/mm-camera(2496): +++ DELETING LEAKED MEMORY AT 0x33f48 (2 REMAINING) 
E/mm-camera(2496):  6 0xa942ba5c 
E/mm-camera(2496):  5 0xa940bfc2 
E/mm-camera(2496):  4 0xa940d774 
E/mm-camera(2496):  3 0xa940d28a 
E/mm-camera(2496):  2 0xafe100c4 
E/mm-camera(2496):  1 0xafe0fb98 
E/mm-camera(2496): +++ DELETING LEAKED MEMORY AT 0x20dc8 (1 REMAINING) 
E/mm-camera(2496):  6 0xa942ba5c 
E/mm-camera(2496):  5 0xa940bfc2 
E/mm-camera(2496):  4 0xa940d774 
E/mm-camera(2496):  3 0xa940d28a 
E/mm-camera(2496):  2 0xafe100c4 
E/mm-camera(2496):  1 0xafe0fb98 

H.263을 (어떤 작품), 에러 로그만을 포함하여 :

E/CameraInput( 58): Unsupported parameter(x-pvmf/media-input-node/cap-config-interface;valtype=key_specific_value) 
E/CameraInput( 58): VerifiyAndSetParameter failed on parameter #0 
E/PVOMXEncNode( 58): PVMFOMXEncNode-Audio_AMRNB::DoPrepare(): Got Component OMX.PV.amrencnb handle 
E/OMXVenc ( 58): component_init::359 Initializing component OMX.qcom.video.encoder.h263 
E/PVOMXEncNode( 58): PVMFOMXEncNode-Video_H263::DoPrepare(): Got Component OMX.qcom.video.encoder.h263 handle 
E/OMXVenc ( 58): set_parameter::1104 set_parameter : output buffer size = 76800 
E/OMXVenc ( 58): set_parameter::1104 set_parameter : output buffer size = 76800 
E/OMXVenc ( 58): get_parameter::1007 unsupported index 100663301 
E/OMXVenc ( 58): set_parameter::1240 unsupported index 100663301 
E/OMXVenc ( 58): get_parameter::1007 unsupported index 100663302 
E/OMXVenc ( 58): set_parameter::1240 unsupported index 100663302 
E/OMXVenc ( 58): send_command::758 attempt to move to new state 2 
E/OMXVenc ( 58): Setting OMX_Video_ControlRateVariable 
E/OMXVenc ( 58): use_buffer::1437 client allocated input buffer for component 115200, address= 0x98228 
E/OMXVenc ( 58): use_buffer::1437 client allocated input buffer for component 115200, address= 0x98218 
E/OMXVenc ( 58): use_buffer::1437 client allocated input buffer for component 115200, address= 0x98208 
E/OMXVenc ( 58): use_buffer::1437 client allocated input buffer for component 115200, address= 0x981f8 
E/OMXVenc ( 58): allocate_buffer::1577 Attempt to allocate buffer of 76800 bytes for OUTPUT PORT 
E/OMXVenc ( 58): allocate_buffer::1577 Attempt to allocate buffer of 76800 bytes for OUTPUT PORT 
E/OMXVenc ( 58): allocate_buffer::1577 Attempt to allocate buffer of 76800 bytes for OUTPUT PORT 
E/OMXVenc ( 58): allocate_buffer::1577 Attempt to allocate buffer of 76800 bytes for OUTPUT PORT 
E/OMXVenc ( 58): send_command::758 attempt to move to new state 2 
E/OMXVenc ( 58): process_state_change::2580 Req to Move to Idle: Call venc_stop 
E/VENC ( 58): venc_stop::1150 Received command VENC_CMD_STOP 
E/VENC_DRV( 58): Reset_HW::344 adsp_rtos_disable 
E/OMXVenc ( 58): process_DL_status::2737 got DL status for VENC_CMD_STOP 
E/OMXVenc ( 58): process_DL_status::2809 encoder already moves to idle state. call event handler now 
E/OMXVenc ( 58): send_command::758 attempt to move to new state 1 
E/audio_input( 58): unsupported parameter: x-pvmf/media-input-node/cap-config-interface;valtype=key_specific_value 
E/audio_input( 58): VerifyAndSetParameter failed 
E/CameraInput( 58): Unsupported parameter(x-pvmf/media-input-node/cap-config-interface;valtype=key_specific_value) 
E/CameraInput( 58): VerifiyAndSetParameter failed on parameter #0 
E/QCOmxcore( 58): OMXCORE API : Free Handle 93b2c 
E/VENC ( 58): venci_process_command_unload::2408 Encoder time taken to Exit from Stop command: 76 
E/OMXVenc ( 58): component_deinit::2033 deinitializing component... 
E/OMXVenc ( 58): component_deinit::2108 Encoder has exited 
E/QCOmxcore( 58): Unloading the dynamic library for OMX.qcom.video.encoder.h263 
E/mm-camera( 58): +++ DELETING LEAKED MEMORY AT 0x3fe78 (2 REMAINING) 
E/mm-camera( 58):  6 0xa942ba5c 
E/mm-camera( 58):  5 0xa940bfc2 
E/mm-camera( 58):  4 0xa940d774 
E/mm-camera( 58):  3 0xa940d28a 
E/mm-camera( 58):  2 0xafe100c4 
E/mm-camera( 58):  1 0xafe0fb98 
E/mm-camera( 58): +++ DELETING LEAKED MEMORY AT 0x2dd00 (1 REMAINING) 
E/mm-camera( 58):  6 0xa942ba5c 
E/mm-camera( 58):  5 0xa940bfc2 
E/mm-camera( 58):  4 0xa940d774 
E/mm-camera( 58):  3 0xa940d28a 
E/mm-camera( 58):  2 0xafe100c4 
E/mm-camera( 58):  1 0xafe0fb98 

문제 2) 명시 적으로 프레임 속도를 15fps로 설정했지만 클립의 사후 분석은 21.xx 또는 25.xx fps와 같은 이상한 프레임 속도를 보여줍니다.

왜 H264가 작동하지 않고 MediaRecorder가 요청한 프레임 속도를 따르지 않을 수 있습니까? 미리 감사드립니다.

+0

일반적으로 내장 카메라 앱을 사용하여 h263 및 h264에 저장할 수 있습니까? – fazo

+0

붙박이 사진기 app는 선택권으로 저에게 h263와 mpeg4sp를 준다. janin (아래)이 옳다는 아이디어를 얻었고 내 장치가 h264를 지원하지 않습니다. –

답변

1

H.264는 Android 3.0+에서만 지원됩니다.

CamcorderProfile에서 장치가 지원하는 인코딩 프로파일을 확인하십시오.

+0

H264 용 Eclipse의 MediaRecorder에 포함 된 설명서에는 Android 3.0 이상이 아닌 API 3 이상이 포함되어 있음이 명시되어 있습니다. – Guardanis

2

문제 1)
구성 요소는 H.264 인코딩을 지원하지
휴대 전화를 처리 OMX.PV.avcenc 가져올 수 없습니다.

관련 문제