从交互式python播放mp3音频,但不从bash播放

2024-04-19 14:38:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用pygame模块操作python中的声音文件。 使用交互式python会话可以正常工作,但是相同的代码不会从bash产生任何结果:

交互式python

$ sudo python
Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> from pygame import mixer
>>> mixer.init()
>>> mixer.music.load('zho1ngguo2.mp3')
>>> mixer.music.play()

==>;播放的声音

但是bash什么也没发生:

$ cat  playmp3.py
import pygame
from pygame import mixer
mixer.init()
mixer.music.load('zho1ngguo2.mp3')
mixer.music.play()

$ sudo python  playmp3.py

==>;没有声音

有什么想法吗?你知道吗


Tags: fromimportgtbash声音playinitmusic
1条回答
网友
1楼 · 发布于 2024-04-19 14:38:41

mixer.music.play()只开始播放,它不会阻止python立即退出(从而结束播放)。你得等到这首歌结束。最直接的方法是告诉mixer.music在播放结束时向您发送一个事件并等待它:

import pygame
from pygame import mixer

# to use the event queue, this is required.
pygame.init()

mixer.init()

# or some other event id. This just has to be the same here and below.
mixer.music.set_endevent(pygame.USEREVENT + 1)
mixer.music.load('foo.mp3')
mixer.music.play()

ev = 0

while ev != pygame.USEREVENT + 1:
  ev = pygame.event.wait()

相关问题 更多 >