demo: https://github.com/qianfeng0/MediaRender
SurfaceView与GLSurfaceView
- MediaPlayer+SurfaceView的组合能最简单实现视频播放,通过setDisplay(SurfaceHolder sh)把Surface设置给player,player解码后直接渲染到surface上,但无法实现后处理效果。
- MediaPlayer+GLSurfaceView组合能通过opengl实现对player图像帧的后处理。
MediaPlayer渲染与GL关联
通过下面的代码建立Surface - SurfaceTexture - gltexture之间的关联
Surface设置给Player,当有图像渲染时,可以拿到图像的texture
final int[] args = new int[1];
GLES30.glGenTextures(1, args, 0); //生成纹理textureId
textureId = args[0];
preViewSurface = new SurfaceTexture(textureId)