Почему полезные размеры различаются

Опять же, не знаю, как сформулировать вопрос, поэтому я объясню.

У меня есть программа для записи видео. Я открываю камеру с

cameraRecorder = Camera.open(1); //(this is the front facing camera)

И получить параметры камеры и все поддерживаемые размеры предварительного просмотра

CameraParameters tmpParams = cameraRecorder.getParameters();

List<Camera.Size> tmpList = tmpParams.getSupportedPreviewSizes();

один из размеров предварительного просмотра на Galaxy Tab 10.1 с ICS (4.0.4) — 800x600.

но когда я пытаюсь установить размер видео в своем медиаплеере

mediaRecorder.setVideoSize(800,600);

Я получаю эту ошибку:

12-19 17:27:55.035: E/CameraSource(110): Video dimension (800x600) is unsupported
12-19 17:27:55.035: E/StagefrightRecorder(110): cameraSource do not init
12-19 17:27:55.035: E/StagefrightRecorder(110): setupCameraSource failed. (-19)
12-19 17:27:55.035: E/StagefrightRecorder(110): setupMediaSource is failed. (-19)
12-19 17:27:55.035: E/StagefrightRecorder(110): setupMPEG4Recording is failed. (-19)
12-19 17:27:55.035: E/MediaRecorder(30119): start failed: -19

Кто-нибудь знает, почему может существовать это несоответствие (я знаю, что один из поддерживаемых размеров записи - 1280x720, но это слишком много для меня).


person Raigex    schedule 19.12.2012    source источник


Ответы (1)


Это потому, что предварительный просмотр и запись отличаются. Следует использовать размеры, указанные в Camera.Parameters. getSupportedVideoSizes().

public List<Camera.Size> getSupportedVideoSizes ()
Gets the supported video frame sizes that can be used by MediaRecorder.
person auselen    schedule 19.12.2012
comment
Похоже, это именно то, что мне нужно, за исключением того, что я запускаю свое приложение для версии 2.2 (froyo). и getSupportedVideoSizes() только для API 11 и выше (соты и выше). - person Raigex; 20.12.2012
comment
Проблема наследования заключается в том, что вы нацелились на планшет со старой версией Android. Я думаю, вам нужно восхитительно справиться с ситуацией, и если система предоставляет упомянутый метод, вы должны учитывать тот факт, что предварительный просмотр и запись могут иметь разные размеры, и если система старая, вы можете полагаться на реакцию старых способов работы. - person auselen; 20.12.2012
comment
Да, я думаю, мне придется нацелиться на API 11 и проверить, не является ли что-то имбирным пряником или ниже. Спасибо - person Raigex; 20.12.2012