[英]Android video frame processing
我正在開發對相機幀進行一些實時圖像處理的應用程序。 為此,我使用預覽回調的方法onPreviewFrame
。
這適用於支持分辨率至少為 640x480 或更大的預覽幀的相機。 但是當相機不支持這么大的相機預覽分辨率時,應用程序被編程為拒絕處理此類幀。 現在,我Sony Xperia
的問題是像Sony Xperia
Go 這樣的手機。 這是一款非常不錯的設備,可以錄制分辨率高達 1280x720 的視頻,但不幸的是,相機預覽的最大尺寸為 480x320,這對於我的需求來說太小了。
我想知道的是如何獲得這些larger camera frames
(高達1280x720或更大)? 顯然它必須是可能的,因為相機應用程序能夠以該分辨率錄制視頻 - 因此該應用程序必須能夠以某種方式訪問那些較大的幀。 如何從我的應用程序中做同樣的事情?
應用程序必須支持 Android 2.1 及更高版本,但即使我找到僅適用於 Android 4.0 或更高版本的問題的解決方案,我也會很高興。
這個問題類似於http://stackoverflow.com/questions/8839109/processing-android-video-frame-by-frame-while-recording
,但我不需要保存視頻 - 我只需要那些高分辨率視頻幀...
似乎您唯一能做的就是從 MediaRecoder 數據解碼幀。 您可以使用 ffmpeg 來解碼來自 LocalSocket 的記錄器數據。
希望以下開源項目可以提供幫助:
ipcamera-for-android: https://code.google.com/p/ipcamera-for-android/
spydroid-ipcamera: https : //code.google.com/p/spydroid-ipcamera/
您可能應該看看OpenCV庫。 它具有允許您接收完整幀的方法。
我有一個印象:視頻預覽尺寸小,而且慢,比設置的視頻錄制幀率慢。
我曾經試圖尋找解決方案。 似乎更好的方法是從錄像機中獲取視頻流,然后直接處理來自視頻流的數據。
您可以在 Android ip-camera 上找到一些示例。
你可以使用這個庫:
https://github.com/natario1/CameraView
該庫具有addFrameProcessor
偵聽器,該偵聽器在process
函數中具有Frame
參數。
如果你需要同時幀處理錄制視頻,您需要從使用takeVideoSnapshot
的功能CameraView
。 takeVideo
停止幀處理,直到在我測試的最新版本 2.6.4 中完成視頻錄制。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.