Ошибка Pygame: система микширования не инициализирована

#python #audio #pygame

Вопрос:

Я только что запустил небольшой игровой проект и пытаюсь заставить его воспроизводить звук при каждом выстреле пули, но я продолжаю получать ту же ошибку:

 pygame.error: mixer system not initialized
 

Я не понимаю, что я сделал неправильно, поэтому вот мой код:

 import pygame, sys
from pygame.locals import *

theClock = pygame.time.Clock()

sound = pygame.mixer.Sound("bullet.mp3")
 

….

 if event.type == KEYDOWN:
    if event.key == K_SPACE and shot_count == 0:
        sound.play()
        shot_y = h-50
        shot_x = x
    elif event.type == K_SPACE and shot_count == 1:
        shot_y_2 = h-50
        shot_x_2 = x
    print(h, ' ', shot_y, shot_count)
if event.type == KEYUP:
    if event.key == K_SPACE and shot_count == 0:
        resetShot = 0 
    elif event.type == K_SPACE and shot_count == 1:
        resetShot = 0
 

Ответ №1:

Вам необходимо pygame.init() перед использованием объектов микшера / звука.

Согласно документации, вы должны использовать звуковые файлы OGG или WAV.

Комментарии:

1. хорошо, я больше не получаю ошибку, но она не воспроизводит никакого звука

Ответ №2:

Я искал здесь и обнаружил, что pygame загружаются только OGG и несжатые файлы WAV. Другая проблема заключается в том, что вы забыли инициализировать pygame.mixer модуль.

 pygame.mixer.init()
 

это самый простой способ инициализации pygame.mixer модуля.
Для получения дополнительной информации перейдите по предыдущей ссылке.

Комментарии:

1. У меня та же проблема, что и при загрузке моего волнового файла в pygame.mixer.init(), но я продолжаю получать эту ошибку, аудиоустройство не найдено

Ответ №3:

Я делал игру в Тетрис до двух недель, и у меня была та же проблема! Что я сделал, так это вставил это перед воспроизведением звука, и это сработало.

 pygame.mixer.init(44100, -16,2,2048)
 

Попробуйте сами и посмотрите, работает ли это! Я надеюсь, что это помогло

Ответ №4:

Этого достаточно

 import pygame as pg
from pygame import mixer

pg.init()

#...
mixer.music.load('sounds/bgsound.mp3')

mixer.music.play(-1)
 

Ответ №5:

Я столкнулся с той же ошибкой в том же проекте при использовании pycharm в моей системе Linux.

Простой обходной путь — запустить sript в оболочке python или из IDLE (что практически одно и то же).

Если вы такой же пользователь Linux, как и я (я использую Ubuntu), просто откройте папку, содержащую скрипт в терминале, и запустите скрипт с помощью python, например:

 python3 Space_Invaders.py
 

И он должен работать без каких-либо ошибок. Я попытался запустить код без инициализации микшера, используя python IDLE, и там тоже не обнаружил ошибок.