我需要關於我正在處理的應用程序的幫助。該應用程序必須有一個自定義Camera接口來錄製帶有音頻的視頻,並且必須在TextureView畫布上實時添加一些對象。舊的Camera API已被棄用,所以我必須使用Camera2 API來渲染TextureView上的實時預覽。我的目標是在TextureView Canvas頂部繪製一些對象,可以是一些text/jpg/gif,而相機流在後臺呈現,並且可以使用疊加畫布內容和相機饋送來錄製視頻。如何在TextureView相機流預覽上繪製對象並用對象記錄流?
問題是,我可以在一個透明的覆蓋視圖中繪製自定義內容,但是這是僅僅是用戶的觀看目的。我已經嘗試了幾天的研究,但我無法得到正確的方法來解決我的目的。
我嘗試下面的代碼調用openCamera()方法之後,但我只看到一個矩形畫,但沒有攝像頭預覽:
Canvas canvas = mTextureView.lockCanvas();
Paint myPaint = new Paint();
myPaint.setColor(Color.WHITE);
myPaint.setStrokeWidth(10);
canvas.drawRect(100, 100, 300, 300, myPaint);
mTextureView.unlockCanvasAndPost(canvas);
我也嘗試了定製TextureView類和重寫thevonDrawForeground(帆布畫布)方法,但它不起作用。在TextureView類
的的onDraw()方法是終局的,因此,我不能在這一點上,除了剛剛流攝像頭輸入做任何事情。
/**
* Subclasses of TextureView cannot do their own rendering
* with the {@link Canvas} object.
*
* @param canvas The Canvas to which the View is rendered.
*/
@Override
protected final void onDraw(Canvas canvas) {
}
簡而言之,我希望用戶能夠通過我的相機應用程序來記錄視頻,並帶有一些道具在這裏和那裏。