我想运行一个可以通过进程播放音乐的脚本。下面的代码是我的代码的精简版本,但它足以复制问题。如果我调用normal()
程序,我会听到音乐,所以我知道程序是正确的,并且所有内容都已正确连接,但是,如果我使用多处理调用normal()
则没有声音...它运行{{1但仍然没有音频 ...
有什么建议吗? 谢谢!
normal()
答案 0 :(得分:1)
以下代码对我有用:
设置多处理启动方法以生成。
import pygame, time
import multiprocessing as mp
localtime = time.asctime( time.localtime(time.time()) )
pygame.init()
cs = 0
def normal( cs ):
# main loop
try:
if cs == 1:
while cs == 1:
print(" Starting normal function")
pygame.mixer.music.load('/home/sumit/qt/audio.wav')
pygame.mixer.music.play()
time.sleep(20)
pygame.mixer.music.stop()
#return;
except KeyboardInterrupt:
print("Quit")
if __name__ == '__main__':
try:
mp.set_start_method('spawn')
print(" Starting music")
# play here
cs = 1
p2 = mp.Process(target=normal, args=(cs,))
p2.start()
p2.join()
p2.terminate()
#normal( cs )
except KeyboardInterrupt:
print("Quit")
# End script
答案 1 :(得分:0)
试试这个:
pygame.mixer.music.load('/home/user/scripts/music.mp3')
pygame.mixer.music.play(-1,0) # add this args
sleep(20) #remove this line
mixer.music.stop() #remove this line
添加pygame.mixer.music.play(-1,0)
表示音乐将循环播放,直到您退出游戏,例如
尝试删除sleep(20)
和mixer.music.stop()
。
同时检查您是否正在播放44.1kHz
MP3,默认22050
频率有效,但48kHz
个mp3播放速度低于一半 - 48000
或{{ 1}}然后工作。
或者根据采样率尝试这种方法:
24000
或尝试this。