在我的应用程序中,我使用 surfaceiew 在 android 中拍摄视频。在 onpreviewFrame 方法中,我编写了代码来抓取帧,但问题是我无法获取所有视频帧。我正在捕捉大约 14 秒的视频,但我只得到大约 90 帧。帧速率为 30 fps,图像尺寸为 800 x 480。
下面的代码在 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 帧。有什么解决方案吗?