android - 尽管值在 getPreviewFpsRange 的范围内,但 setPreviewFpsRange 不工作

标签 android android-camera frame-rate nexus-4

这个简单的代码:

Camera.Parameters params = currentCamera.getParameters();
params.setPreviewFpsRange( 10000, 15000 );
currentCamera.setParameters( params );

在我的 Nexus 4(或我的摩托罗拉 Atrix)上不起作用,尽管允许的值在 5000 到 120000 的允许范围内。

当我尝试分别使用不同于 5000 和 120000 的任何最小值或最大值时,我得到:

setPreviewFpsRange(const android::QCameraParameters&): error: FPS range 
value not supported

这很愚蠢。此外,我在我的旧摩托罗拉 Atrix 上尝试了此代码(它显示有效的 fps 范围在 10000 到 30000 之间)但它也不起作用。有什么可以做的吗?

通过对该主题的搜索,我发现 a) 关于该主题的 Material 很少,并且 b) 某些平台可能根本不支持此功能。谷歌目前的旗舰手机 Nexus 4 不支持它,这有点奇怪……

最佳答案

啊哈!因此,作为我寻找答案的一部分,我用我的应用程序检查了我的 Nexus 10 的操作。事实证明,getSupportedFpsRange 函数返回的值是表示可能输入到 setPreviewFpsRange 中的精确双元组的范围,并且不支持任何其他双元组(无论如何,据我所知。)

我发现这个是因为 Nexus 10 从 getSupportedFpsRange 返回了多个双元组。我在此处复制了三个设备的 getSupportedFpsRange 返回值。

支持的范围值示例

LG Nexus 4:

preview-fps-range-values=(5000,120000);

摩托罗拉 Atrix:

preview-fps-range-values=(10000,30000);

三星 Nexus 10:

preview-fps-range-values=(15000,15000),(24000,24000),(25000,25000),(15000,30000),(30000,30000);

结论

我们做不到

params.setPreviewFpsRange( 29000, 29000 );

强制预览为 29fps,除非设备已经明确支持该双帧。

当然,我研究此功能的最初原因是希望在我自己的应用程序中复制 Nexus 4 的丝般流畅的相机预览。这似乎最终证明,至少在 Nexus 4 上,setPreviewFpsRange 对此无济于事。

是时候继续搜索了。 (:

关于android - 尽管值在 getPreviewFpsRange 的范围内,但 setPreviewFpsRange 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16128271/

相关文章:

android - Android 应用中 google +1 按钮的客户端 ID

android - 适用于 Android 的人脸识别器 opencv 类

c++ - 添加到数组 C++

java - FFMpeg 在从 Java 应用程序发送原始像素数据时以错误的帧速率进行压缩

ffmpeg - 当输入是实时相机设备时,使用输入帧率选项(在 FFmpeg 中)时的预期行为是什么?

Android:Google Maps Clustermanager 行为异常。群集图标有时在完全缩放时不会消失。为什么?

java - 从 PHP 文件接收 HTTP POST 回显响应(发送 POSTS 工作正常,这是我无法弄清楚的接收)

android - 如何以编程方式拍照

java - 相机预览中出现绿色线条

java - Android:通过 RTP (G.711 PCMU) 将 .wav 发送到 SIP 电话,基于 SipDroid/MjSIP,声音非常嘈杂、噼啪作响