安卓相机 高帧率_Android MediaCodec和摄像头:如何实现更高的帧速率从相机获取帧原始数据?...
摄像机API有两个不同的参数用于控制帧速率:setPreviewFrameRate,它采用单帧速率值并且不推荐使用,setPreviewFpsRange采用一系列FPS值,是当前推荐的控制.单FPS设置控制不充分的原因是,有时您希望相机在黑暗条件下降低帧速率以使取景器保持明亮(静态相机取景器就是这种情况),有时您需要相机无论如何都能保持稳定的30fps(视频录制时).单个值无法捕获您喜欢的值.因此
摄像机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)始终列为支持范围,以简化此操作并保证稳态运行.
更多推荐
所有评论(0)