2013-01-22 111 views
1

我正在測試使用android手機攝像頭作爲輸入的成像算法,並且需要一種方法來持續測試算法。理想情況下,我想拍攝預先錄製的視頻供稿,並讓手機「假裝」視頻供稿是來自攝像機的實時視頻。模擬Android攝像頭

我的理想解決方案是運行算法的應用程序不知道視頻是預先錄製的。我不想將視頻文件直接加載到應用程序中,而是儘可能將其作爲傳感器數據讀取。

這種方法可行嗎?如果是這樣,任何指向正確的方向將是非常有益的,因爲谷歌搜索迄今爲止我失敗了

謝謝!

編輯:爲了澄清,我的理解是,Camera類使用攝像頭服務從硬件讀取視頻。我不想在應用程序端做某些事情,而是想創建一個自定義攝像頭服務,從視頻文件而不是硬件讀取數據。這是可行的嗎?

回答

1

當你在一個真實的android視頻源上進行處理時,你需要構建你自己的custom camera應用程序,通過Android提供的PreviewCallback interface爲你提供單獨的幀。

現在,模擬這將有點棘手,因爲預覽幀的格式通常是NV21格式。如果您使用的是預先錄製的視頻,我認爲除非您嘗試使用完全不同格式的位圖,否則我認爲沒有任何明確的方法可逐一讀取幀。

這使我建議你可以用getFrameAtTime方法測試這些Bitmaps(雖然我真的不知道你在做什麼)。爲了使此代碼能夠用於實時相機預覽,您需要將接口PreviewCallback中的NV21幀轉換爲與getFrameAtTime中的位圖相同的格式,或者您可以調整算法以處理NV21格式的幀。 NV21是一個非常整潔的格式,分別顯示顏色和亮度數據,但使用起來可能非常棘手。

+0

感謝您的快速響應。這是一個很好的解決方案,但它不完全是我要找的。我的理解是,Camera類依靠與硬件通信的攝像頭服務。我不想編輯相機類,而是想創建一個從視頻文件而不是硬件讀取的自定義相機服務。爲了清晰起見,我將在上面編輯謝謝! – ninjaish

+0

按照我的建議創建一個自定義相機類不需要編輯相機類,它僅僅意味着您可以自己處理相機並獲取預覽信息,另一種方法是創建一個簡單的意圖,以獲取從設備捕獲的圖像或視頻本機相機應用。你是否說過你不想從現場預覽工作?你在尋找一種使用傳統相機的方式,但是提供視頻作爲輸入而不是硬件?如果是這樣,這是不可能的...爲什麼你要使用相機呢? –