Я исследую ту же проблему.Поскольку MediaRecorder уже имеет встроенную реализацию, использование NDK не кажется многообещающим подходом к увеличению количества кадров в секунду.Улучшение буферизации с помощью setPreviewCallbackWithBuffer, как показано в коде на http://www.androidadb.com/source/cellbots-read-only/experimental/android/ioio/samples/ShootOnSight/src/com/cellbots/ioioshoot/CameraView.java.html, кажется многообещающим, но сначала я хотел бы лучше понять многие параметры камеры и то, как они влияют на частоту кадров.
Как вы наверняка знаете, существует множество устройств Android с широким спектром возможностей камеры.Чтобы увидеть возможности вашей конкретной передней и задней камер, вы можете использовать следующий код (например, установив mCameraId в 0 для задней панели и в 1 для передней панели).
Camera mCamera = Camera.open(mCameraId);
Camera.Parameters cp = mCamera.getParameters();
Log.d(TAG, "camera parameters: " + cp.flatten());
Например, вотпараметры камеры, сбрасываемые моим Nexus S (работает под управлением ОС 4.0.4).
ПАРАМЕТРЫ ПЕРЕДНЕЙ КАМЕРЫ NEXUS-S:
06-16 15: 14: 16.909: D / SENSORS_PLUS (24583): камерапараметры:
значения размера изображения = 640x480;
preview-fps-range = 7500,30000;
компенсация минимальной экспозиции = -4;
угол обзора по вертикали = 39,4;
горизонтальный угол обзора = 51,2;
баланс белого = авто;
jpeg-thumbnail-height = 120;
jpeg-quality = 100;
preview-format-values = yuv420sp, yuv420p;
вращение = 0;
jpeg-thumbnail-quality = 100;
focus-mode = fixed;
preview-format = yuv420sp;
preview-size = 640x480;
focal-длина = 0,9;
формат видеокадров = yuv420p;
значения форматов изображений = jpeg;
максимальная компенсация экспозиции = 4;
компенсация экспозиции = 0;
преобладаниеw-frame-rate-values = 15;
шаг компенсации экспозиции = 0,5;
preview-frame-rate = 15;
значения эффекта = нет, моно, негатив, сепия;
значения режима фокусировки = фиксированный;
размер изображения = 640x480;
эффект = нет;
jpeg-thumbnail-width = 160;
значения баланса белого = авто, лампа накаливания, флуоресцентная лампа, дневной свет,облачный дневной свет;
формат изображения = jpeg;
расстояние фокусировки = 0,20,0,25, бесконечность;
preview-fps-range-values = (7500,30000);
jpeg-thumbnail-size-values = 160x120,0x0;
preview-size-values = 640x480,320x240,176x144
ПАРАМЕТРЫ ЗАДНЕЙ КАМЕРЫ NEXUS-S:
06-16 15: 46: 55.315: D /SENSORS_PLUS (24732): параметры камеры:
значения размера изображения = 2560x1920,2048x1536,1600x1200,1280x960,640x480;
preview-fps-range = 15000,30000;
минимальная компенсация экспозиции = -4;
вертикальный угол обзора = 39,4;
горизонтальный угол обзора = 51,2;
баланс белого = авто;
jpeg-thumbnail-height = 240;
сюжетный режим = авто;
jpeg-quality = 100;
preview-format-values = yuv420sp, yuv420p;
вращение = 0;
jpeg-thumbnail-quality = 100;
focus-mode = auto;
preview-format = yuv420sp;
preview-size = 720x480;
фокусное расстояние = 3,43;
формат видеокадра = yuv420p;
значения формата изображения = jpeg;
компенсация максимальной экспозиции = 4;
режим вспышки-значения = вкл., выкл., авто, факел;
компенсация экспозиции = 0;
значения частоты кадров предварительного просмотра = 30;
шаг компенсации экспозиции = 0,5;
preview-frame-скорость = 30;
режим вспышки = выкл;
значения эффекта = нет, моно, негатив, сепия;
значения режима фокусировки = авто, бесконечность, макро;
размер изображения =2560x1920;
effect = none;
jpeg-thumbnail-width = 320;
whitebalance-values = auto, лампа накаливания, флуоресцентная лампа, дневной свет, облачный дневной свет;
scene-mode-values = auto,портрет, пейзаж, ночь, пляж, снег, закат, фейерверк, спорт, вечеринка, при свечах;
picture-format = jpeg;
дистанции фокусировки = 0,10,1.20, бесконечность;
preview-fps-range-values = (15000,30000);
jpeg-thumbnail-size-values = 320x240,0x0;
preview-size-values = 720x480,640x480,352x288,176x144