使用pygame +多处理时的音乐问题

时间:2015-10-27 16:43:56

标签: python pygame multiprocessing

我想运行一个可以通过进程播放音乐的脚本。下面的代码是我的代码的精简版本,但它足以复制问题。如果我调用normal()程序,我会听到音乐,所以我知道程序是正确的,并且所有内容都已正确连接,但是,如果我使用多处理调用normal()则没有声音...它运行{{1但仍然没有音频 ...

有什么建议吗? 谢谢!

normal()

2 个答案:

答案 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