在两个视图上呈现Android MediaCodec输出,以实现VR Headset兼容性

时间:2015-06-23 10:54:49

标签: android mediacodec textureview virtual-reality

到目前为止我所知道的是我需要使用可以同时在两个TextureView上渲染的SurfaceTexture。 所以它将是: MediaCodec - > SurfaceTexture - > 2x TextureViews

但是如何在编程方面使用SurfaceTexture在MediaCodec中使用?据我所知,为每个TextureView创建了一个新的SurfaceTexture,所以如果我的活动中有两个TextureViews,我将得到两个TextureViews!?多数民众赞成......;)

或者有没有其他方法将MediaCodec输出渲染到屏幕两次?

1 个答案:

答案 0 :(得分:3)

你真的需要两个TextureViews,还是仅仅是为了方便?

例如,您可以使用单个SurfaceView或TextureView覆盖整个屏幕,然后使用GLES在左侧和右侧渲染。使用SurfaceTexture中的视频输出,您可以随意渲染它。 Grafika中的“相机纹理”活动演示了从视频源处理图像的各种方法。

如果你真的想要两个TextureView,你可以拥有它们。对SurfaceTexture和两个TextureViews使用单个EGL上下文,并且在渲染时只需在eglMakeCurrent()之间切换EGL表面。

无论如何,你应该创建自己的SurfaceTexture来接收视频,而不是使用来自TextureView的视频 - 参见例如this bit of code