我正在嘗試創建一個應用程序,可以將過濾器添加到錄製的視頻中。基本上,我想複製Instagram視頻或Viddy中存在的功能。Android視頻過濾器
我已經完成了研究,但我無法將它們拼湊在一起。我已經研究過使用GLSurfaceView播放錄製的視頻,我知道我可以使用NDK進行像素操作並將其發送回SurfaceView或以某種方式保存。問題是,我不知道如何發送像素數據,因爲似乎沒有功能來訪問它。這個想法來自相機功能「onPreviewFrame」。該函數返回一個字節數組,允許我操作像素並顯示它。
另一個想法是使用GLSurfaceView並使用OpenGL渲染過濾器。 GLSurfaceView有一個你可以設置的渲染器,但我對OpenGL不是很熟悉。但是,這又回到實際獲得每個視頻幀的像素。我也讀過關於將每一幀翻譯爲紋理,然後在OpenGL中操縱紋理的問題,但我所遇到的答案並不十分詳細。
最後,我研究了JavaCV。試圖使用FFmpegFrameGrabber,但我還沒有太多。我只想抓住一幀,但是當我嘗試將幀的ByteBuffer寫入ImageView時,我得到一個「緩衝區不夠大」的錯誤。
任何指導都會很棒。
特別是,DecodeEditEncodeTest是一個CTS測試,它可以對視頻進行解碼,使用GLES着色器對其進行修改,然後對其進行重新編碼。 – fadden