我需要关于我正在处理的应用程序的帮助。该应用程序必须有一个自定义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) {
}
简而言之,我希望用户能够通过我的相机应用程序来记录视频,并带有一些道具在这里和那里。