Android - 是否可以“锁定”相机的预览帧率?

时间:2013-09-22 14:30:25

标签: android video camera frame-rate

我正在尝试创建一个以24 FPS录制视频的视频录制应用。 我正在使用以下代码尝试将FPS锁定为24:

Camera.Parameters params = mCamera.getParameters();
params.setPreviewFrameRate(24);
params.setPreviewFpsRange(24000, 24000);

以及与MediaRecorder一起使用的以下CamcorderProfile:

CamcorderProfile ccp = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
ccp.videoFrameRate = 24;

不幸的是,只有当视频在光线不足的情况下拍摄时才会起作用,但是当我在光线下外出时,视频会以30 FPS开始录制。

是否可以在光天化日之前将帧速率锁定为24fps?

提前致谢!

4 个答案:

答案 0 :(得分:1)

public List<Integer> getSupportedPreviewFrameRates ()

检查此列表。我想你不能设置那里没有列出的帧率。 这可能是因为Android OS中使用的编解码器修改。

答案 1 :(得分:1)

我建议你看一下MediaRecorder:setCaptureRate(double fps)

fps: - 应以每秒帧数捕获的速率

支持的查询: - getPreviewFpsRange(int [])

请注意,由于相机/编码器的限制,您的相机无法保证以指定的速率拍摄相框。

答案 2 :(得分:1)

根据Android上的个人经验,我发现FPS和曝光之间存在依赖关系。我没有用WhiteBalance检查它,但它也可能。

那么为什么不将fps设置为24或某些其他值导致24fps。然后你不断检查当前的fps,当它是24fps时,那么你setAutoExposureLock(true)(以及setAutoWhiteBalanceLock(true)也是如此)。由于自动曝光的变化,fps不会再改变。

答案 3 :(得分:0)

可能您没有锁定自动白平衡和自动曝光。 FPS可能受环境影响。尝试setAutoExposureLock(true)setAutoWhiteBalanceLock(true)