這篇文章將為大家詳細(xì)講解有關(guān)如何實(shí)現(xiàn)glsurfaceview播放視頻代碼,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
成都創(chuàng)新互聯(lián)是一家專(zhuān)業(yè)提供江南企業(yè)網(wǎng)站建設(shè),專(zhuān)注與成都做網(wǎng)站、成都網(wǎng)站制作、成都h5網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為江南眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。整個(gè)流程就是,創(chuàng)建一個(gè)GLSurfaceView用來(lái)裝載視頻,GLSurfaceView中設(shè)置renderer,自己自定義renderer,主要繪制流程都在這個(gè),里面,主要有三個(gè)方法onSurfaceCreated(),onSurfaceChanged(),onDrawFrame()。
glsurfaceview播放視頻代碼
下面一段代碼是初始化著色器代碼,至于著色器里面的代碼需要了解著色器語(yǔ)言
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");
這一串代碼是綁定紋理,設(shè)置mediaplayer每一幀作為紋理關(guān)聯(lián)起來(lái)
glsurfaceview播放視頻格式
textureId=textures[0];
GLES20.glBindTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES,textureId);
ShaderUtils.checkGlError("glBindTexturemTextureID");
/*GLES11Ext.GL_TEXTURE_EXTERNAL_OES的用處?
之前提到視頻解碼的輸出格式是YUV的(YUV420p,應(yīng)該是),那么這個(gè)擴(kuò)展紋理的作用就是實(shí)現(xiàn)YUV格式到RGB的自動(dòng)轉(zhuǎn)化,
關(guān)于“如何實(shí)現(xiàn)glsurfaceview播放視頻代碼”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。