5

我正在编写一个具有视频录制功能的应用程序。在光线充足的正常白天,我能够录制 30fps 的视频。

但是,当光线较少时,帧速率会下降到 7.5fps 左右(代码完全相同)。我的猜测是,android 在幕后利用曝光时间做一些事情,以确保生成的视频具有最佳图像质量。

但是,我更喜欢更高的 fps 而不是质量更好的图像。假设曝光是问题,有没有办法控制曝光时间以确保体面的 fps (15fps+)。有这些功能setExposureCompensation()setAutoExposureLock()但它们似乎什么也没做。

以前有人遇到过这个问题吗?是不是曝光导致了我的问题?

任何点击/建议都会很棒。

4

4 回答 4

5

我很抱歉,但接受的答案是完全错误的。事实上,我创建了一个帐户只是为了纠正这个问题。

无论如何,噪声信息会根据比特率被丢弃,我不明白为什么有人会认为这根本会给 CPU 带来额外的负载。

事实上,移动设备上的视频帧率与曝光有很大关系。在光线不足的情况下,曝光会自动增加,这也意味着快门将保持打开更长时间以让更多光线进入。这将减少您在一秒钟内可以捕获的帧数,并在顶部添加一些运动模糊。使用 DSLR 相机,您可以在不影响快门速度的情况下更改光圈以获得更多光线,但在移动设备上,您的光圈是固定的。

您可以使用曝光补偿来获得更高的 fps,但我认为超暗视频不是您想要的。


更多信息; https://anyline.com/news/low-end-android-devices-exposure-triangle/

于 2017-04-08T14:27:03.927 回答
4

这里有一个简单的解释。较低的光线意味着视频中有更多的噪点。随着噪音的增加,编码引擎必须付出更多的努力才能获得所需的压缩。除非编码器有降噪器,否则编码引擎要处理的噪声要比正常情况多得多。

如果你想要一个更技术性的答案:更多的噪音意味着编码器的运动估计引擎被扔掉了。这是消耗最大 CPU 周期的部分。噪音越大,压缩越差,因此甚至编码器的其他部分基本上都在嘎吱作响。生成的位更多,这意味着编码和熵引擎也处理得更多,因此性能更差。

通常在高端相机中,传感器中的成像管道会去除大量噪声。但是不要指望在手机传感器中会出现这种情况。[这是您在 DSLR 中看到的 ISO 性能]。

于 2012-08-26T18:48:19.707 回答
3

我在使用 Android 4.2 Galaxy S III 时遇到了这个问题。在对参数进行试验后,发现一个开始工作的调用。

查看 Camera.Parameters,如果将它们打印出来,您会看到:

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

允许fps “range放慢速度”。

该调用setPreviewFpsRange(30000, 30000);强制 fps 保持在 30 左右。

于 2013-01-18T17:16:32.003 回答
1

这是正确的,您应该调用setPreviewFpsRange()以获得恒定的fps。由于 CCD,您看到的帧速率正在下降,当光线不足时,fps 会下降,因此它可以产生更好的图像(在静止模式下)。

此外,为了获得更高的帧速率,您应该使用:

Camera.Parameters parameters=camera.getParameters();
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
parameters.setRecordingHint(true);

camera.setParameters(参数);

于 2013-07-03T12:39:05.167 回答