Главная проблема с качеством видео в Android? - PullRequest
0 голосов
/ 26 июля 2011

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

Я не знаю, где я допустил ошибку, я установил следующие свойства для камеры

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

Спасибо

1 Ответ

1 голос
/ 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, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...