Hi Ted, Thanks for these ideas! I'll try those settings for ffmpeg, but yeah, I already learned that the movie module isn't in Pygame for Mac.
I'd love an example of the pipe to ffmpeg, either here or off list via my email br...@missionpinball.com. I assume that you get the pixels for a frame from ffmpeg and then blit them to a pygame surface manually? Thanks! Brian On Fri, Feb 13, 2015 at 4:27 PM, Ted Hunt <ted.h...@clear.net.nz> wrote: > Hi Brian, > > I had a similar problem to you (wrote an app thinking I'd be able to play > video, only to later find problems). I did manage to get the movie module > in pygame to play HD video. Here's the ffmpeg command I used to encode the > video :- > > ffmpeg -r 24 -f image2 -i SD%%04d.png -r 24 -g 18 -s 1920x1080 -vcodec > mpeg1video -b:v 6000k -minrate 6000K -maxrate 6000k -bufsize 3276800 -intra > SD.mpg > > I think the trick is using a fixed bit rate. If while encoding ffmpeg > reports a buffer underflow, then you'll need to increase the bit rate > (always keep -b:v, -minrate and -maxrate the same). > > Another problem which you may or may not discover is that not all pygame > versions include the movie module. And it's possible that the movie module > will be dropped in future versions. Because of this I decided not to use > the movie module and instead I open a pipe to ffmpeg to decode my videos. > The disadvantage with this is that ffmpeg has to be available to your app. > The advantage is that you can use any encoding method ffmpeg supports. If > you need an example of opening a pipe to ffmpeg, just let me know. > > Cheers, > > Ted. > > > > On 14/02/2015 6:41 a.m., Brian Madden wrote: > > Hi Everyone, > > I have a Python app that's pretty much ready to go. Problem is that we > need to be able to play videos. To be honest I never really looked too deep > into Pygame's video support. I knew from the docs that it had to be MPEG-1 > and that if you wanted audio then it had to have exclusive control of > Pygame.media, so I kind of thought, "Ok, that's fine, I'll deal with all > that later." > > So now it's "later" and I'm dealing with it. :) > > Problem is that we cannot get videos converted to MPEG-1 in a way that > works reliably. We've gone through all the posts on this list and read a > lot. Sometimes the videos play, sometimes not, sometimes we get SDL errors, > sometimes we get garbage on the screen.. It's really kind of a mess. > > So I've started looking into options for non-MPEG1 videos and I wonder > if anyone has successfully done anything? > > I found a blog post where a guy wrote a simple app that uses Pyglet to > play the video and then for each frame it converts the Pyglet video frame > to a Pyglet texture (kind of like Pyglet's version of a Surface), converts > the pixels to a ctype, converts the ctype to the format Pygame can use, > converts it to an image, then blits it to the Pygame window surface. That > technically works but it's far too slow.. for hi-def videos we're only > getting about 10fps. > > So I wonder if there are any other alternatives? Like can we install > SDL2 and use PySDL2 to play the video and somehow convert that to a Pygame > surface? (I have no idea if surfaces between SDL1.2 and SDL2 are > compatible, or if so if it would be possible to get them into Pygame.) > > Or are there any other crazy ideas? > > To be honest if we can't figure this out then I think we're going to > have to go with something other than Pygame, which would be a lot of work, > but I don't know of any other alternatives? Unfortunately I don't know C or > C++ so I'm afraid I'm not much help in terms of contributing to Pygame. > > Has anyone successfully taken a Python project based on Pygame and > converted it to PySDL2? From what I've read it seems like there are many > similarities since they're both SDL, but I don't know how much "other" work > Pygame is doing, and whether if I recreated any of that in Python it will > be fast enough? > > Anyway, sorry I'm a bit all over the place. I wonder if anyone has any > thoughts to share? > > Thanks, > Brian > > -- > *Brian Madden* > Mission Pinball (blog <http://missionpinball.com> | twitter > <https://twitter.com/missionpinball> | MPF software framework > <http://missionpinball.com/framework> | sample games > <https://missionpinball.com/blog/category/big-shot-em-conversion/>) > > > > > ------------------------------ > <http://www.avast.com/> > > This email is free from viruses and malware because avast! Antivirus > <http://www.avast.com/> protection is active. > > -- *Brian Madden* Mission Pinball (blog <http://missionpinball.com> | twitter <https://twitter.com/missionpinball> | MPF software framework <http://missionpinball.com/framework> | sample games <https://missionpinball.com/blog/category/big-shot-em-conversion/>)