Нужен код для записи видео с высоким качеством в Android 2.1 с помощью медиа-рекордер? - PullRequest
0 голосов
/ 02 августа 2011

Я пытаюсь записать видео с высоким качеством, я записываю видео, используя класс медиа-рекордера, пример кода показан ниже,

 recorder = new MediaRecorder();

    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);

но качество не такое хорошее, как у видео, снятого с помощью камеры по умолчанию. Я даже не могу установить Camcorderprofile здесь, потому что версия 2.1. Видео выглядит некачественным, кое-что искажено.

образец видео ... http://videoxplode.com/player.php?id=808490

Мне нужен способ для захвата видео с помощью медиа-рекордер в Android 2.1.

если кто-то знает, значит выручай меня.

Спасибо.

1 Ответ

2 голосов
/ 05 августа 2011

Наконец я нашел код для записи видео высокого качества в Android 2.1, установив videEncodingBitRate, AudioEncodingBitRate, AudioSamplingRate ... и т. Д. Используя этот метод, вы можете установить свойства видео независимо от того, что вы хотите обеспечить видео высокого качества.

Для настройки параметров высокого и низкого качества см. Эту страницу,

http://www.andgps.com/20110410/camcorderprofile-predefined-camcorder-profile-settings-for-camcorder-applications

Код, который я использовал с базовой версией Android 2.1 для создания высококачественного видео, показан ниже: `рекордер = новый MediaRecorder (); Method [] Methods = Recorder.getClass (). GetMethods ();

    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    recorder.setVideoFrameRate(24);
    recorder.setVideoSize(720, 480);

    for (Method method: methods){
    try{
        if (method.getName().equals("setAudioChannels")){
                method.invoke(recorder, String.format("audio-param-number-of-channels=%d", 1));
        } 
        else if(method.getName().equals("setAudioEncodingBitRate")){
                method.invoke(recorder,12200);
            }
        else if(method.getName().equals("setVideoEncodingBitRate")){
            method.invoke(recorder, 3000000);
        }
        else if(method.getName().equals("setAudioSamplingRate")){
            method.invoke(recorder,8000);
        }
        else if(method.getName().equals("setVideoFrameRate")){
            method.invoke(recorder,24);
        }
    }catch (IllegalArgumentException e) {

        e.printStackTrace();
    } catch (IllegalAccessException e) {

        e.printStackTrace();
    } catch (InvocationTargetException e) {

        e.printStackTrace();
    }
    }

    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);

`

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