python - 在Python 3中使用pygame以特定分辨率播放电影

标签 python python-3.x video pygame video-processing

我目前正在 pygame (Python 3) 上制作一个游戏,我希望在开始时播放一个小电影介绍。我在 pygame.movi​​e 模块上遇到了几个问题,类似问题的解决方案似乎对我不起作用。有没有一种简单的方法可以在现有屏幕上播放 MPG 电影?

我尝试了以下代码:

import pygame

pygame.init()
movie = pygame.movie.Movie('intro.mpg')
screen = pygame.display.set_mode(movie.get_size())
movie_screen = pygame.Surface(movie.get_size()).convert()

movie.set_display(movie_screen)
movie.play()

但这使Python崩溃了。当我尝试时

import pygame

FPS = 60

pygame.init()
clock = pygame.time.Clock()
movie = pygame.movie.Movie('intro.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()

出现了一个屏幕,并且由于某种原因充满了绿色方 block 。我做错了什么?

其次,我的电影分辨率是480*360,而我玩游戏的屏幕是640*480。我想让视频占据整个屏幕 - 有办法做到这一点吗?

最佳答案

您可以在 Surface 和 Screen 中心运行视频

pygame.init()

clock = pygame.time.Clock()
FPS = 20
appActive = True
movie = pygame.movie.Movie('movie.mpg')

#full screen display
mainDisplay = pygame.display.set_mode((0, 0), pygame.FULLSCREEN)
offscreen = pygame.Surface(movie.get_size())
movie.set_display(offscreen)

center = offscreen.get_rect()
center.center = mainDisplay.get_rect().center

while appActive:
    mainDisplay.blit(offscreen, center)
    pygame.display.update()
    clock.tick(FPS)

你的代码看起来没问题,我自己尝试了一下,成功了。我注意到 pygame 在屏幕上渲染电影时非常模糊。如果屏幕尺寸不适合电影,那么它就会崩溃。到目前为止,您在控制电影尺寸方面运气好吗?

关于python - 在Python 3中使用pygame以特定分辨率播放电影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34936847/

相关文章:

python - 使用 Pandas 读取 GPS RINEX 数据

python - 在 CPython 中编译不受信任的代码是否安全?

video - 将 YUV420 帧编码为 VP9

python - 比较前一个索引处的列表

python - 计算组内差异

python - 齐柏林飞艇 : how to read a DataFrame with sql

Android:在 Opengl 应用程序中播放视频的最佳方式

windows - FFmpeg : How to apply a filter on custom frames and place output of them between mainframes

python - 在查询集中查找最常见的字段值

python - 继续声明中的其他部分如何工作?