攝像機API有兩個不同的參數用于控制幀速率:
setPreviewFrameRate,它采用單幀速率值并且不推薦使用,
setPreviewFpsRange采用一系列FPS值,是當前推薦的控制.
單FPS設置控制不充分的原因是,有時您希望相機在黑暗條件下降低幀速率以使取景器保持明亮(靜態相機取景器就是這種情況),有時您需要相機無論如何都能保持穩定的30fps(視頻錄制時).單個值無法捕獲您喜歡的值.
因此,理想的解決方案是撥打getSupportedPreviewFpsRange獲取相機支持的有效FPS范圍列表,并選擇最適合您用例的一個.如果你正在尋找穩定的30fps操作,你需要(30,30)作為范圍.
不幸的是,支持的FPS范圍集并沒有得到應有的測試,并且不能保證(30,30)在列表中.在這種情況下,另一種方法是嘗試使用參數為30的不推薦的單FPS控制,并打開recording hint parameter.此參數告訴攝像機設備您正在進行類似記錄的操作,這可能會將其切換為執行穩定的幀速率為30.不幸的是,這不是保證,因為它只是一個暗示.
所以簡而言之,要獲得穩定的30fps操作:
>查詢getSupportedPreviewFpsRange
>如果列出(30,30),請使用setPreviewFpsRange(30,30).這應該足以保證穩定的幀速率.
>如果沒有,請查詢getSupportedPreviewFrameRates(此處應始終列出30,但最好仔細檢查)
>使用setPreviewFrameRate(30)和setRecordingHint(true).這最大化了看到30fps操作的可能性.但不幸的是,有些設備可能仍然無法滿足您的需求.
展望未來,我們希望增加一個要求(30,30)始終列為支持范圍,以簡化此操作并保證穩態運行.