2012-08-23 50 views
2

我正在編寫具有視頻錄製功能的應用程序。在正常的白天和光線充足的情況下,我可以拍攝30fps的視頻。低照度導致錄製視頻時的低fps

但是,當光線較少時,幀頻會降至7.5fps左右(使用完全相同的編碼)。我的猜測是,android會在曝光時間後面做一些事情,以確保最終的視頻具有最佳的圖像質量。然而,我會更喜歡更高的幀速率以更好的質量圖像。假設曝光是問題,是否有任何方法來控制曝光時間,以確保一個體面的fps(15fps +)。有功能setExposureCompensation()setAutoExposureLock(),但他們似乎什麼都不做。

有沒有人有過這個問題?它是否是曝光導致我的問題?

任何命中/建議將是偉大的。

+0

你在多個設備上試過這個嗎?問題可能是您使用的設備具有自動幀速率。我在MediaRecorder.setVideoFrameRate(...)'... **「的文檔中發現了這一點。注意:在某些具有自動幀速率的設備上,這會設置最大幀速率,而不是固定幀速率。費率將根據照明條件而有所不同。「** – Squonk

+0

有趣的是,我已經在我的代碼中設置了幀速率。如何找出我是否有自動幀速率設備(它是Google Nexus 7)...我已經檢查了參數'flatten()'字符串,但沒有提供任何我能看到的東西。 – Cheetah

回答

3

這裏有一個簡單的解釋。較低的光線意味着視頻中有更多的噪音。隨着更多的噪聲,編碼引擎必須付出更多的努力才能獲得所需的壓縮。除非編碼器具有降噪器,否則編碼引擎比正常情況下處理的噪聲要多得多。

如果你想要更技術性的答案:更多的噪音意味着編碼器的運動估計引擎被拋出。這是消耗最大CPU週期的部分。噪聲越多,壓縮越差,因此甚至編碼器的其他部分基本上嘎吱嘎吱地響。生成更多的比特,這意味着編碼和熵引擎也在搗鼓更多,因此性能更差。

通常在高端攝像機中,傳感器中的成像管道會消除大量噪音。但是,不要指望在手機傳感器。 [這是您在數碼單反相機中看到的ISO性能]。

+0

所以曝光並不是真正的問題。如果照明不好..你可以做的不多。過度曝光將清除可見的內容。 – av501

+0

雖然我明白你在說什麼,但CPU使用率並沒有增加,它在整個使用過程中保持不變,而且fps下降。 – Cheetah

+0

@Ben,它是一樣的不,fps下降,因爲CPU使用率保持不變,因爲保持相同的fps將需要更高的CPU!所以在內部,CPU使用率受到限制[爲了保持系統健全]並且fps不同。 – av501

2

我在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

+0

歡迎來到SO @josef( - 。 – Audrius

0

這是正確的,你應該叫setPreviewFpsRange()獲得恆定的FPS。您看到的幀頻因CCD而下降,當光線較弱時,fps下降,因此可以產生更好的圖像(靜止模式下)。

還可實現更高的幀速率,應使用:

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

camera.setParameters(參數);

2

我很抱歉,但接受的答案是完全錯誤的。事實上,我已經創建了一個帳戶來糾正這個問題。

無論如何,噪聲信息會根據比特率而丟棄,我不明白爲什麼有人會認爲這會對CPU造成額外的負載。

事實上,移動設備上的視頻幀率與曝光有很大關係。在光線較暗的情況下,曝光會自動增加,這也意味着快門會長時間保持打開狀態,讓更多光線進入。這將減少一秒鐘內可拍攝的幀數,並在頂部添加一些運動模糊。使用數碼單反相機,您可以改變光圈以獲得更多光線,而無需觸摸快門速度,但在移動設備上,光圈是固定的。

你可能會混淆曝光補償,以獲得更多的fps,但我不認爲超級黑暗的視頻是你想要的。


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