在我的Android应用程序中,我观察到从前置摄像头录制的视频以7-10 fps的速度录制,而后置摄像头可以正常工作,而 native 摄像头应用程序的确以29fps的速度录制来自前置摄像头的视频。

我使用以下功能设置帧频

 myRecorder.setVideoFrameRate(30);

但以某种方式将其记录为8fps。问题是什么?同样,光照条件似乎也可以将其提高到15fps,但是我希望它至少> 25fps,该如何实现呢?我们可以为此使用NDK吗?

最佳答案

我正在探索同样的问题。由于MediaRecorder已经具有 native 实现,因此使用NDK似乎不是增加每秒帧数的有前途的方法。如http://www.androidadb.com/source/cellbots-read-only/experimental/android/ioio/samples/ShootOnSight/src/com/cellbots/ioioshoot/CameraView.java.html上的代码所示,使用setPreviewCallbackWithBuffer改善缓冲效果似乎很有希望,但我首先想更好地了解许多相机参数以及它们如何影响帧速率。

如您所知,Android设备种类繁多,具有多种摄像头功能。要查看您的特定前置和后置摄像头的功能,可以使用以下代码(例如,将mCameraId的背面设置为0,正面设置为1)。

    Camera mCamera = Camera.open(mCameraId);
    Camera.Parameters cp = mCamera.getParameters();
    Log.d(TAG, "camera parameters: " + cp.flatten());

例如,以下是我的Nexus S(运行OS 4.0.4)转储的相机参数。

NEXUS-S前面板相机参数:
06-16 15:14:16.909:D/SENSORS_PLUS(24583):摄像机参数:
图片尺寸值= 640x480;
Preview-fps-range = 7500,30000;
min-exposure-compensation = -4;
vertical-view-angle = 39.4;
horizo​​ntal-view-angle = 51.2;
白平衡=自动;
jpeg-thumbnail-height = 120;
jpeg-quality = 100;
预览格式值= yuv420sp,yuv420p;
旋转= 0;
jpeg-thumbnail-quality = 100;
focus-mode = fixed;
预览格式= yuv420sp;
预览尺寸= 640x480;
焦距= 0.9;
video-frame-format = yuv420p;
picture-format-values = jpeg;
max-exposure-compensation = 4;
曝光补偿= 0;
Preview-frame-rate-values = 15;
曝光补偿步骤= 0.5;
Preview-frame-rate = 15;
effect-values = none,mono,negative,sepia;
focus-mode-values = fixed;
图片尺寸= 640x480;
效果=无;
jpeg-thumbnail-width = 160;
白平衡值=自动,白炽灯,荧光灯,日光,阴天;
picture-format = jpeg;
focus-distances = 0.20,0.25,Infinity;
Preview-fps-range-values =(7500,30000);
jpeg-thumbnail-size-values = 160x120,0x0;
预览尺寸值= 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;
min-exposure-compensation = -4;
vertical-view-angle = 39.4;
horizo​​ntal-view-angle = 51.2;
白平衡=自动;
jpeg-thumbnail-height = 240;
scene-mode = auto;
jpeg-quality = 100;
预览格式值= yuv420sp,yuv420p;
旋转= 0;
jpeg-thumbnail-quality = 100;
focus-mode =自动;
预览格式= yuv420sp;
预览尺寸= 720x480;
焦距= 3.43;
video-frame-format = yuv420p;
picture-format-values = jpeg;
max-exposure-compensation = 4;
闪光模式值=开,关,自动,手电筒;
曝光补偿= 0;
Preview-frame-rate-values = 30;
曝光补偿步骤= 0.5;
Preview-frame-rate = 30;
闪光模式=关闭;
effect-values = none,mono,negative,sepia;
focus-mode-values = auto,infinity,macro;
图片尺寸= 2560x1920;
效果=无;
jpeg-thumbnail-width = 320;
白平衡值=自动,白炽灯,荧光灯,日光,阴天;
场景模式值=自动,人像,风景,夜景,海滩,雪景,日落,烟花,运动,聚会,烛光;
picture-format = jpeg;
focus-distances = 0.10,1.20,Infinity;
Preview-fps-range-values =(15000,30000);
jpeg-thumbnail-size-values = 320x240,0x0;
预览尺寸值= 720x480,640x480,352x288,176x144

关于android - 从我的Android应用中的前置摄像头录制时,无法获得高fps(每秒帧数)速率(约30fps),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8254435/

10-12 00:23
查看更多