2016-12-05 63 views
0

嘗試在SurfaceTexture中顯示之前更改像素。Android Camera2在SurfaceTexture中預處理和寫入幀

表面紋理上OnFrameAvailableListener簽署:

@Override 
public void onFrameAvailable(SurfaceTexture surfaceTexture) 
{ 
    ... 
} 

據我瞭解這個方法並希望改變的像素,但如何? 非常感謝您的任何答案和意見!

回答

1

您是如何從SurfaceTexture中繪製輸出以開始的?您是僅使用TextureView類,還是使用實際的GLSurfaceView或類似的OpenGL ES繪圖調用來繪製預覽?

如果您使用的是TextureView,那麼您就無能爲力 - 它會照顧到繪圖,而且無法在中間注入自己。

使用GLSurfaceView,基本上可以編寫自己的OpenGL程序,它可以通過片段着色器等進行各種圖像處理。但是,您需要了解OpenGL編程的基礎知識,或者至少找到一個設置所有樣板的示例。

如果您使用的是camera2,您也可以考慮使用RenderScript進行處理。官方的Google示例應用程序HdrViewfinder使用RS在預覽上進行實時處理。