我已经编写了一个应用程序,它基本上使用这里的许多帖子中的代码将视频呈现为纹理。我猜原版来自这里找到的一些nVidia样本(VideoSurfaceView):Using SurfaceTexture in Android
此示例在移动设备和平板电脑上运行良好 - 均基于Tegra。然后我在基于MALI 400的Android系统(Minix Neo5)上尝试了相同的代码,我可以看到视频播放,但我主要是黑屏,上面有一些垃圾(只有3或4行)
我尝试使用OpenGL ES跟踪器来检查从SurfaceTexture复制到纹理本身的内容,但看起来Tracer无法正确显示(在tegra系统上和tegra设备上都没有。)我没有得到任何OpenGL错误,也没有任何警告。看起来一切正常。
是否还有其他工具可以告诉我如何将任何内容复制到TEXTURE_EXTERNAL?所有TEXTURE_2D都可以在跟踪器上找到。
我在MALI系统上注意到的一件奇怪的事情是它根本无法播放高清视频。我的视频1280x720报告了他们正在使用SoftwareRenderer的debuger。也许这就是为什么框架没有正确复制到将用作纹理的OGL_IMAGE。
我想我需要更深入地了解幕后发生的事情,但我预计会出现错误,告诉系统无法做到这一点,或者它应该只是工作,即使性能很差。也许这是Android的修改版本,媒体播放器代码刚刚破解......
答案 0 :(得分:0)
感谢您的发帖!这正是我在其他两个Android设备(Mali-400 MP)上观察到的,我不知道为什么会这样。看起来视频是在后台播放的。 我将以下行添加到我的GLSurfaceView类的构造函数中:
setEGLConfigChooser(8,8,8,8,0,0);
getHolder().setFormat(PixelFormat.RGBA_8888);
然后,视频在我的OpenGL场景“后面”可见。两个设备声称支持“GL_OES_EGL_image_external”扩展。