我在Eclipse中使用了Android 2.2。Android中的視頻處理
我想製作一個捕獲視頻的應用程序,並將其作爲位圖發送給處理它的方法,並返回一個新的位圖並顯示處理後的位圖。
我對Android並不是很熟悉,所以請大家給我一些資源,我需要看看做這樣的事情嗎?
我在Eclipse中使用了Android 2.2。Android中的視頻處理
我想製作一個捕獲視頻的應用程序,並將其作爲位圖發送給處理它的方法,並返回一個新的位圖並顯示處理後的位圖。
我對Android並不是很熟悉,所以請大家給我一些資源,我需要看看做這樣的事情嗎?
這是很簡單的完成使用Android SDK以下步驟:
Camera.PreviewCallback
將返回表示以許多可能的圖像格式的幀的數據的byte[]
。Bitmap
對象,以便更容易地處理像素。在2.2中,您可以選擇使用NDK和jnigraphics在本地代碼中使用Bitmap的像素,這比Java層快得多。Bitmap
的內容顯示出來。對於快速移動的數據,您需要在SurfaceView
上顯示此信息;使用該視圖包含的SurfaceHolder
中可用的lockCanvas()
和unlockCanvasAndPost()
方法。如果這就是你想要做的一切,那麼你可以輕鬆完成這一點。但是,這與捕捉視頻不一樣。 Android目前不提供鉤子以實時將幀流式傳輸到編碼視頻容器(MPEG4,3GP等)中。它的視頻捕捉功能緊密包裹在MediaRecorder
中,該控件可以控制從幀捕捉一直到編碼編碼視頻的過程。您需要第三部分庫,例如FFMPEG(已在Android應用程序中多次使用NDK層構建並運行)來協助您修改幀的編碼過程。
我知道你有一個2.2的目標,但Android 4.0在這裏提供了一些解決方法,因爲他們已經發布了NDK的新版本,它允許在交付之前從流中讀取圖像數據時會發生什麼到表示層。但是,我沒有花足夠的時間知道它是否可以推薦用於您的情況。
您可以使用Camera.setPreviewCallback
和Camera.PreviewCallback#onPreviewFrame
來偵聽來自相機的預覽幀。
代碼二維條碼掃描儀可能是一個有用的起點: ZXing
如果你想做更復雜的實時視頻處理,我會強烈推薦OpenCV for Android。
OpenCV是一個計算機視覺庫,使您能夠實時處理視頻,並且它具有執行簡單任務的庫,例如檢測邊緣或檢測面和匹配特徵等更復雜的任務。
您可以在一天內使OpenCV在您的Android手機上工作,特別是因爲它包含大量文檔和示例。
我真的不想看一個視頻,使用預覽對我來說很棒。謝謝! – 2011-12-24 13:46:11
嗨,我如何使用一系列位圖圖像創建視頻?我如何渲染它? – 2012-08-13 16:22:48