Ryytikki
Ryytikki

Reputation: 11

Attempting to embed a video in pygame using pyglet

im trying to display a video on a pygame surface using the pyglet library to import, play and then convert the frames into an image. I managed to battle my way through installing avbin but now I'm hitting a type error with my code

def cutscene(window_surface, filename):
player = pyglet.media.Player()
source = pyglet.media.load(filename)
player.queue(source)
player.play()

pygame.display.flip()   

while True:

    window_surface.fill(0)

    player.dispatch_events()

    tex = player.get_texture()
    raw = tex.get_image_data().get_data('RGBA',tex.width*4)
    raw = ctypes.string_at(ctypes.addressof(raw), ctypes.sizeof(raw))
    img = pygame.image.frombuffer(raw, (tex.width, tex.height), 'RGBA')
    window_surface.blit(img, (0,0))

    pygame.display.flip()

when I run, i get the following error

    Traceback (most recent call last):
  File "dino_game.py", line 348, in <module>
    main()
  File "dino_game.py", line 45, in main
    cutscene(window_surface, "Cutscenes/Cutscene1.mov")
  File "dino_game.py", line 68, in cutscene
    raw = tex.get_image_data().get_data('RGBA',tex.width*4)
AttributeError: 'NoneType' object has no attribute 'get_image_data'

Nothing that I do seems to solve it

EDIT: So after testing both this file and the sample files provided by pyglet, it seems that I get this error no matter what filetype I use, could this be an installation error with pyglet or AVbin?

Upvotes: 0

Views: 1790

Answers (1)

Ryytikki
Ryytikki

Reputation: 11

Gave up trying to use pyglet and swapped to VLC where I just have to pass the window ID for the game and it does the rest for me

VLC script: https://wiki.videolan.org/Python_bindings/

Upvotes: 1

Related Questions