Pygame Movie每隔一段时间都没有声音

时间:2014-12-10 10:34:55

标签: python audio video pygame movie

我的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()放在循环中,视频会变得非常慢(也没有声音)并且稍微完全停止。

1 个答案:

答案 0 :(得分:0)

可能更多的是解决方法而不是答案:

我在播放多部电影时让pygame.movi​​e继续播放声音的唯一方法是:

  • 在创建我的第一部电影之前,我致电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()