到目前为止我所知道的是我需要使用可以同时在两个TextureView上渲染的SurfaceTexture。 所以它将是: MediaCodec - > SurfaceTexture - > 2x TextureViews
但是如何在编程方面使用SurfaceTexture在MediaCodec中使用?据我所知,为每个TextureView创建了一个新的SurfaceTexture,所以如果我的活动中有两个TextureViews,我将得到两个TextureViews!?多数民众赞成......;)
或者有没有其他方法将MediaCodec输出渲染到屏幕两次?
答案 0 :(得分:3)
你真的需要两个TextureViews,还是仅仅是为了方便?
例如,您可以使用单个SurfaceView或TextureView覆盖整个屏幕,然后使用GLES在左侧和右侧渲染。使用SurfaceTexture中的视频输出,您可以随意渲染它。 Grafika中的“相机纹理”活动演示了从视频源处理图像的各种方法。如果你真的想要两个TextureView,你可以拥有它们。对SurfaceTexture和两个TextureViews使用单个EGL上下文,并且在渲染时只需在eglMakeCurrent()
之间切换EGL表面。
无论如何,你应该创建自己的SurfaceTexture来接收视频,而不是使用来自TextureView的视频 - 参见例如this bit of code