我的python脚本中的pygame视频声音有问题
在循环之前我将其初始化为:
pygame.init()
pygame.mixer.quit()
while while循环传感器可以触发视频播放:
pygame.display.init()
movie = pygame.movie.Movie(path)
if movie.has_video():
screen = pygame.display.set_mode(movie.get_size())
pygame.display.update()
movie.set_display(screen)
movie.set_volume(0.99)
movie.play()
while movie.get_busy():
time.sleep(.100)
pygame.display.quit()
第一次播放电影时,声音可用。第二次没有声音,第三次声音再次正常工作......依此类推。
如果我在pygame.display.init之后用pygame.mixer.get_init检查,如果混合器初始化,则返回false。
如果我把pygame.mixer.quit()放在循环中,视频会变得非常慢(也没有声音)并且稍微完全停止。
答案 0 :(得分:0)
可能更多的是解决方法而不是答案:
我在播放多部电影时让pygame.movie继续播放声音的唯一方法是:
在创建我的第一部电影之前,我致电pygame.mixer.quit()
每当我想要播放新电影时,我都会拨打movie = pygame.movie.Movie('SOMEOTHERVIDEO.MPG')
行2次。
很奇怪,但对我来说,这是我让它运作的唯一方式。这是在win7 / python3
我发现,如果我从movie=
的2次调用中的第一次删除pygame.movie.Movie('SOMENEWVIDEO.MPG')
,此解决方法就会停止工作,这一点特别奇怪。
无论如何,这里有一些适合我的代码:
import pygame
FPS = 60
pygame.init()
clock = pygame.time.Clock()
pygame.mixer.quit()
movie = pygame.movie.Movie('SOMEVIDEO.mpg')
screen = pygame.display.set_mode(movie.get_size())
movie_screen = pygame.Surface(movie.get_size()).convert()
movie.set_display(movie_screen)
movie.play()
cnt = 0
playing = True
while playing:
cnt+=1
if cnt>=500:
cnt=0
movie.stop()
movie = pygame.movie.Movie('SOMEOTHERVIDEO.mpg')
movie = pygame.movie.Movie('SOMEOTHERVIDEO.mpg')
movie_screen = pygame.Surface(movie.get_size()).convert()
movie.set_display(movie_screen)
movie.play()
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()