1
我正在嘗試將過濾器(如Instagram的過濾器)應用於現有視頻。使用GLSurfaceView呈現視頻
我使用GLSurfaceView來顯示視頻幀,並希望通過對傳入幀應用特定的過濾器來渲染每個幀的onDrawFrame()。
但在裏面onDrawFrame()我怎麼能得到傳入的幀?
謝謝。
我正在嘗試將過濾器(如Instagram的過濾器)應用於現有視頻。使用GLSurfaceView呈現視頻
我使用GLSurfaceView來顯示視頻幀,並希望通過對傳入幀應用特定的過濾器來渲染每個幀的onDrawFrame()。
但在裏面onDrawFrame()我怎麼能得到傳入的幀?
謝謝。
這取決於您希望過濾器如何工作。
如果您希望OpenGL ES修改像素,可以使用片段着色器like this進行過濾。
如果您只是想將靜態圖像疊加在視頻幀的頂部,您可以將幀播放到SurfaceTexture中,然後渲染與位圖混合的幀(再次使用GLES)。
Grafika有各種例子; 「來自相機的紋理」活動可能是一個很好的起點。 Grafika中的其他活動如果要保存輸出(儘管在Android 5.x中,您可以使用MediaRecorder代替),它將演示如何使用MediaCodec記錄GLES渲染。
FWIW,我會推薦使用普通的SurfaceView,而不是GLSurfaceView,因爲EGL管理可能會有點痛苦。
謝謝。我將改變即將到來的幀的像素。我會看看你指出的。至於GLSurfaceView,我聽說它提供了更簡單的方法來使用OpenGL ES,但SurfaceView很難使用。真的嗎? – user2326258
GLSurfaceView是SurfaceView的包裝。它處理EGL設置並管理渲染器線程。對於一個簡單的GLES應用程序,很高興爲您完成這些工作,但如果您操縱圖像並錄製它們,它有時會妨礙您的工作。 – fadden
感謝您的回答。 – user2326258