2013-06-11 3 views
1

В моем приложении я использую surfaceiew для просмотра видео в android. В методе onpreviewFrame я написал код для захвата кадров, но проблема в том, что я не могу получить все кадры видео. Я захватываю около 14 секунд видео, но я получаю только около 90 кадров. частота кадров 30 кадров в секунду и размер изображения составляет 800 х 480.Как захватить видеокадры с onPreviewFrame в Android?

Код ниже FRAB кадров в методе onPreviewFrame:

formattedFileCount = fileCountFormatter.format(fileCount); 
jpegFile = new File(Environment 
         .getExternalStorageDirectory().getPath() 
         + "/abc/foo-" 
         + formattedFileCount + ".jpg"); 
       fileCount++; 

Camera.Parameters parameters = camera.getParameters(); 
Size size = parameters.getPreviewSize(); 
YuvImage image = new YuvImage(b, 
       parameters.getPreviewFormat(), 800, 
       480, null); 


fos = new FileOutputStream(jpegFile); 
bos = new BufferedOutputStream(fos); 
image.compressToJpeg(
     new Rect(0, 0, image.getWidth(), image.getHeight()), 
      90, bos); 

Так около 14 второго видео, полные кадры были бы 420, но я просто получите менее 100 кадров. Любые решения для этого?

ответ

0

Используйте временную метку (System.currentTimeMillis()), чтобы проверить, сколько времени потребуется для выполнения этого кода. Умножьте это на 30, и оно должно быть ниже 1 секунды. Возможно, ваше устройство Android не так быстро конвертирует необработанные данные предварительного просмотра в jpg и записывает их на диск. Где вы пишете sd-карту?

Смежные вопросы