import pygame
file = 'some.mp3'
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load(file)
pygame.mixer.music.play()
これは、「プロセスは終了コード0で終了しました」を出力しますが、何も再生しません。この問題を解決するにはどうすればよいですか?
再生機能は音楽の再生を開始しますが、すぐに戻ります。その後、プログラムは終了し、pygameオブジェクトは自動的に破棄され、音楽が停止します。
コメントしたように、終了する前に待機すると音楽が再生されます。なぜなら、pygameオブジェクトはwhileループが終了するまで破壊されないからです。
while pygame.mixer.music.get_busy():
pygame.time.Clock().tick(10)
非同期イベントであるため、音楽は停止します。つまり、スクリプトを続行します。その後、スクリプトは即座に停止し、音楽に開始の機会を与えません。前に述べたように、使用できます
_while pygame.mixer.music.get_busy():
pygame.time.Clock().tick(10)
_
ただし、すべての非同期イベントが終了するまで待機するため、pygame.event.wait()
の方がより適切です。
これは非常に簡単な方法です。
import pygame
file = 'some.mp3'
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load(file)
pygame.mixer.music.play()
pygame.event.wait()
thepythongamebook.com から良い解決策を見つけました。
pygame.mixer.pre_init(44100, -16, 2, 2048) # setup mixer to avoid sound lag
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load('music_01.mp3')
pygame.mixer.music.play(-1)
これを試して、
#!/usr/bin/env python
import pygame
from Tkinter import *
file = 'Your MP3 here'
root = Tk()
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load(file)
pygame.mixer.music.play()
root.mainloop()
tkinterをインストールする必要がありますが、うまくいけばうまくいき、時間を手動で設定する必要はありません。これがうまくいったなら、私に教えてください、私は自分のコンピューターでこれをテストしましたが、時にはうまくいかないことがあります。できればお手伝いします。
これを試してください。
import pygame
def pmusic(file):
pygame.init()
pygame.mixer.init()
clock = pygame.time.Clock()
pygame.mixer.music.load(file)
pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
print("Playing...")
clock.tick(1000)
def stopmusic():
pygame.mixer.music.stop()
def getmixerargs():
pygame.mixer.init()
freq, size, chan = pygame.mixer.get_init()
return freq, size, chan
def initMixer():
BUFFER = 3072 # audio buffer size, number of samples since pygame 1.8.
FREQ, SIZE, CHAN = getmixerargs()
pygame.mixer.init(FREQ, SIZE, CHAN, BUFFER)
try:
initMixer()
file = 'C:\\data\\03.mp3'
pmusic(file)
except KeyboardInterrupt: # to stop playing, press "ctrl-c"
stopmusic()
print("\nPlay Stopped by user")
except Exception:
print("unknown error")
print("Done")
インポートした方法が原因で、オーディオが再生されないようです。次のコードは、期待どおりにサウンドを再生します。ここでは、import pygame
ではなくfrom pygame import mixer
を使用することを除いて、何も変更されていません。これは、Pygameがパッケージであるという事実による可能性がありますが、よくわかりません。
from pygame import mixer
file = 'some.mp3'
mixer.init()
mixer.music.load(file)
mixer.music.play()