[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] _movie module build problem in Debian: ffmpeg headers



Update,

Fixed in SVN. Also, the Windows dependency tool chain has been updated for ffmpeg. Ffmpeg svn rev. *23520 was built on Windows XP. This revision even has a working ffplay for Windows. Attached is a small _movie test program that gets a window up and sound playing. No movie though. So the _movie problem on Windows appears to be a Windows event problem.

Lenard
*
Lenard Lindstrom wrote:
Hi,

In Debian Linux the libavcodec, libavformat, etc header subdirectories are all in /usr/include/ffmpeg. This causes problems with config_unix.py, which doesn't find the avformat.h and swscale.h headers. Adding '/include/ffmpeg/libavformat' and '/include/ffmpeg/libswscale' to the subdirectories searched fixes the library search problem...


#!/usr/bin/env python

import pygame
import pygame._movie
from pygame.locals import *

import sys
try:
    from cStringIO import StringIO as BytesIO
except ImportError:
    from io import BytesIO
from pygame.compat import unicode_

QUIT_CHAR = unicode_('q')

usage = """\
python movieplayer.py <movie file>

A simple movie player that plays an MPEG movie in a Pygame window. It showcases
the pygame.movie module. The window adjusts to the size of the movie image. It
is given a boarder to demonstrate that a movie can play autonomously in a sub-
window. Also, the file is copied to a file like object to show that not just
Python files can be used as a movie source.

"""

def main(filepath):
    pygame.init()
    pygame.mixer.quit()

    movie = pygame._movie.Movie(filepath)
    pygame.event.set_allowed((QUIT, KEYDOWN))
    pygame.time.set_timer(USEREVENT, 1000)
    pygame.event.pump()
    movie.play()
    pygame.event.pump()
    while movie.playing:
        evt = pygame.event.wait()
        if evt.type == QUIT:
            break
        if evt.type == KEYDOWN and evt.unicode == QUIT_CHAR:
            break
    if movie.playing:
        movie.stop()
    pygame.time.set_timer(USEREVENT, 0)

if __name__ == '__main__':
    if len(sys.argv) != 2:
        print (usage)
    else:
        main(sys.argv[1])