2011-09-29 126 views
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") 

回答

0

我也遇到同樣的問題,你可以得到的位圖和使用martix類來調整位圖。