2013-09-22 62 views
5

我試圖創建一個錄像應用程序,以24 FPS錄製視頻。Android - 是否可以'鎖定'相機的預覽幀速率?

Camera.Parameters params = mCamera.getParameters(); 
params.setPreviewFrameRate(24); 
params.setPreviewFpsRange(24000, 24000); 

而且還有以下CamcorderProfile進行使用的MediaRecorder: 我在試圖將FPS鎖定24使用下面的代碼

CamcorderProfile ccp = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH); 
ccp.videoFrameRate = 24; 

不幸的是,它只能當視頻是在光線不足的情況下拍攝的,但是一旦有光線外出,視頻開始以30 FPS錄製。

在光天化日之下,是否可以將幀率鎖定爲24fps?

在此先感謝!

+0

請問爲什麼要鎖定在24fps?對於大多數應用來說,現在29.97 FPS更爲常見。這可能是你可以做服務器端的東西嗎?我不知道你的應用的性質,所以很抱歉,如果這些問題沒有意義。 – blindstuff

+0

我想達到的是電影般的品質。我已經注意到,相機在較低的FPS中捕捉更高的質量。這很難解釋,但是當你觀看24 fps視頻並將其與29 fps視頻進行對比時,它看起來會有更好的方式。 – MrByte

回答

0

也許你還沒有鎖定自動白平衡和自動曝光。 FPS可能會受到環境的影響。嘗試setAutoExposureLock(true)setAutoWhiteBalanceLock(true)

+0

謝謝你的回答,儘管它在一種情況下(當視頻在低光下拍攝時)確實有效,但它僅適用於某些情況。例如,如果用戶想要在他的房子內拍攝視頻,然後在光線較暗的時候想出去,攝像機只會顯示「白屏」。另外,如果用戶在有很多光線的情況下拍攝視頻,則FPS將鎖定在30而不是24像我想要的那樣。 – MrByte

1
public List<Integer> getSupportedPreviewFrameRates() 

檢查此列表。我想你只是不能設置沒有在那裏列出的幀速率。 這可能是因爲在Android OS中使用的編解碼器修改。

+0

非常感謝您的回答。我已經檢查了這些數值,並且收到了以下數據:15000,30000和30000,30000。我的目標是要達到每秒24幀的確切數量,所以我假設如果我將值更改爲24000,它會做到這一點,因爲我的設備支持此值介於15000和30000之間。但是,如果除了這些值之外不可能使用其他任何東西,實際上是不可能實現的嗎? – MrByte

1

我建議你看看MediaRecorder:setCaptureRate(雙FPS)

FPS: - 速率,即幀應該在每秒

幀對於查詢捕獲支持: - getPreviewFpsRange( int [])

請注意,由於攝像頭/編碼器的限制,您的相機無法保證以給定速率拍攝幀。

+0

謝謝你的回答。此功能已棄用。我也嘗試過,但我沒有成功。我試圖達到fps的確切數量,沒有更多,也沒有少。 – MrByte

1

從我的Android上的個人經驗,我看到FPS和曝光之間存在依賴關係。我沒有用WhiteBalance檢查它,但它也可能。

那麼你爲什麼不把fps設置爲24或某些其他值,導致在某些時候24fps。然後你不斷檢查當前的fps,當它是24fps時,那麼你setAutoExposureLock(true)(和setAutoWhiteBalanceLock(真)以防萬一)。由於自動曝光的變化,fps不會再改變。

+0

簡單&聰明。正如你所說,顯然白平衡也在FPS中扮演一個小角色。在我的情況下鎖定曝光在一個稍低的FPS做了伎倆。 –