Bibliothek für Musik-Player

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
tommy_45
User
Beiträge: 13
Registriert: Freitag 23. November 2018, 09:39

Hallo zusammen,

ich möchte mit Python einen Musik-Player programmieren. Dieser soll zunächst über die Kommandozeile und später über eine GUI bedient werden.
Um meine Musik abzuspielen, suche ich eine geeignete Bibliothek, welche folgende Vorraussetzungen erfüllen sollte:
  • diverse Formate abspielen, auf jeden Fall: mp3, flac, wav
  • Musik pausieren
  • Lautstärke regeln
  • Aktuelle Position im aktuellen Musikstück ausgeben und speichern (im Falle eines Neustarts der Anwendung)
  • unter Windows, Mac und Linux (inklusive Raspberry Pi) verfügbar sein

Hat vielleicht jemand eine Idee für eine geeignete Bibliothek?

Würde mich sehr über Vorschläge freuen!


Mfg
tommy
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Mir fallen ein

- pygame
- Qt5
tommy_45
User
Beiträge: 13
Registriert: Freitag 23. November 2018, 09:39

Kann man mit pygame FLAC-Dateien öffnen?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Kannst du das ggf. selbst nachschauen, oder muss ich das wirklich fuer dich in google eintippen, um dir das Ergebnis dann hier wieder zu reproduzieren? Aus der Bazillion von moeglichen Modulen zwei genannt zu bekommen - da kann man durchaus mal selbst durch die Doku stoebern 🙄
tommy_45
User
Beiträge: 13
Registriert: Freitag 23. November 2018, 09:39

Ja, das kann ich!
The Sound can be loaded from an OGG audio file or from an uncompressed WAV.
(siehe https://www.pygame.org/docs/ref/mixer.html)

Also:
Mit pygame kann ich schonmal nur ogg und wav Dateien spielen. Also leider nicht geeignet.

Bei Qt5 bin ich noch auf der Suche..
tommy_45
User
Beiträge: 13
Registriert: Freitag 23. November 2018, 09:39

.. Und habe mit Qt5 offenbar auch kein Glück, oder?
The QSound class provides a method to play .wav sound files.
(siehe https://doc.qt.io/qt-5/qsound.html)

Habe ich doch etwas übersehen?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Jein. Wenn nur WAV geht, dann kannst du immer noch mp3 und FLAC zu WAV konvertieren, bevor du abspielst. Das machen wir in unserer DAW auch mit mp3s, weil wir am Ende nur WAV bzw. rohen PCM Daten sinnvoll arbeiten koennen.

Damit hast du ggf. entweder eine Anfangs-Verzoegerung, mehr Plattenplatz der verbraucht wird, oder eine etwas anspruchsvollere Architektur mit einem laufenden Dekodier-Prozess. Das sollte aber eigentlich klappen.

Last but not least: du machst dir das Leben selbst schwer, weil du ziemlich viele Randbedingungen stellst. Es ist leider ein aergerlicher Fakt das alles, was mit Multimedia (und damit den Codecs die dazu benoetigt werden) einher geht immer sehr plattform-abhaengig ist. Das es also unter allen Plattformen tut ist nicht trivial. Das ist im Zweifel der Grund, warum pygame eben nur WAV und OGG kann - die sind frei. gstreamer kann alles, laeuft aber so richtig rund ohne weiteres nur auf Linux. Und dann sind da natuerlich noch DirectX und AVFoundation unter Windows respektive macOS.

Wenn du darauf bestehst, das dein Musikplayer auf allen Plattformen geht - dann hast du viel zu tun. Sehr viel.

Nachtrag: Ja, du hast bei Qt was uebersehen: http://doc.qt.io/qt-5/multimediaoverview.html
Benutzeravatar
__blackjack__
User
Beiträge: 14036
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@__deets__: Er hat auch bei Pygame was übersehen, denn auch dort hat er sich den Teil für einzelne Sounds herausgesucht und nicht den mit dem Musik abgespielt wird. Da geht mindestens noch MP3- und MOD-Dateien, und SDL_music kann eigentlich auch FLAC, vermute also mal stark dass das dann auch mit Pygame geht. SDL_music hat auch eine Schnittstelle über die die unterstützen Formate abgefragt werden können, die wird aber offenbar nicht von Pygame weitergereicht.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
Antworten