glTexSubImage2D

Texture sizes must be powers of 2 (e.g. 512 x 512)

Video data is typically something like 640 x 480 - not powers of 2

glTexSubImage2D allows one to load a portion of a texture

For video textures, create a larger texture (e.g. 1024 x 512), and sub-load the video data into it

  glTexSubImage2D(GL_TEXTURE_2D, 0, xoffset, yoffset,
                  width, height, format, type, pixels)

Texture coordinates will have to use smaller range (not 0 ... 1) -
For a 640 pixel wide video in a 1024 pixel wide texture, S coordinate ranges from 0 to 0.625

Texture transformation matrix can be used to adjust texture coordinates