Android 两个视图使用相同的SurfaceTexture

Android 两个视图使用相同的SurfaceTexture,android,android-mediaplayer,android-textureview,Android,Android Mediaplayer,Android Textureview,是否可以对两个视图使用相同的surfacetexture?如果是,怎么做? 我使用mediaplayer播放视频,我想同时在两个不同的视图上播放相同的视频 我尝试创建SurfaceTexture,然后将此表面纹理设置为两个视图,但都不起作用 public int createTextureObject() { int[] textures = new int[1]; GLES20.glGenTextures(1, textures, 0);

是否可以对两个视图使用相同的surfacetexture?如果是,怎么做? 我使用mediaplayer播放视频,我想同时在两个不同的视图上播放相同的视频

我尝试创建SurfaceTexture,然后将此表面纹理设置为两个视图,但都不起作用

   public int createTextureObject() {
        int[] textures = new int[1];
        GLES20.glGenTextures(1, textures, 0);

        int texId = textures[0];
        GLES20.glBindTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, texId);

        GLES20.glTexParameterf(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_MIN_FILTER,
                GLES20.GL_NEAREST);
        GLES20.glTexParameterf(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_MAG_FILTER,
                GLES20.GL_LINEAR);
        GLES20.glTexParameteri(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_WRAP_S,
                GLES20.GL_CLAMP_TO_EDGE);
        GLES20.glTexParameteri(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_WRAP_T,
                GLES20.GL_CLAMP_TO_EDGE);

        return texId;
    }

SurfaceTexture st = new SurfaceTexture(createTextureObject());
textureView1.setSurfaceTexture(st);
textureView2.setSurfaceTexture(st); 
mMediaPlayer.setSurface(new Surface(st));

它在一个或另一个视图上随机工作,但不能同时在两个视图上工作。

我认为TextureView不支持共享的SurfaceTexture。我不知道有什么会阻止它成为可能,但是
onFrameAvailable()
回调只能通知一个对象

(您可以在第二个实例中从第一个实例手动调用回调,但这似乎是自找麻烦。)

一种可行的方法是像现在这样创建SurfaceTexture,并将视频帧发送给它,但提供一个
onFrameAvailable()
侦听器,使用OpenGL ES将视频帧渲染到两个TextureView


这方面的各种示例可以在中找到,例如,“连续捕获”在SurfacetTexture上接收摄像头输入,然后将其渲染两次(一次渲染到显示器,一次渲染到视频编码器)。

谢谢,接受此答案,因为它至少为如何操作提供了建议。