Как воспроизвести звук в Python, параллельно с программой?
Я написал небольшую игру на Python, используя библиотеку PyGame. Все работает отлично, однако, вопреки выражению: "Работает - не трожь", я решил добавить фоновую музыку для игры. Вот тут и начались проблемы, я пробовал разные библиотеки для проигрывания звуков, такие как: playsound, pyglet, но везде возникала одна и та же проблема. При запуске самой игры, начинала проигрываться музыка, однако делать все игровые действия (ходить персонажем и т.д) я не мог. Я пробовал создавать отдельную функцию для воспроизведения и активировать ее в разных частях кода (в конце, в начале, середине), однако проблема оставалась.
Хотелось бы узнать, какую библиотеку можно использовать или как использовать те, которые прововал я, только чтобы я мог выполнять все действия в игре, но при этом играла музыка.
Ответы (2 шт):
Можно же делать звуки прямо в pygame
Включить звуковой эффект один раз
pygame.mixer.music.load('boom.mp3')
pygame.mixer.music.play(0)
Проигрывать постоянно по кругу (для фона)
pygame.mixer.music.load('foo.mp3')
pygame.mixer.music.play(-1)
Добавить следующую музыку в очередь:
pygame.mixer.music.queue('next_song.mp3')
Остановить
pygame.mixer.music.stop()
Давайте будем вместе читать документацию playsound. Читаем:
It requires one argument - the path to the file with the sound you’d like to play. This may be a local file, or a URL.
There’s an optional second argument, block, which is set to True by default. Setting it to False makes the function run asynchronously.
Первым аргументом указываем путь, вторым включаем асинхронность, но должен заметить, что такой вариант на Linux не работает.
playsound('play.mp3', False)
Если вариант с pygame:
from pygame import mixer
mixer.init()
mixer.music.load("play.mp3")
mixer.music.play()
input()