Python 3.x 在PyGame2中播放视频

Python 3.x 在PyGame2中播放视频,python-3.x,pygame,Python 3.x,Pygame,PyGame1.x有一个电影模块,使播放电影变得非常简单。互联网上充斥着各种各样的答案 但是,我使用的是PyGame2,似乎电影模块已被删除。或者可能只是还没有实施?我在网上找不到它的参考,也找不到任何例子 我发现pygame.Overlay与pymedia一起使用的可能性很大,但pymedia似乎没有在Python3上运行 我是Python生态系统的新手,不知道所有的细节和惯用工具。我希望有人能给我指出正确的方向。谢谢大家! 多亏了现场的工作人员,以及在子流程中使用FFMPEG,我有了一个可行

PyGame1.x有一个电影模块,使播放电影变得非常简单。互联网上充斥着各种各样的答案

但是,我使用的是PyGame2,似乎电影模块已被删除。或者可能只是还没有实施?我在网上找不到它的参考,也找不到任何例子

我发现pygame.Overlay与pymedia一起使用的可能性很大,但pymedia似乎没有在Python3上运行


我是Python生态系统的新手,不知道所有的细节和惯用工具。我希望有人能给我指出正确的方向。谢谢大家!

多亏了现场的工作人员,以及在子流程中使用FFMPEG,我有了一个可行的解决方案。希望这将有助于某人在未来

导入pygame
从lib.constants导入屏幕宽度、屏幕高度
从ViewController.Base导入BaseView
将子进程作为sp导入
FFMPEG_BIN=“FFMPEG”
每帧字节数=屏幕宽度*屏幕高度*3
类AnimationFullScreenView(基本视图):
定义初始化(自):
超级(动画全屏视图,自我)。\uu初始化
命令=[
吴斌,
“-日志级别”、“安静”,
“-i”,“animations/_BasicBoot.mp4”,
“-f”、“image2pipe”,
“-pix_fmt”,“rgb24”,
“-vcodec”、“rawvideo”和“-”
]
self.proc=sp.Popen(命令,stdout=sp.PIPE,bufsize=BYTES\u/帧*2)
#draw()将每帧运行一次
def牵引(自):
raw\u image=self.proc.stdout.read(每帧字节数)
image=pygame.image.frombuffer(原始图像,(屏幕宽度,屏幕高度),'RGB')
self.proc.stdout.flush()
自我冲浪blit(图像,(0,0))

哇,这真是一个有趣的方法。结果是PyGame方面的速度慢吗?我想知道
ffmpeg
是否可以将视频解码到特定的大小,然后它可以利用视频硬件来加快速度,并避免PyGame重新调整大小,等等。我还不知道。这是一个独特的小项目,只需在一个显示器上运行,且速度仅为12fps。我正在做一些改进,我可以预先注册所有视频剪辑,并将它们导入临时文件,然后使用seek/read播放它们。子流程文档警告不要在其标准输出上使用
read
,以避免死锁问题。到目前为止,它是可行的。嗯,您可以预先计算后续帧之间的“差分块”,并在新流中存储一个(x,y,位图)。我想这让它看起来像一部动画片。谢谢。我有点不适应这里的环境。我没有做过大量的非web GUI编程,基本上也没有任何游戏开发。如果你有任何资源可以告诉我如何计算不同的块,我会把它们放在我的后口袋里,以备将来需要优化。