2011-11-28 98 views
1

我有一個應用程序可以在Android中錄製視頻,而不會在大多數手機和API級別出現問題。至創紀錄的代碼如下:錄製視頻的問題

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運行的是Android 2.3.5,我得到的logcat的以下錯誤:

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是。我添加了代碼來設置這些值,並且當我開始記錄時,我停止了錯誤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);