花了一些时间后,最好问一下.谢谢你的帮助,伙计们!
题
上下文
a)Google TV(LG G2 2012设备)是Android 3.2设备,仅支持SDK(无NDK)
b)从相机到SurfaceTexture很容易渲染,但是如何在Android 3.x中将视频渲染到SurfaceTexture?有关相机解决方案,请参阅下文
c)我已经将视频帧渲染到GLView/GLRenderer,但我没有抓取帧以通过GLSL更改它.似乎没有用.但我需要可访问的GLES/GLSL纹理和视频数据进行视频处理:
MainActivity类:
public void onCreate(Bundle state) {
super.onCreate(state);
m_View = new GLSimpleView(this);
setContentView(m_View);
m_Holder = m_View.getHolder();
m_Holder.addCallback(this);
m_Holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
Run Code Online (Sandbox Code Playgroud)
GLSimpleView类:
public GLSimpleView(Context context) {
super(context);
m_Renderer = new GLTextureRenderer(context);
this.setRenderer(m_Renderer);
}
Run Code Online (Sandbox Code Playgroud)
GLTextureRender类:
int[] textures = new int[1];
GLES20.glGenTextures(1, textures, 0);
m_SurfaceTexture = textures[0];
GLES20.glBindTexture(GL_TEXTURE_EXTERNAL_OES, mTextureID);
GLES20.glTexParameterf(GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST);
GLES20.glTexParameterf(GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR);
GLES20.glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_CLAMP_TO_EDGE);
GLES20.glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_CLAMP_TO_EDGE);
m_Surface = new SurfaceTexture(m_SurfaceTexture);
m_Surface.setOnFrameAvailableListener(this);
// THIS ONE DOESN'T WORK WITH ANDROID …Run Code Online (Sandbox Code Playgroud)