Как воспроизвести .mp3 файл на Python с помощью PyGame и PyGlet?
Здравствуйте, нужна помощь, пытаюсь написать будильник с таймером, столкнулся с одной проблемой, а именно с попыткой воспроизвести mp3 файл. Нужно использовать PyGame или PyGlet. при попытке запустить прогу выдает ошибку, код и текст ошибки скину в конце, не могли бы вы мне, объяснить как воспроизводить .mp3 файлы, буду очень благодарен.
Код:
import pyglet
song = pyglet.media.load('D:\Эмиль\Python\timer\zvuki-zvonok_budilnika.mp3')
song.play()
pyglet.app.run()
Ошибка:
Traceback (most recent call last):
File "D:/Эмиль/Python/timer/timer.py", line 3, in
song = pyglet.media.load('D:\Эмиль\Python\timer\zvuki-zvonok_budilnika.mp3')
File "C:\Python32\lib\site-packages\pyglet\media\__init__.py", line 1429, in load
source = get_source_loader().load(filename, file)
File "C:\Python32\lib\site-packages\pyglet\media\__init__.py", line 1410, in load
return riff.WaveSource(filename, file)
File "C:\Python32\lib\site-packages\pyglet\media\riff.py", line 185, in __init__
file = open(filename, 'rb')
IOError: [Errno 22] Invalid argument: 'D:\\Эмиль\\Python\timer\\zvuki-zvonok_budilnika.mp3'
P.S палками сильно прошу не бить, я тупой школьник, который только учиться программировать.
song = pyglet.media.load('D:\Эмиль\Python\timer\zvuki-zvonok_budilnika.mp3')
Советую использовать обычные слеши "/" или двойной обратный слеш "\\" вместо одного обратного "\", так как обратный слеш используется для так называемого экранирования символов, в вашем случае у вас в пути к файлу есть сочетание символов "\t", которое преобразуется в знак табуляции и путь к файлу оказывается неправильным.
Попробуйте так:
song = pyglet.media.load('D:/Эмиль/Python/timer/zvuki-zvonok_budilnika.mp3')
import pyglet
song = pyglet.media.load('D:/Эмиль/Python/timer/zvuki-zvonok_budilnika.mp3')
song.play()
pyglet.app.run()
Ошибка:
C:\Python32\python.exe D:/Emil/Python/timer/timer.py
Traceback (most recent call last):
File "D:/Emil/Python/timer/timer.py", line 2, in
song = pyglet.media.load('D:/Emil/Python/timer/zvuki-zvonok_budilnika.mp3')
File "C:\Python32\lib\site-packages\pyglet\media\__init__.py", line 1429, in load
source = get_source_loader().load(filename, file)
File "C:\Python32\lib\site-packages\pyglet\media\__init__.py", line 1410, in load
return riff.WaveSource(filename, file)
File "C:\Python32\lib\site-packages\pyglet\media\riff.py", line 201, in __init__
'AVbin is required to decode compressed media')
pyglet.media.riff.WAVEFormatException: AVbin is required to decode compressed media
Эта ошибка никак не похожа на прошлую. Похоже вам требуется установка какого-то дополнительного модуля для декодирования mp3. Попробуйте использовать другой формат аудио, или установить avbin.
У меня есть один вопрос, предположим, я хочу скинуть этот будильник другому человеку, а путь к аудиофайлам у нас не совпадает, как сделать так, что бы аудиофайл проигрывался вне зависимости от расположения?
emilka174: если у другого человека установлен Python, pyglet, avbin, то можно просто использовать относительный путь к файлу (например "./zvuk-budilnika.mp3"), тогда вам нужно будет разместить этот файл вместе с самой программой и передать другому человеку оба файла. Если же у человека не установлена одна из программ, то вам придется ещё уговорить его сделать это.
emilka174: для вашего случая, есл у вас винда, легче всего переконвертировать ваш .mp3 файл в .wav, скинуть звуковой файл в одну папку со скриптом и пользоваться стандартной библиотекой питона winsound это займет всего две строчки кода и не будет зависимости от сторонних библиотек