摄像机API有两个不同的参数用于控制帧速率:

setPreviewFrameRate,它采用单帧速率值并且不推荐使用,

setPreviewFpsRange采用一系列FPS值,是当前推荐的控制.

单FPS设置控制不充分的原因是,有时您希望相机在黑暗条件下降低帧速率以使取景器保持明亮(静态相机取景器就是这种情况),有时您需要相机无论如何都能保持稳定的30fps(视频录制时).单个值无法捕获您喜欢的值.

因此,理想的解决方案是拨打getSupportedPreviewFpsRange获取相机支持的有效FPS范围列表,并选择最适合您用例的一个.如果你正在寻找稳定的30fps操作,你需要(30,30)作为范围.

不幸的是,支持的FPS范围集并没有得到应有的测试,并且不能保证(30,30)在列表中.在这种情况下,另一种方法是尝试使用参数为30的不推荐的单FPS控制,并打开recording hint parameter.此参数告诉摄像机设备您正在进行类似记录的操作,这可能会将其切换为执行稳定的帧速率为30.不幸的是,这不是保证,因为它只是一个暗示.

所以简而言之,要获得稳定的30fps操作:

>查询getSupportedPreviewFpsRange

>如果列出(30,30),请使用setPreviewFpsRange(30,30).这应该足以保证稳定的帧速率.

>如果没有,请查询getSupportedPreviewFrameRates(此处应始终列出30,但最好仔细检查)

>使用setPreviewFrameRate(30)和setRecordingHint(true).这最大化了看到30fps操作的可能性.但不幸的是,有些设备可能仍然无法满足您的需求.

展望未来,我们希望增加一个要求(30,30)始终列为支持范围,以简化此操作并保证稳态运行.

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐