Pygame, звуки не играют - PullRequest
19 голосов
/ 30 мая 2010

Я пытаюсь воспроизвести звуковые файлы (.wav) с помощью pygame, но при запуске я ничего не слышу.
Это код:

import pygame

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

sounda.play()

Я также пытался использовать каналы, но результат тот же

Ответы [ 13 ]

15 голосов
/ 23 мая 2014

Для меня (в 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)
8 голосов
/ 31 января 2014

У меня не было звука при воспроизведении микшера. Звук, но он начал работать после того, как я создал окно , это минимальный пример, просто измените ваше имя файла, запустите и нажмите клавишу ВВЕРХ для воспроизведения: 1003 *

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()
7 голосов
/ 08 июля 2012

sounda.play () возвращает объект, необходимый для воспроизведения звука. С его помощью вы также можете узнать, воспроизводится ли звук:

channela = sounda.play()
while channela.get_busy():
   pygame.time.delay(100)
3 голосов
/ 13 октября 2013

Что вам нужно сделать, это что-то вроде этого:

 import pygame
 import time

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

 sounda.play()
 time.sleep (20)

Причина, по которой я велел программе спать, заключается в том, что я хотел, чтобы она работала без необходимости набирать много кода. У меня была та же проблема, и звук не воспроизводился, потому что программа закрылась сразу после попытки воспроизведения музыки.

Если вы хотите, чтобы программа действительно что-то делала, просто наберите весь необходимый код, но убедитесь, что он будет длиться достаточно долго для полноценного воспроизведения звука.

3 голосов
/ 28 февраля 2012

У меня была такая же проблема под Windows 7. В моем случае я не запускал код как Администратор. Не спрашивайте меня почему, но открыв командную строку, как администратор исправил это для меня.

1 голос
/ 07 октября 2018
import pygame, time


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

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

sounda.play()

pygame.init() идет после mixer.init(). У меня это сработало.

1 голос
/ 17 декабря 2014

Я думаю, что вам нужно 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"
0 голосов
/ 20 сентября 2017

5 лет с опозданием, но я надеюсь, что смогу помочь кому-то ..: -)

Во-первых, вам не нужна строка "pygame.init ()". Во-вторых, сделайте петлю и воспроизведите звук внутри нее, иначе запустится pygame.mixer и немедленно прекратите воспроизведение.

Я получил этот код, чтобы он нормально работал на моем Raspberry pi с Raspbian OS. Обратите внимание, что я использовал цикл while, который продолжает цикл звука навсегда.

import pygame.mixer

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

while True:
    sounda.play()
0 голосов
/ 06 апреля 2017
import pygame

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

Это будет работать на питоне 3

0 голосов
/ 14 мая 2016

У меня было что-то подобное Может у тебя такая же проблема? Попробуйте использовать абсолютный путь:

import pygame

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

sounda.play()

Где abslute_path явно заменено вашим фактическим абсолютным путем;)

удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...