5

我正在尝试创建一个以 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

4 回答 4

1

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

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

于 2013-11-01T00:58:59.483 回答
1

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

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

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

请注意,由于相机/编码器的限制,您的相机不能保证以给定的速率捕获帧。

于 2013-10-01T05:03:46.197 回答
1
public List<Integer> getSupportedPreviewFrameRates ()

检查此列表。我想您只是无法设置此处未列出的帧速率。这可能是因为 Android 操作系统中使用的编解码器修改。

于 2013-09-29T13:48:37.220 回答
0

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

于 2013-09-23T03:07:22.850 回答