Проблемы записи видео - PullRequest
1 голос
/ 28 ноября 2011

У меня есть приложение, которое записывает видео в 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();

По неизвестной причине, когда этот код выполняется в Motorola Model 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.

1 Ответ

1 голос
/ 11 июля 2013

Я понимаю, что это старый вопрос, но я столкнулся с очень похожей проблемой на HTC Evo (PC36100) под управлением 2.3.5.Я заметил, что 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);
...