Проблема с android MediaRecorder setVideoSize()
Может ли андроид MediaRecorder
захватить видео с разрешением выше 320*240
?
Когда я использовал MediaRecorder::setVideoSize()
для установки размера видео, захваченное видео находилось с разрешением 320*240
. Что еще хуже, тем выше они не могут получить четкое видео, они были как-то зеленоватыми. (используется кодировщик h263
, формат mpeg4
)
Используемая версия Android - 1.6
Не могли бы вы помочь мне помочь?
Ответы
Ответ 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 различны, это может вызвать нечетное поведение.