Ich bin auf der Suche nach einer gut gepflegten Python-Bibliothek, mit der ich Audiodateien auf meinem Raspberry Pi mit der Standard-Audioausgabe abspielen kann.
Bisher habe ich mehrere ausprobiert, aber keine davon scheint zu funktionieren. Obwohl Pyglet auf meinem normalen Computer einwandfrei funktioniert, verursacht es einen Fehler auf dem Raspberry Pi. Gibt es eine Python-Bibliothek, die sich als benutzerfreundlich erwiesen hat?
Antworten:
Ich empfehle das beliebte Pygame. Ich kann mich irren, aber ich glaube, dass es auf dem Pi vorinstalliert ist. Mit dem Pygame Mixer Music Module können Sie Audiodateien abspielen. Ich habe unten einen Beispielcode eingefügt.
Angenommen, wir haben eine Audiodatei namens
myFile.wav
.HINWEIS: Wenn dies fehlschlägt, gehen Sie zum Terminal und aktualisieren Sie Ihr System mit
und versuche es noch mal.
quelle
espeak
gut, aber nicht so.Ich brauchte ein Skript, um einen Song aus 30 Sekunden im Hintergrund abzuspielen und gleichzeitig auf andere Benutzereingaben zu reagieren. Ich wollte dann, dass das Lied irgendwann endet.
Ich nehme an, es ist nicht besonders elegant, aber ich habe eine Pipe für einen MPlayer-Hintergrundprozess geöffnet.
Als ich dann den MPlayer-Prozess beenden wollte, schrieb ich einfach "q" für das Beenden der Pipe.
In der MPlayer-Dokumentation finden Sie alle Arten von Befehlen, die Sie zur Steuerung der Wiedergabe auf diese Weise übergeben können.
Hoffentlich ist das etwas hilfreich!
quelle
Eine andere Option besteht darin
mpg321
, sie über die Befehlszeile zu verwenden und aufzurufen.Dann in Python:
Pygame ist mit ziemlicher Sicherheit robuster, aber es kommt wohl darauf an, was Sie brauchen.
quelle
Ich würde Pyglet anstelle von Pygame empfehlen, wenn Sie keine Grafiken benötigen. Meiner Meinung nach ist es einfacher, eleganter und besser gepflegt. Andererseits denke ich, dass es Geschmackssache sein könnte.
quelle
Pygame bietet Ihnen eine schöne und einfache Möglichkeit, Sounds auf einer Reihe von Kanälen zu laden und abzuspielen.
quelle
Sie können mehrere externe Player über Pipes verwenden. Es kommt jedoch fast immer zu Geschwindigkeitsverlusten. Es gibt auch ein Problem mit der Wiedergabesteuerung.
Ich empfehle dir pyaudio, es funktioniert gut.
Wenn Sie auch komprimierte Dateien abspielen möchten, kann ich Sie auf mein Modul decoder.py verweisen. Sie finden es auf PyPI.
Es verwendet auch Unterprozesse, ruft jedoch Decoder anstelle von Playern auf. Sie verbrauchen nicht viel CPU und einige von ihnen wissen, wie man die Hardwarebeschleunigung einsetzt. Sie können dann Pyaudio oder etwas verwenden, um die Audio-Rohdaten auszugeben. Wenn Sie möchten, können Sie Pygame auch mit pygame.sndarray verwenden. Auf diese Weise können Sie mehr Formate abspielen, als Pygame unterstützt.
Ich habe decoder.py in einer PyQT-GUI-Umgebung mit pyaudio und aplay als externem Player ausprobiert. Das war auf Raspberry Pi B.
Die Ergebnisse waren in beiden Fällen ziemlich zufriedenstellend.
Die Einfachheit kann in Frage gestellt werden.
decoder.py selbst ist sehr einfach, aber Sie müssen es mit anderen Bibliotheken kombinieren und das erhöht die Codezeilen.
Es gibt ein Beispiel zum Abspielen von Dateien in decoder.py.
quelle
Ich verwende OSMC (Debian) und habe Sound über meine TV-Lautsprecher, die über HDMI angeschlossen sind. https://youtu.be/p2ljmTE67gs
Meine Methode basierte auf der obigen Lösung von @xxmbabanexx sowie hier . Im Grunde hatte ich hinzufügen
dtparam=audio=on
zu/boot/config.txt
quelle