我使用SurfaceTexture在SurfaceView上使用OpenGL ES 2.0显示视频。用于显示视频的OpenGL上下文链接到SurfaceView。它工作正常,但是当我在播放视频时退出活动并返回时,SurfaceView已被破坏,因此我必须重新创建一个OpenGL上下文。这样做,视频就无法播放了。
surfaceTexture.updateTexImage();
这会引发IllegalStateException,因为它调用了一个新的上下文,我想?我之前也在日志中看到了这一点:
E/GLConsumer: [unnamed-13710-14] checkAndUpdateEglState: invalid current EGLContext
文档说我可以使用
surfaceTexture.detachFromGLContext();
在销毁opengl上下文之前。然后:
surfaceTexture.attachToGLContext(mTextureID);
将其附加到新上下文(在新上下文线程上) 但是,如果我这样做,我有这个错误:
attachToContext: GLConsumer is already attached to a context
但它被摧毁了..
所以我的问题是,有没有办法继续播放视频?或者是我重新启动视频的唯一选择?
提前致谢!