Как получить необработанные данные предварительного просмотра с объекта Camera по крайней мере 33 кадра в секунду в Android? - PullRequest
2 голосов
/ 10 января 2012

Наше целевое устройство - Samsung Galaxy P2, и для передачи видео нам нужно, чтобы частота кадров в секунду составляла 33, то есть 33 кадра в секунду, ниже приведен код, который я использую,

 List<int[]> supportedPreviewFps=parameters.getSupportedPreviewFpsRange();

Вывод этогофункция была 4000 & 35000, я думаю, это означает, что устройство поддерживает 4 кадра в секунду до 33 кадров в секунду,

Теперь я мог бы сделать setFrameRange, используя API ниже,

parameters.setPreviewFpsRange(4000,35000);

Какон поддерживал только это значение, и я получаю кадр с интервалом в 110 мс, я полагаю, чтобы иметь 33 кадра в секунду, интервал должен быть 30 - 33,

любая идея, что делать?

1 Ответ

0 голосов
/ 06 февраля 2012

Вероятно, это связано с тем, что на устройстве не хватает процессора. Обратный вызов для предварительного просмотра является довольно интенсивным программным обеспечением, особенно если вы запрашиваете неродной формат.

Попробуйте использовать

  adb shell
  $ vmstat -d 1

и посмотрите на количество простаивающих процессоров. Если оно равно нулю (или меньше ~ 5%), то, вероятно, в этом и заключается проблема.

Это нелегко смягчить: единственный известный мне способ - использовать вместо него SurfaceTexture и выполнять как можно больше обработки в GPU.

...