2011-11-28 2 views
1

대부분의 전화기 및 API 수준에서 문제없이 Android에 비디오를 녹화하는 응용 프로그램이 있습니다. 기록에 대한 코드는 다음과 같다 : 알 수없는 이유로녹화 비디오 문제

recorder.setCamera(cam); 
recorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER); 
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); 
if(Integer.valueOf(android.os.Build.VERSION.SDK) > 7){ 
    CamcorderProfile mProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_LOW); 
    recorder.setProfile(mProfile); 
}else{ 
    recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); 
    recorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT); 
} 
recorder.setOutputFile(path); 
recorder.setPreviewDisplay(holder.getSurface()); 
recorder.prepare(); 
recorder.start(); 

이 코드가 실행하는 모토로라 모델 MB632에서 실행 안드로이드 2.3.5 I 얻을 로그 캣에서 다음과 같은 오류 :

OMXCodec  : Buffer count/size less than minimum required 
OMXCodec  : Allocate Buffer failed - error = -2147483648 
Media Recorder: start failed: -12 
Camera  : Error 100 
Application : frameworks/base/media/libstagefright/MPEG4Writer.cpp:2966 mCodecSpecificData 

그리고 예외를 반환합니다. 나는 모든 종류의 조합을 시도하고 버퍼 크기는 API 함수에서 변경할 수있는 것 같지 않습니다.

+0

이 도움이 될 수 있습니다 : http://stackoverflow.com/questions/6532554/trouble-trying-to-get-mediarecorder-to-work-correctly, 주석 – Caner

+0

를 참조 이미하지만 도움이되지 않았다 읽기 많은. 일부 카메라는 일반 프로그래밍을 따르지 않는 것으로 보입니다. 나는 API 레벨에 의해 그것을 깨뜨 렸지만 당신은 볼 수 있지만 운은 없다. –

답변

1

나는 이것이 낡은 질문이라는 것을 알고 있지만, 2.3.5를 실행하는 HTC Evo (PC36100)에서 매우 비슷한 문제가 발생했습니다. SpyCamera (https://bitbucket.org/jimmod/spy-camera-os)가이 장치에서 작동했음을 확인했습니다. 코드를 검토 한 결과, SpyCamera가 실행되는 동안 미리보기 크기, 미리보기 형식 및 포커스 모드를 설정하지 않는 것으로 나타났습니다. 이 값을 설정하는 코드를 추가하고 녹음을 시작했을 때 Error 100이 중지되었습니다.

Camera.Parameters params = camera.getParameters();   

params.setPreviewSize(640, 480); 
params.setPreviewFormat(ImageFormat.NV21); 
if (params.getSupportedFocusModes().contains(Camera.Parameters.FOCUS_MODE_AUTO)) { 
    params.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO); 
} 
camera.setParameters(params);