Пигаме, звуки не играют
Я пытаюсь воспроизводить звуковые файлы (.wav) с pygame, но когда я его начинаю, я ничего не слышу.
Это код:
import pygame
pygame.init()
pygame.mixer.init()
sounda= pygame.mixer.Sound("desert_rustle.wav")
sounda.play()
Я также пытался использовать каналы, но результат тот же
Ответы
Ответ 1
Ваш код воспроизводит desert_rustle.wav
вполне нормально на моей машине (Mac OSX 10.5, Python 2.6.4, pygame 1.9.1). Какие версии ОС и Python и pygame вы используете? Вы можете слышать .wav
OK другими способами (например, open
на терминале Mac или start
на консоли Windows, за которым следует имя файла/путь к файлу .wav
), чтобы гарантировать, что файл не поврежден? Трудно отладить вашу конкретную проблему (которая не с кодом, который вы даете), не имея возможности воспроизвести ее и не имея всех этих важных деталей.
Ответ 2
Для меня (в 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)
Ответ 3
sounda.play() возвращает объект, необходимый для воспроизведения звука. С его помощью вы также можете узнать, продолжает ли звучать звук:
channela = sounda.play()
while channela.get_busy():
pygame.time.delay(100)
Ответ 4
У меня не было звука от воспроизведения mixer.Sound, но он начал работать после того, как я создал окно, это минимальный пример, просто измените имя файла, запустите и нажмите клавишу ВВЕРХ для воспроизведения:
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()
Ответ 5
У меня была такая же проблема в Windows 7. В моем случае я не запускал код в качестве администратора. Не спрашивайте меня, почему, но открыв командную строку, как администратор, исправил ее для меня.
Ответ 6
Что вам нужно сделать, это примерно так:
import pygame
import time
pygame.init()
pygame.mixer.init()
sounda= pygame.mixer.Sound("desert_rustle.wav")
sounda.play()
time.sleep (20)
Причина, по которой я сказал программе спать, - это то, что я хотел, чтобы она работала без ввода большого количества кода. У меня была такая же проблема, и звук не играл, потому что программа закрылась сразу после попытки воспроизведения музыки.
Если вы хотите, чтобы программа действительно что-то делала, просто введите весь необходимый код, но убедитесь, что он будет длиться достаточно долго, чтобы звук полностью воспроизводился.
Ответ 7
Я думаю, что вам нужно 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"
Ответ 8
Просто попробуйте:
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 ""
, и звук будет
успел загрузить свое "я".
Ответ 9
5 лет назад ответ, но я надеюсь, что смогу помочь кому-то..: -)
Во-первых, вам не нужна строка "pygame.init()".
Во-вторых, сделайте петлю и воспроизведите звук внутри нее, иначе pygame.mixer запустится и немедленно перестанет воспроизводиться.
Я получил этот код, чтобы нормально работать на моем малине pi с ОС Raspbian.
Обратите внимание, что я использовал цикл while, который продолжает зацикливать звук.
import pygame.mixer
pygame.mixer.init()
sounda = pygame.mixer.Sound("desert_rustle.wav")
while True:
sounda.play()
Ответ 10
Просто попробуйте повторно сохранить ваш wav файл, чтобы убедиться в его частотной информации. Или вы можете записать звук, чтобы убедиться в его частоте, битах, размере и каналах. (Я использую этот метод для решения этой проблемы)
Ответ 11
У меня было что-то подобное. Может быть, у вас такая же проблема? Попробуйте использовать абсолютный путь:
import pygame
pygame.init()
pygame.mixer.init()
sounda= pygame.mixer.Sound("/absolute_path/desert_rustle.wav")
sounda.play()
Если abslute_path явно заменен вашим фактическим абсолютным путем;)
удачи.
Ответ 12
import pygame
pygame.init()
sound = pygame.mixer.Sound("desert_rustle.wav")
pygame.mixer.Sound.play(sound)
Это будет работать на python 3