我正在尝试在python中编写一个程序,供残疾人使用,同时他们使用某些东西作为hometrainer(或MotoMed)。为此,我必须能够显示视频并在需要时将其他信息/图像写入屏幕。此信息取决于其他传感器(包括霍尔效应传感器和可检测痉挛的传感器)。
使用Pygame Movie功能,您可以使用pygame.update()函数逐帧更新屏幕。请参阅:How to load and play a video in pygame但是,我需要运行其他视频格式(Pygame只能播放MPEG-1),因此我正在玩VLC python bindings到render a video in pygame window。
VLC直接将视频渲染到pygame窗口中。为此,您必须为其提供窗口ID:
player.set_xwindow(win_id)
我不需要在窗口上渲染它,而是需要在Pygame表面上渲染它,以便我能够使用pygame更新屏幕并将其他信息写入屏幕。使用pygame Movie函数,它将是
movie_screen = pygame.Surface((x,y)).convert()
movie.set_display(movie_screen)
movie.play()
我注意到VLC绑定中有一个nextframe函数。 pygame是否可以动态获取此帧并将其放在表面上?我想这会很慢,但是我愿意给它一个机会,因为我唯一的猜测就是在python / pygame中获得除MPEG-1以外的视频文件的动态叠加。