使用pygame

时间:2018-02-01 06:14:23

标签: python-3.x pygame

我有两个长度完全相同的mp3文件,音乐排列非常好。预期的效果是,当按下按钮时,歌曲播放从一首歌曲切换到另一首歌曲。我的实现如下:

import pygame
import sys
framerate = 30
from mutagen.mp3 import MP3
audio = MP3("foo.mp3")
songleng = audio.info.length*1000
songpos = 0
pygame.mixer.pre_init(44100, -16, 1, 512)
pygame.init()
clock = pygame.time.Clock()
size = [10, 10]
screen = pygame.display.set_mode(size)
char = 'foo'
pygame.mixer.music.load('foo.mp3')
pygame.mixer.music.play(-1)

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.display.quit()
            sys.exit()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_RETURN:
                songpos += pygame.mixer.music.get_pos()%songleng
                pygame.mixer.music.stop()
                print(songpos)
                if char == 'bar':
                    pygame.mixer.music.load('foo.mp3')
                    char = 'foo'
                else:
                    pygame.mixer.music.load('bar.mp3')
                    char = 'bar'
                try:
                    pygame.mixer.music.play(-1, songpos/1000)
                except Exception as e:
                    print(str(e))
                print(pygame.mixer.music.get_pos())
        pygame.display.flip()
        clock.tick(framerate)

现在,虽然这似乎在某些时候有效,但有时音频变得非常水,有时整个事情都会挂起,而不是响应键盘中断。很少,我遇到了分段错误。 Pdb每次给我一个不同的错误。我尝试过舍入歌曲,这似乎没什么帮助,而且我试过调用pygame.mixer.music.set_pos(),它具有相同的效果。我还要提一下,mp3频率44100是正确的。

我还没有在任何其他计算机上试过它,所以如果这对您的系统起作用,那么这将是解决问题的第一步。我已经安装了非常干净的Ubuntu 16.04.3。

0 个答案:

没有答案