Pygame - 玩电影


Pygame 在其最新版本中停止了对视频文件的支持。然而,在Python 2.7发行版的早期版本中,它仍然可以使用。本节使用了 Pygame 1.9.2 和 Python 2.7.18。

pygame.movi​​e 模块支持从基本编码的 MPEG-1 视频文件播放视频和音频。电影播放发生在后台线程中,这使得播放易于管理。如果要播放电影的声音,则必须未初始化用于加载和播放声音模块的 pygame.mixerpygame 模块。

首先通过以下语法获取 Movie 对象 -

movie = pygame.movie.Movie('sample.mpg')

Movie 类提供以下方法来控制播放。

pygame.电影.电影.play 开始播放电影
pygame.movi​​e.Movie.stop 停止电影播放
pygame.movi​​e.Movie.pause 暂时停止和恢复播放
pygame.movi​​e.Movie.skip 提前影片播放位置
pygame.movi​​e.Movie.rewind 重新开始电影播放
pygame.movi​​e.Movie.get_time 获取当前视频播放时间
pygame.movi​​e.Movie.get_length 电影的总长度(以秒为单位)
pygame.movi​​e.Movie.get_size 获取视频的分辨率
pygame.movi​​e.Movie.has_audio 检查电影文件是否包含音频
pygame.movi​​e.Movie.set_volume 设置音频播放音量
pygame.movi​​e.Movie.set_display 设置视频目标Surface

以下代码在 Pygame 显示窗口上播放 .MPG 文件。-

import pygame

FPS = 60
pygame.init()
clock = pygame.time.Clock()
movie = pygame.movie.Movie('sample_640x360.mpg')
screen = pygame.display.set_mode(movie.get_size())
movie_screen = pygame.Surface(movie.get_size()).convert()

movie.set_display(movie_screen)
movie.play()

playing = True
while playing:
   for event in pygame.event.get():
      if event.type == pygame.QUIT:
         movie.stop()
         playing = False

   screen.blit(movie_screen,(0,0))
   pygame.display.update()
   clock.tick(FPS)
pygame.quit()