Я ищу хорошо поддерживаемую библиотеку Python, позволяющую воспроизводить аудиофайлы на моем Raspberry Pi с использованием стандартного аудиовыхода.
Пока я пробовал несколько, но ни один из них, кажется, не работает. Хотя pyglet работает на моем обычном компьютере нормально, он вызывает ошибку на Raspberry Pi. Есть ли библиотека Python, которая доказала свою простоту использования?
Ответы:
Я рекомендую широко популярную игру Pygame. Я могу ошибаться, но я считаю, что он предустановлен на Pi. Вы можете использовать музыкальный модуль Pygame Mixer для воспроизведения аудиофайлов. Я включил пример кода ниже.
Предполагая, что у нас есть аудиофайл под названием
myFile.wav
.ПРИМЕЧАНИЕ. Если это не помогло, перейдите в терминал и обновите систему
и попробуй еще раз.
источник
espeak
просто отлично, но не это.Мне нужен был сценарий для воспроизведения песни с тридцати секунд на заднем плане, в то же время отвечая на ввод других пользователей. Я тогда хотел, чтобы это закончило песню на каком-то событии.
Я не думаю, что это особенно элегантно, но я открыл канал для фонового процесса MPlayer.
Затем, когда я захотел завершить процесс MPlayer, я просто написал «q» для выхода в канал.
Посмотрите в документации MPlayer все виды команд, которые вы можете передать таким образом, чтобы управлять воспроизведением.
Надеюсь, это несколько полезно!
источник
Другой вариант - использовать
mpg321
и вызывать его из командной строки.Тогда в Python:
Pygame почти наверняка более устойчив, но, я полагаю, зависит от ваших потребностей.
источник
Я бы порекомендовал pyglet, а не pygame, если вам не нужна графика. На мой взгляд, это проще, элегантнее и лучше поддерживается. Опять же, я ожидаю, что это может быть дело вкуса.
источник
Pygame дает вам простой и удобный способ загружать и воспроизводить звуки на разных каналах.
источник
Вы можете использовать несколько внешних игроков через каналы. Тем не менее, вы почти всегда будете испытывать потерю скорости. Существует также проблема с управлением воспроизведением.
Я рекомендую вам pyaudio, он отлично работает.
Если вы хотите воспроизвести и сжатые файлы, я могу свободно указать вам на мой модуль decoder.py. Вы можете найти это на PyPI.
Он также использует подпроцесс, но вызывает декодеры вместо игроков. Они не используют много процессора, и некоторые из них знают, как использовать аппаратное ускорение. Затем вы можете использовать pyaudio или что-то еще для вывода необработанных аудиоданных. Если вы хотите, вы можете даже использовать pygame, используя pygame.sndarray. Таким образом, вы можете воспроизводить больше форматов, чем поддерживает Pygame.
Я пробовал decoder.py в среде PyQT GUI, с pyaudio, а также используя aplay в качестве внешнего проигрывателя. Это было на Raspberry Pi B.
Результаты были довольно удовлетворительными в обоих случаях.
Простота может быть поставлена под сомнение.
Сам по себе decoder.py очень прост, но вы должны комбинировать его с другими библиотеками, и это увеличивает количество строк кода.
Есть пример того, как проигрывать файлы, включенные в файл decoder.py.
источник
Я использую OSMC (Debian) и получил звук для воспроизведения через динамики телевизора, которые подключены через HDMI. https://youtu.be/p2ljmTE67gs
Мой метод был основан на вышеупомянутом решении, опубликованном @xxmbabanexx, а также здесь . В основном я должен был добавить
dtparam=audio=on
к/boot/config.txt
источник