Вопрос-Ответ

How can I play an mp3 with pygame?

Как я могу воспроизвести mp3 с помощью pygame?
import pygame
file = 'some.mp3'
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load(file)
pygame.mixer.music.play()

Выводится сообщение "Процесс завершен с кодом выхода 0", но ничего не воспроизводится. Как я могу решить эту проблему?

Переведено автоматически
Ответ 1

Функция воспроизведения запускает воспроизведение музыки, но немедленно возвращается. Затем ваша программа завершает работу, и объект pygame автоматически уничтожается, что приводит к остановке музыки.

Как вы прокомментировали, он воспроизводит музыку, если вы дождетесь ее перед выходом - потому что тогда объект pygame не уничтожается до завершения цикла while.

while pygame.mixer.music.get_busy(): 
pygame.time.Clock().tick(10)
Ответ 2

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

while pygame.mixer.music.get_busy(): 
pygame.time.Clock().tick(10)

однако, это еще лучше pygame.event.wait(), поскольку он будет ждать завершения всех асинхронных событий.

Ответ 3

Вот очень простой способ.

import pygame
file = 'some.mp3'
pygame.init()
pygame.mixer.init()
pygame.mixer.music.load(file)
pygame.mixer.music.play()
pygame.event.wait()
Ответ 4

Я нашел хорошее решение от thepythongamebook.com:

pygame.mixer.pre_init(44100, -16, 2, 2048) # setup mixer to avoid sound lag

pygame.init()

pygame.mixer.init()

pygame.mixer.music.load('music_01.mp3')

pygame.mixer.music.play(-1)
python pygame