录制视频时,低照明会导致低fps

时间:2012-08-23 20:55:16

标签: android video-capture

我正在编写一个具有视频录制功能的应用程序。在光线充足的正常日光下,我可以拍摄30fps的视频。

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

但是,我更喜欢更高的fps,以获得更高质量的图像。假设曝光是问题,有没有办法控制曝光时间,以确保一个像样的fps(15fps +)。功能setExposureCompensation()setAutoExposureLock()但它们似乎什么都不做。

以前有人有这个问题吗?甚至曝光是否会导致我的问题?

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

4 个答案:

答案 0 :(得分:4)

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

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

通常在高端相机中,传感器中的成像管道会消除很多噪音。但是不要指望在手机传感器中。 [这是您在DSLR中看到的ISO性能]。

答案 1 :(得分:4)

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

根据比特率,噪声信息会被丢弃,我不明白为什么会有人认为这会对cpu造成额外的负担。

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

你可以搞乱曝光补偿以获得更多的fps,但我不认为超级暗视频是你想要的。

更多信息; https://www.anyline.io/blog/2015/12/11/low-end-android-devices-and-the-exposure-triangle/

答案 2 :(得分: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);

range允许fps“减速”。

通话setPreviewFpsRange(30000, 30000);强制fps保持在30左右。

答案 3 :(得分:1)

这是对的,你应该调用setPreviewFpsRange()来获得常量fps。您看到的帧速率因CCD而下降,当光线较低时fps会下降,因此可以产生更好的图像(在静止模式下)。

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

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

camera.setParameters(参数);