我有两个长度完全相同的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。