Guten Tag,
ich würde gerne einen mp3-Stream mit Python 2.6 auf Windows abzuspielen. Hab mir schon ein paar Sachen angeschaut, aber alles was ich gefunden habe konnte nur Dateien abspielen. Das ganze sollte wie youtube funktionieren, es soll den Stream laden und auch vorladen, aber auch gleichzeitig abspielen. Hat jemand Erfahrungen damit und kann mir helfen?
gruß waki
mp3-Stream abspielen
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Schau Dir mal Phonon aus dem Qt-Framework an. Ich vermute das kann so etwas.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
- noisefloor
- User
- Beiträge: 4194
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Phonon ist eine Abstraktionsschicht zwischen den KDE(4)-Applikationen und dem Audio-Backend. Dabei stellt Phonon eine einheitliche API bereit - mehr aber nicht. Die Audio-Funktionalität an sich wird durch das Backend bereit gestellt.
Da es aber auch ein GStreamer Backend gibt kann es schon gut sein, dass die Kombi der beiden das kann. Wissen tu' ich das aber auch nicht.
Gehen muss es mit Python aber auf jeden Fall, weil der Audioplayer [urlhttp://de.wikipedia.org/wiki/Quod_Libet_%28Medienspieler%29]Quod Libet[/url] streamen kann - und der ist bekanntlich in Python geschrieben. Im Zweifelsfall also mal den Quellcode lesen
Gruß, noisefloor
Ich behaupte neinHyperion hat geschrieben:Schau Dir mal Phonon aus dem Qt-Framework an. Ich vermute das kann so etwas.

Da es aber auch ein GStreamer Backend gibt kann es schon gut sein, dass die Kombi der beiden das kann. Wissen tu' ich das aber auch nicht.
Gehen muss es mit Python aber auf jeden Fall, weil der Audioplayer [urlhttp://de.wikipedia.org/wiki/Quod_Libet_%28Medienspieler%29]Quod Libet[/url] streamen kann - und der ist bekanntlich in Python geschrieben. Im Zweifelsfall also mal den Quellcode lesen

Gruß, noisefloor
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Behaupten kannst Du vieles, ich kann es belegen: Link. Ich zitiere:noisefloor hat geschrieben:Hallo,
Ich behaupte neinHyperion hat geschrieben:Schau Dir mal Phonon aus dem Qt-Framework an. Ich vermute das kann so etwas.Phonon ist eine Abstraktionsschicht zwischen den KDE(4)-Applikationen und dem Audio-Backend. Dabei stellt Phonon eine einheitliche API bereit - mehr aber nicht. Die Audio-Funktionalität an sich wird durch das Backend bereit gestellt.
Natürlich benötigt Phonon ein Backend, aber der OP fragte ja nicht nach einem Backend, sondern einer Lib, die das "kann". Und Pakete von Qt sollten das Backend umfassen oder dagegen linken. Insofern kann man dann direkt "loslegen", da es Bindings für Python (PyQt / PySide) gibt.Qt uses the Phonon multimedia framework to provide functionality for playback of the most common multimedia formats. The media can be read from files or streamed over a network, using a QURL to a file.
Vielleicht gibt es ja auch direkte GStreamer-Bindings - ich habe einen Vorschlag gemacht, bei dem ich davon ausging, dass es damit geht.
Ob es nun noch ein Backend gibt oder nicht, ist da imho Haarspalterei, sofern Du Dich darauf weiterhin beziehen willst.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
hab mir Phonon mal angekuckt und erstmal nichts passendes gefunden, aber hab aber nur eine Doku in ner anderen Scriptsprache gefunden und das versteh ich leider nicht komplett. Außerdem hab ich nichts passendes zu meinem Problem geunden. Gstreamer hab ich mir auch schon angekuckt, find aber auch nichts gutes dazu.
Das besondere bei mir ist dabei auch, das ich nicht mit der url darauf zugreifen kann, denn ich nutze die grooveshark api aus dem showcase und da kann man auf den stream per read() zugreifen. Das heißt eigentlich brauch ich eine Funktion mit der ich immer einen heruntergeladenen Teil mit z.B. play(buff) abspielen kann.
Das besondere bei mir ist dabei auch, das ich nicht mit der url darauf zugreifen kann, denn ich nutze die grooveshark api aus dem showcase und da kann man auf den stream per read() zugreifen. Das heißt eigentlich brauch ich eine Funktion mit der ich immer einen heruntergeladenen Teil mit z.B. play(buff) abspielen kann.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Naja, man muss sich dafür sicherlich ein wenig in die Qt-Doku "einlesen". PyQt und PySide bieten ja keine eigene "übersetzte" Doku für die von Nokia. Also muss man sich eben die C++-Beispiele in Python übersetzen. Speziell bei den kurzen Snipptes sollte das aber auch ohne C++-Kenntnisse nicht so schwer sein.waki hat geschrieben:hab mir Phonon mal angekuckt und erstmal nichts passendes gefunden, aber hab aber nur eine Doku in ner anderen Scriptsprache gefunden und das versteh ich leider nicht komplett.
Du könntest mal lunars Snippet zu Phonon als Basis für kleinere Experimente nehmen:
Snippet
Natürlich wirst Du nix spezielles fürs Streamen finden - da musst Du mal genauer die Doku studieren, wie man z.B. Musik von Web-Adressen als Quelle angibt. Evtl. findet man da dann doch noch was.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Gibt es denn kein Modul das sowas ermöglicht:
Code: Alles auswählen
buff = stream.read(2048)
GESUCHTES_MODUL.play(buff)
hab ich gemacht, und genau so hab ich mir das eig vorgestellt, außer dass ich pymad nicht installiert bekomme. Wenn ich config_unix ausführe bekomme ich immer einen Error:
Was kann ich machen?
Code: Alles auswählen
C:\Users\xxxxx\Programme\pymad\pymad-0.6>python config_unix.py
Checking for MAD ...Der Befehl "rm" ist entweder falsch geschrieben ode
konnte nicht gefunden werden.
Der Befehl "cc" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Der Befehl "rm" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
test program failed
Config failure
Nicht auf Windows ein Kommando ausfuehren welches fuer unix gedacht ist? Waere ein Anfang..
Tut mir leid, da war ich etwas vorschnell. Es scheint laut Doku schon so gedacht zu sein. Aber wahrscheinlich hat der Author das Skript fuer cygwin geschrieben.
In jedem Fall brauchst du einen Compiler, oder jemanden der das fuer dich fertig compiliert.
In jedem Fall brauchst du einen Compiler, oder jemanden der das fuer dich fertig compiliert.
- noisefloor
- User
- Beiträge: 4194
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
@Hyperion: Den Satz habe ich auch gelesen - basierend darauf hast du Recht. Das mit dem Backend ist aber trotzdem ein wichtiges Detail.
Was mir aber später noch eingefallen ist: Der OP sucht ja was für Windows - du müsste man so wie so prüfen, welche Backends überhaupt für Win verfügbar sind.
In sofern ist der Vorschlag "Quellcode lesen" für Quod Libet vielleicht doch nicht so doof, weil das Prog lt. Projektseite unter Win läuft.
Gruß, noisefloor
@Hyperion: Den Satz habe ich auch gelesen - basierend darauf hast du Recht. Das mit dem Backend ist aber trotzdem ein wichtiges Detail.

Was mir aber später noch eingefallen ist: Der OP sucht ja was für Windows - du müsste man so wie so prüfen, welche Backends überhaupt für Win verfügbar sind.
In sofern ist der Vorschlag "Quellcode lesen" für Quod Libet vielleicht doch nicht so doof, weil das Prog lt. Projektseite unter Win läuft.

Gruß, noisefloor
@noisefloor: Unter Windows nutzt Phonon DirectX, die Frage nach den verfügbaren Backends stellt sich nicht. Im Allgemeinen gibt es eh kein Backend, bei dem Streaming nicht funktionieren würde ...
Der Vorschlag Quod-Libet läuft darauf hinaus, dass der OP gstreamer verwendet, welches unter Windows aufgrund diverser Abhängigkeiten nicht einfach zu installieren ist. Da ist Phonon mit den entsprechenden Installern von PyQt4 oder PySide deutlich einfacher. Aber natürlich auch größer, und als Bibliothek nicht so gut wie gstreamer.
Der Vorschlag Quod-Libet läuft darauf hinaus, dass der OP gstreamer verwendet, welches unter Windows aufgrund diverser Abhängigkeiten nicht einfach zu installieren ist. Da ist Phonon mit den entsprechenden Installern von PyQt4 oder PySide deutlich einfacher. Aber natürlich auch größer, und als Bibliothek nicht so gut wie gstreamer.
deets hat geschrieben:Tut mir leid, da war ich etwas vorschnell. Es scheint laut Doku schon so gedacht zu sein. Aber wahrscheinlich hat der Author das Skript fuer cygwin geschrieben.
In jedem Fall brauchst du einen Compiler, oder jemanden der das fuer dich fertig compiliert.
Was für einen Compiler brauch ich da? Und kann mir das jemand machen(also für pymad)? Dannn hätte ich schon die Lösung ohne den Quellecode von QuodLibet zu lesen.
- noisefloor
- User
- Beiträge: 4194
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
hast du schon den Quellcode von Quod Libet gelesen?
Gruß, noisefloor
hast du schon den Quellcode von Quod Libet gelesen?
Gruß, noisefloor
@waki: Die letzte Version von pymad ist vier Jahre alt, und lässt sich wohl auch nicht so ohne weiteres für Windows übersetzen. Zumindest enthält das Quellarchiv keine gleichwertige Konfigurationsdatei für Windows, zudem benötigt man überhaupt erst einmal libmad samt Header-Dateien für Windows. Insofern bezweifele ich, dass Dir jemand pymad für Windows übersetzen wird.
Dir ist eigentlich klar, dass pymad nur zum Dekodieren dient? Zum Abspielen der Daten benötigst Du dann nochmal ein zusätzliches Modul.
Insofern ist gstreamer wirklich die sinnvollere Lösung.
Dir ist eigentlich klar, dass pymad nur zum Dekodieren dient? Zum Abspielen der Daten benötigst Du dann nochmal ein zusätzliches Modul.
Insofern ist gstreamer wirklich die sinnvollere Lösung.