MediaRecorder не записывает видео, только записывает звук - PullRequest
1 голос
/ 20 марта 2012

мое приложение Video Recorder не записывает видео, оно только записывает аудио с расширением .mp4.Там нет ошибки, возвращаемой в logcat.Итак, я не могу понять, что не так с моим кодом.

Кто-нибудь знает эту проблему?Или любые предложения о том, что использовать для записи видео.

Вот мой код:

public class VideoHolderCallback implements SurfaceHolder.Callback{
    MediaRecorder recorder;
    ...
    public void configureRecorder(){
        recorder = new MediaRecorder();
        recorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
        recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
        recorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
        recorder.setOutputFile(filePath);
        recorder.setPreviewDisplay(holder.getSurface());
        recorder.prepare();
        recorder.start();
    }
    ...

}

Ответы [ 3 ]

3 голосов
/ 20 марта 2012

«Для захвата видео с использованием платформы Android требуется тщательное управление объектом Camera и согласование с классом MediaRecorder»

"В отличие от фотосъемки с помощью камеры устройства, для захвата видео требуется особый порядок вызовов. Для успешной подготовки и захвата видео с вашим приложением необходимо следовать определенному порядку выполнения, как описано ниже."

пожалуйста, посмотрите инструкции и фрагменты кода, приведенные здесь (также убедитесь, что у вас есть) http://developer.android.com/guide/topics/media/camera.html#capture-video

также убедитесь, что у вас есть необходимые декларации манифеста http://developer.android.com/guide/topics/media/camera.html#manifest

2 голосов
/ 08 июня 2012

Вы должны попробовать это в следующем порядке:

public class VideoHolderCallback implements SurfaceHolder.Callback{
MediaRecorder recorder;
...
public void configureRecorder(){

    if(camera == null) {
        camera = Camera.open();
        camera.unlock();
    }
    recorder.setCamera(camera);
    recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
    recorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
    recorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
    recorder.setOutputFile(filePath);
    recorder.setPreviewDisplay(holder.getSurface());
    recorder.prepare();
}

Этот кусок кода должен работать хорошо для вас. Не стесняйтесь менять AudioEncoder на что-то другое, чем AAC, хотя он наиболее эффективен для низких кбит / с.

0 голосов
/ 20 марта 2012

// попробуйте один раз с микрофоном

 recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
 recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

см. Здесь:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...