How to realize glsurfaceview playback video code
This article will give you a detailed explanation on how to achieve glsurfaceview video code. The editor thinks it is very practical, so I share it with you for reference. I hope you can get something after reading this article.
The whole process is to create a GLSurfaceView to load the video, set the renderer in GLSurfaceView, and customize the renderer. The main drawing process is this, in which there are three main methods: onSurfaceCreated (), onSurfaceChanged (), and onDrawFrame ().
Glsurfaceview playback video code
The following code is the code for initializing the shader. As for the code in the shader, you need to know the shader language.
StringvertexShader=ShaderUtils.readRawTextFile (context,R.raw.vetext_sharder)
StringfragmentShader=ShaderUtils.readRawTextFile (context,R.raw.fragment_sharder)
ProgramId=ShaderUtils.createProgram (vertexShader,fragmentShader)
APositionLocation=GLES20.glGetAttribLocation (programId, "aPosition")
UMatrixLocation=GLES20.glGetUniformLocation (programId, "uMatrix")
USTMMatrixHandle=GLES20.glGetUniformLocation (programId, "uSTMatrix")
UTextureSamplerLocation=GLES20.glGetUniformLocation (programId, "sTexture")
ATextureCoordLocation=GLES20.glGetAttribLocation (programId, "aTexCoord")
This string of code binds the texture and sets mediaplayer to associate each frame as a texture.
Glsurfaceview playback video format
TextureId=textures [0]
GLES20.glBindTexture (GLES11Ext.GL_TEXTURE_EXTERNAL_OES,textureId)
ShaderUtils.checkGlError ("glBindTexturemTextureID")
/ * what is the use of GLES11Ext.GL_TEXTURE_EXTERNAL_OES?
It was mentioned earlier that the output format of video decoding is YUV (YUV420p, should be), so the function of this extended texture is to realize the automatic conversion from YUV format to RGB.
This is the end of this article on "how to achieve glsurfaceview video code". I hope the above content can be of some help to you, so that you can learn more knowledge. if you think the article is good, please share it out for more people to see.