2
我試圖渲染AV幀抓取和轉換從使用Gstreamer的MPEG4視頻到Android(2.2)-opengl紋理。我幾乎筋疲力盡谷歌,沒有找到答案。Gstreamer視頻到opengl紋理
基本上,我使用Gstreamer uridecodebin來解碼幀,然後將幀轉換爲RGB,然後使用glTexSubImage2D()
從中創建一個openGL紋理,但似乎無法獲得任何東西。紋理越來越當我從Gstreamer獲得解碼數據(RGB)時就會着色。
我得到的視頻尺寸爲320 * 256
和我的紋理尺寸爲512 * 256
&我使用glDrawTexiOES(0,0,videowidth,videoheight)
,我沒有得到有關OpenGL的任何錯誤,但質地是空白的(不同顏色的幀),雖然音頻工作正常。
這裏是我的代碼:本地的OnDraw:
if (theGStPixelBuffer != 0) {
glBindTexture (GL_TEXTURE_2D, s_texture);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glPixelStorei(GL_UNPACK_ALIGNMENT, 2);
glTexSubImage2D (GL_TEXTURE_2D, 0, 0, 0, theTexWidth,
theTexHeight, GL_RGB, GL_UNSIGNED_BYTE,
GST_BUFFER_DATA(theGStPixelBuffer));
check_gl_error("glTexSubImage2D");
theGStPixelBuffer = 0;
}
glDrawTexiOES(0, 0, 0, theTexWidth, theTexHeight);
check_gl_error("glDrawTexiOES")