2012-01-27 75 views
13

有沒有辦法獲取Android相機預覽幀捕獲時間的時間戳?Android相機預覽幀時間戳

  1. 沒有攝像頭的方法返回一個時間戳
  2. 你不能從本地代碼訪問照相機
  3. 緩衝區大小不是靜態的(取決於從相機獲取最小預覽大小 - 時,如果該方法是工作),如果在隊列中有更多的幀,然後有預覽緩衝區,它們被丟棄
  4. 已設置的幀速率(再次,如果/當方法正在工作時)只是系統提示,相機可以忽略值。相機返回的幀速率也一樣。

我正在做一些沉重的圖像處理的實時,小錯誤時加在一起是一個真正的問題。

+0

你是指onPreviewFrame回調,對不對?假設它至少是一個JPEG,那麼在傳遞的字節[]中應該有EXIF數據。 – michaelg 2012-01-27 21:25:01

+0

據我所知,數據中沒有exif,只是原始圖像 – LambergaR 2012-01-27 22:25:15

+0

每個缺乏EXIF:不知道這是否可行,但你有沒有嘗試明確設置預覽格式爲ImageFormat.jpeg? NV21格式(默認)可能沒有任何位置存儲EXIF數據。 – 2012-01-31 21:35:20

回答

4

我知道這樣做的唯一方法是使用SurfaceTexture而不是預覽回調。

SurfaceTexture具有一個getTimestamp()方法,該方法自某些未指定(但常量)時間以來返回納秒。

不幸的是,SurfaceTexture是一個OpenGL外部紋理,因此使用預覽回調並不容易。另一方面,它具有更高的CPU效率:預覽回調可以在軟件中進行顏色轉換和圖像重塑,而人們可以使用OpenGL ES2功能在GPU上執行大量圖像處理。

+0

會很好,但有一個問題......「既然:API級別11」是你不太高興看到當你試圖支持舊平臺:) – LambergaR 2012-02-06 03:03:19

+0

唉,我不知道它在API級別11之前都可能。 – 2012-02-11 21:04:23