【问题标题】:Render Android MediaCodec output on two views for VR Headset compatibility在两个视图上渲染 Android MediaCodec 输出以实现 VR 耳机兼容性
【发布时间】:2015-06-23 10:54:49
【问题描述】:

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

但是如何以编程方式获取 SurfaceTexture 以在 MediaCodec 中使用?据我所知,为每个 TextureView 创建了一个新的 SurfaceTexture,所以如果我的活动中有两个 TextureView,我将得到两个 TextureView!?那是一对多... ;)

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

【问题讨论】:

标签: android android-mediacodec textureview virtual-reality


【解决方案1】:

您实际上需要两个 TextureView,还是只是为了方便?

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

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

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

【讨论】:

  • 不,我不需要两个 TextureView。我唯一需要的是屏幕两侧的 MediaCodec 输出。我认为这将是使用两个 TextureView 实现它的最简单方法。
  • 对不起,我没有让它运行。你能提供一些源代码来用 GLES 渲染左侧和右侧吗!?
猜你喜欢
  • 1970-01-01
  • 2021-06-06
  • 1970-01-01
  • 2015-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-01
  • 1970-01-01
相关资源
最近更新 更多