Musik abspielen + Zeit

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
Liemaeu
User
Beiträge: 2
Registriert: Samstag 25. Januar 2020, 23:46

Hallo,

Ich bin gerade dabei einen kleinen Music Player in Python 3 zu schreiben. Leider habe ich noch nichts gutes gefunden, um Musik Datei (vorallem .mp3) abzuspielen.

Was es können muss:
-Abspielen
-Stoppen
-Pausieren
-Fortfahren (nach Pausieren)
-Aktuelle "Position"(Zeit) des Songs (also wo [welche Sekunde] man sich gerade beim Abspielen befindet)
-Lautstärke verändern
-Zu Position x "springen"(vorspulen)


Was ich schon versucht habe:
-Pygame: fällt weg weil die aktuelle Position im Song fehlt (da gibts nur wie lange es schon den Song abspielt - und in dem Moment wo man vorspult gibt's dann Probleme)
-playsound: nicht genug Funktionen (siehe oben)
-winsound: gibt's nur für Windows (ich nutze GNU/Linux)
-pyglet: geht nicht mit tkinter (das benutze ich für die GUI), pyglet.app.run() lässt die GUI einfrieren (und ohne pyglet.app.run() wird das Abspielen des Songs direkt wieder abgebrochen)


Vielen Dank
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Viele Leute benutzen dafür mpd, und steuern das mit Python fern.
nezzcarth
User
Beiträge: 1633
Registriert: Samstag 16. April 2011, 12:47

Eine andere Möglichkeit ist, GStreamer zu verwenden. Das ist ein sehr flexibles, allerdings aber auch recht umfangreiches Framework, das etwas Einarbeitung erfordert. MPD fand ich einfacher zu verstehen. Streng genommen ist das nur eben kein AudioPlayer den man da schreibt, sondern ein Client für einen Player ohne GUI, der als separater Prozess läuft. Das Abstraktionslevel ist höher als bei GStreamer und die Einflussmöglichkeiten sind geringer. Für die Sachen, die du oben auflistet genügt es aber denke ich.
Benutzeravatar
__blackjack__
User
Beiträge: 13068
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Wobei man bei egal welcher Lösung wohl nicht darum herum kommt das Nebenläufig mit einem Thread oder Prozess zur Tki-GUI zu lösen, womit `pyglet` dann vielleicht auch wieder in Frage kommt.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Liemaeu
User
Beiträge: 2
Registriert: Samstag 25. Januar 2020, 23:46

nezzcarth hat geschrieben: Sonntag 26. Januar 2020, 07:43 Eine andere Möglichkeit ist, GStreamer zu verwenden. Das ist ein sehr flexibles, allerdings aber auch recht umfangreiches Framework, das etwas Einarbeitung erfordert. MPD fand ich einfacher zu verstehen. Streng genommen ist das nur eben kein AudioPlayer den man da schreibt, sondern ein Client für einen Player ohne GUI, der als separater Prozess läuft. Das Abstraktionslevel ist höher als bei GStreamer und die Einflussmöglichkeiten sind geringer. Für die Sachen, die du oben auflistet genügt es aber denke ich.
Vielen Dank, ich komme mit der Benutzung von python-mpd2 aber noch nicht ganz klar. Mein Test-Code:

Code: Alles auswählen

from mpd import MPDClient

client = MPDClient()
client.connect("localhost", 6600)

client.add("/home/richard/Programme/Music Player/src/Musik.mp3")
Da bekomme ich die Fehlermeldung:
mpd.base.CommandError: [4@0] {} Access denied

(die Musik.mp3 Datei liegt im selben Ordner wie meine .py).
mit

Code: Alles auswählen

client.add("Musik.mp3")
bekomme ich die Fehlermeldung:
mpd.base.CommandError: [50@0] {} No such directory
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das kann man ja auch googeln, und dann lernt man das hier: https://christiantietze.de/posts/2019/0 ... -filename/
Antworten