Подтвердить что ты не робот

Проблема с android MediaRecorder setVideoSize()

Может ли андроид MediaRecorder захватить видео с разрешением выше 320*240?

Когда я использовал MediaRecorder::setVideoSize() для установки размера видео, захваченное видео находилось с разрешением 320*240. Что еще хуже, тем выше они не могут получить четкое видео, они были как-то зеленоватыми. (используется кодировщик h263, формат mpeg4)

Используемая версия Android - 1.6

Не могли бы вы помочь мне помочь?

4b9b3361

Ответ 1

У меня была проблема, подобная тому, что описано здесь. Я выяснил, что мне пришлось немного изменить структуру кода, прежде чем я смогу настроить размер видео.

Важно то, что setVideoSize() вызывается перед setVideoEncoder(). Я не могу найти это в документации, однако он решил мои проблемы с настройкой определенного разрешения видео. Также имейте в виду, что setOutputFormat() следует вызывать перед setVideoSize().

Как и примечание, то же самое верно для setVideoFrameRate(). Если он не вызывается перед setVideoEncoder(), это не повлияет.

Это было протестировано с Android 2.3.3

Вот пример кода:

recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setVideoSize(640,480);
recorder.setVideoFrameRate(30);
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);       

Ответ 2

Сначала вы захотите определить, что поддерживает ваша камера. Попробуйте:

            List<String> anti = params.getSupportedAntibanding(); 
    List<String> color = params.getSupportedColorEffects();
    List<String> focus = params.getSupportedFocusModes(); 
    List<String> flash = params.getSupportedFlashModes();
    List<Size> previewSize = params.getSupportedPreviewSizes();
    List<Size> sizes = params.getSupportedPictureSizes();
    List<Integer> frameRates = params.getSupportedPreviewFrameRates();
    List<Integer> pictureFormats = params.getSupportedPictureFormats();
    List<String> scene = params.getSupportedSceneModes(); 
    List<String> white = params.getSupportedWhiteBalance();

Это сообщит вам все параметры, поддерживаемые камерой. Второй Убедитесь, что вы правильно инициализировали MediaRecorder, чтобы увидеть документацию Google для порядка, в котором вам нужно установить MediaRecorder. Кроме того, если ваши Camera.setPreviewSize и MediaRecorder.setVideoSize различны, это может вызвать нечетное поведение.