web-dev-qa-db-ja.com

Pygame、音が鳴らない

Pygameでサウンドファイル(.wav)を再生しようとしていますが、起動すると何も聞こえません。
これはコードです:

import pygame

pygame.init()
pygame.mixer.init()
sounda= pygame.mixer.Sound("desert_rustle.wav")

sounda.play()

私もチャンネルを使ってみましたが、結果は同じです

20

あなたのコードは私のマシンで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ファイルに)ファイルが破損していないことを保証しますか?問題を再現できず、これらすべての重要な詳細がなければ、特定の問題(指定したコードではありません)をデバッグするのは困難です。

0
Alex Martelli

私(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)
16
Trilarion

ミキサーを再生したときに音が出ませんでしたが、-ウィンドウを作成した後に機能し始めました、これは最小限の例です。ファイル名を変更し、実行して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()
8
nio

sounda.play()は、サウンドの再生に必要なオブジェクトを返します。これにより、サウンドがまだ再生されているかどうかを確認することもできます。

channela = sounda.play()
while channela.get_busy():
   pygame.time.delay(100)
8
nmin

あなたがする必要があるのは次のようなものです:

 import pygame
 import time

 pygame.init()
 pygame.mixer.init()
 sounda= pygame.mixer.Sound("desert_rustle.wav")

 sounda.play()
 time.sleep (20)

プログラムをスリープさせるように言ったのは、多くのコードを入力せずにプログラムを実行し続ける方法が必要だったからです。同じ問題があり、音楽を再生しようとした直後にプログラムが終了したため、サウンドが再生されませんでした。

プログラムで実際に何かを実行させたい場合は、必要なコードをすべて入力しますが、サウンドが完全に再生されるのに十分長く続くことを確認してください。

4
VagosLabrou

Windows 7でも同じ問題が発生しました。私の場合、管理者としてコードを実行していませんでした。理由を聞かないでください。ただし、管理者が修正したコマンドラインを開いてください。

3
_import pygame, time


pygame.mixer.init()
pygame.init()

sounda= pygame.mixer.Sound("beep.wav")

sounda.play()
_

pygame.init()mixer.init()の後に続きます。それは私のために働いた。

2
Gobinda Sinha

ちょうど試して:

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 ""を追加するだけで、サウンドに自身をロードする時間ができます。

1
gregsleg

必要なのは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"
1
RufusVS

これを行う:

import pygame

pygame.mixer.init()
pygame.mixer.music.load("desert_rustle.wav")
pygame.mixer.music.play(0)

あなたの問題は、ファイルがWAVファイルであることだと思います。それはMP3で私のために働いた。これはおそらくpython 3.6で動作します。

0
peter

私はこのようなことが起こりました。多分あなたは同じ問題を抱えていますか?絶対パスを使用してみてください:

import pygame

pygame.init()
pygame.mixer.init()
sounda= pygame.mixer.Sound("/absolute_path/desert_rustle.wav")

sounda.play()

ここでabslute_pathは明らかに実際の絶対パスに置き換えられます;)

幸運を。

0
jaya

Wavファイルを再度保存して、周波数情報を確認してください。または、サウンドを録音して、その周波数、ビット、サイズ、チャネルを確認することもできます(この問題を解決するには、この方法を使用します)。

0
Haimei

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()
0
import pygame

pygame.init()
sound = pygame.mixer.Sound("desert_rustle.wav")
pygame.mixer.Sound.play(sound)

これはpython 3で動作します

0
James Old