Pygameでサウンドファイル(.wav)を再生しようとしていますが、起動すると何も聞こえません。
これはコードです:
import pygame
pygame.init()
pygame.mixer.init()
sounda= pygame.mixer.Sound("desert_rustle.wav")
sounda.play()
私もチャンネルを使ってみましたが、結果は同じです
あなたのコードは私のマシンでdesert_rustle.wav
をうまく再生します(Mac OSX 10.5、Python 2.6.4、pygame 1.9.1)。どのOSとPython =とpygameリリースを使用していますか?他の方法で.wav
OKを聞くことができますか(たとえば、Macの端末ではopen
またはWindowsコンソールではstart
の後にファイル名/パスが続きます) .wav
ファイルに)ファイルが破損していないことを保証しますか?問題を再現できず、これらすべての重要な詳細がなければ、特定の問題(指定したコードではありません)をデバッグするのは困難です。
私(Windows 7ではPython 2.7、PyGame 1.9)実際にpygame.init()呼び出しを削除して機能させるか、またはpygame.init()が少なくともpygameの画面。
私の例:
import time, sys
from pygame import mixer
# pygame.init()
mixer.init()
sound = mixer.Sound(sys.argv[1])
sound.play()
time.sleep(5)
ミキサーを再生したときに音が出ませんでしたが、-ウィンドウを作成した後に機能し始めました、これは最小限の例です。ファイル名を変更し、実行してUPキーを押すだけで再生できます。
WAVFILE = 'tom14.wav'
import pygame
from pygame import *
import sys
mixer.pre_init(frequency=44100, size=-16, channels=2, buffer=4096)
pygame.init()
print pygame.mixer.get_init()
screen=pygame.display.set_mode((400,400),0,32)
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type == KEYDOWN:
if event.key==K_ESCAPE:
pygame.quit()
sys.exit()
Elif event.key==K_UP:
s = pygame.mixer.Sound(WAVFILE)
ch = s.play()
while ch.get_busy():
pygame.time.delay(100)
pygame.display.update()
sounda.play()は、サウンドの再生に必要なオブジェクトを返します。これにより、サウンドがまだ再生されているかどうかを確認することもできます。
channela = sounda.play()
while channela.get_busy():
pygame.time.delay(100)
あなたがする必要があるのは次のようなものです:
import pygame
import time
pygame.init()
pygame.mixer.init()
sounda= pygame.mixer.Sound("desert_rustle.wav")
sounda.play()
time.sleep (20)
プログラムをスリープさせるように言ったのは、多くのコードを入力せずにプログラムを実行し続ける方法が必要だったからです。同じ問題があり、音楽を再生しようとした直後にプログラムが終了したため、サウンドが再生されませんでした。
プログラムで実際に何かを実行させたい場合は、必要なコードをすべて入力しますが、サウンドが完全に再生されるのに十分長く続くことを確認してください。
Windows 7でも同じ問題が発生しました。私の場合、管理者としてコードを実行していませんでした。理由を聞かないでください。ただし、管理者が修正したコマンドラインを開いてください。
_import pygame, time
pygame.mixer.init()
pygame.init()
sounda= pygame.mixer.Sound("beep.wav")
sounda.play()
_
pygame.init()
はmixer.init()
の後に続きます。それは私のために働いた。
ちょうど試して:
import pygame.mixer
from time import sleep
pygame.mixer.init()
pygame.mixer.music.load(open("\windows\media\chimes.wav","rb"))
print ""
pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
sleep(1)
print "done"
これは動作するはずです。 print ""
を追加するだけで、サウンドに自身をロードする時間ができます。
必要なのはpygame.mixer.musicだと思います。
import pygame.mixer
from time import sleep
pygame.mixer.init()
pygame.mixer.music.load(open("\windows\media\chimes.wav","rb"))
pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
sleep(1)
print "done"
これを行う:
import pygame
pygame.mixer.init()
pygame.mixer.music.load("desert_rustle.wav")
pygame.mixer.music.play(0)
あなたの問題は、ファイルがWAVファイルであることだと思います。それはMP3で私のために働いた。これはおそらくpython 3.6で動作します。
私はこのようなことが起こりました。多分あなたは同じ問題を抱えていますか?絶対パスを使用してみてください:
import pygame
pygame.init()
pygame.mixer.init()
sounda= pygame.mixer.Sound("/absolute_path/desert_rustle.wav")
sounda.play()
ここでabslute_pathは明らかに実際の絶対パスに置き換えられます;)
幸運を。
Wavファイルを再度保存して、周波数情報を確認してください。または、サウンドを録音して、その周波数、ビット、サイズ、チャネルを確認することもできます(この問題を解決するには、この方法を使用します)。
5年遅れの答えが私は誰かを助けることができると思います.. :-)
まず、「pygame.init()」行は必要ありません。次に、ループを作成し、その中でサウンドを再生します。そうしないと、pygame.mixerが起動し、すぐに再び再生を停止します。
このコードは、Raspbian OSを搭載したRaspberry Piで正常に動作するようになりました。サウンドを永遠にループし続けるwhileループを使用したことに注意してください。
import pygame.mixer
pygame.mixer.init()
sounda = pygame.mixer.Sound("desert_rustle.wav")
while True:
sounda.play()
import pygame
pygame.init()
sound = pygame.mixer.Sound("desert_rustle.wav")
pygame.mixer.Sound.play(sound)
これはpython 3で動作します