ここでは簡単な例を示します。私はこのコードを持っています:パイゲームミキサー:マルチプロセッシング時にオーディオデバイスが使用できない、またはサウンドがありません
from pygame import mixer
def say():
mixer.init()
mixer.music.load('/home/orif/Downloads/english.wav')
mixer.music.play()
while mixer.music.get_busy():
time.sleep(0.2)
これはいくつかの警告を表示しますが、完全に機能します。警告:
ALSA LIBのpcm_dsnoop.c:606:(snd_pcm_dsnoop_open)スレーブ ALSAのLIBのpcm_dmix.cを開くことができません:1029:ALSA LIB pcm.cをスレーブを開くことができない(snd_pcm_dmix_open):2266 :(snd_pcm_open_noupdate)未知のPCM cards.pcm.rear ALSA libにpcm.c:2266:(snd_pcm_open_noupdate)不明PCM cards.pcm.center_lfe ALSA libにはpcm.c:2266:(snd_pcm_open_noupdate) 不明のPCM cards.pcm.side ALSA libに pcm_dmix.c:1029:(snd_pcm_dmix_open)スレーブを開くことができません
それそれはないだろう、子プロセスで:
def test():
talk_process = Process(target=say)
talk_process.start()
print 'waiting for the process...'
talk_process.join()
print 'done'
それは、その後、同じ警告を出力します。
waiting for the process...
Process Process-1:
Traceback (most recent call last):
File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run
self._target(*self._args, **self._kwargs)
File "/home/orif/Projects/example.py", line 178, in say
mixer.init()
error: No available audio device
done
私は同じですが、スレッドで操作を行う場合は、それがうまく動作します。私は書かれたものを試しましたhereとhere。前者のリンクでは、このコメントの解決策が私を助けてくれました。
mixer.init()
talk_process.start()
しかし、今起こって、どのようにそれを解決するためには何の音が再生されない、と待機ループ
while mixer.music.get_busy()
は無限
です:私はちょうどサブプロセスを実行する前に、ミキサーを初期化?