2016-05-23 197 views
0

根據這個文檔:https://developer.android.com/reference/android/media/MediaRecorder.html#setCaptureRate%28double%29如何計算的攝像頭最大支持的幀速率定分辨率

「如果分辨率可以通過攝像機捕捉,最快 FPS可以使用計算getPreviewFpsRange(int [])「

但我找不到任何關於它的例子。

我試過:

List<Camera.Size> sizes = p.getSupportedPreviewSizes(); 
    p.setPreviewSize(sizes.get(0).width, sizes.get(0).height); 
    cam.setParameters(p); 

即設定預覽的大小與所有類型的決議,但呼籲getPreviewFpsRange(int[])總是返回相同的結果,就像5000後 - 宏碁60000 - 30000上的Nexus 4,或5000片劑。這是否意味着這些設備支持所有分辨率的最高fps或者我錯過了什麼?

有人知道如何計算每個分辨率的最大fps?

+0

如果我理解正確,這個方法應該返回一個固定的值 - 一個固定MIN和MAX的範圍。當你修改分辨率時,FPS也會變得固定(理想情況下,雖然實際上它有點波動,但仍然接近固定值)。因此,更改分辨率不會更改此設備和相機的MIN/MAX值。 –

+0

我期待,當我設置更高的分辨率fps範圍將有更低的上限... – Ognyan

回答

0

getSupportedPreviewSizes現在是deprecated along with Camera。然而,in AOSP它只返回了一個獨立於分辨率的固定幀速率範圍列表。一些製造商可能已經改寫了這種行爲,但我從來沒有見過它,並且與特定的預覽分辨率相關的方式未定義。

在至少一個設備上,我獲得30 FPS的預覽分辨率爲1280 x 720和15 FPS的其他所有設備,包括320 x 240等低分辨率。我懷疑圖形驅動程序針對特定預覽分辨率進行了優化,但即使驅動程序使其可用,舊的相機SDK也無法共享此信息。

Camera2接口似乎提供了getHighSpeedVideoFpsRangesFor的形式的解決方案,但我沒有自己嘗試過。