Seite 1 von 1

mp3-Stream abspielen

Verfasst: Sonntag 19. Juni 2011, 17:54
von waki
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

Re: mp3-Stream abspielen

Verfasst: Sonntag 19. Juni 2011, 18:26
von Hyperion
Schau Dir mal Phonon aus dem Qt-Framework an. Ich vermute das kann so etwas.

Re: mp3-Stream abspielen

Verfasst: Sonntag 19. Juni 2011, 20:16
von noisefloor
Hallo,
Hyperion hat geschrieben:Schau Dir mal Phonon aus dem Qt-Framework an. Ich vermute das kann so etwas.
Ich behaupte nein :-) 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

Re: mp3-Stream abspielen

Verfasst: Sonntag 19. Juni 2011, 20:33
von Hyperion
noisefloor hat geschrieben:Hallo,
Hyperion hat geschrieben:Schau Dir mal Phonon aus dem Qt-Framework an. Ich vermute das kann so etwas.
Ich behaupte nein :-) 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.
Behaupten kannst Du vieles, ich kann es belegen: Link. Ich zitiere:
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.
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.

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.

Re: mp3-Stream abspielen

Verfasst: Sonntag 19. Juni 2011, 20:36
von waki
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.

Re: mp3-Stream abspielen

Verfasst: Sonntag 19. Juni 2011, 20:53
von Hyperion
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.
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.

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.

Re: mp3-Stream abspielen

Verfasst: Sonntag 19. Juni 2011, 22:21
von waki
Gibt es denn kein Modul das sowas ermöglicht:

Code: Alles auswählen

buff = stream.read(2048)
GESUCHTES_MODUL.play(buff)

Re: mp3-Stream abspielen

Verfasst: Sonntag 19. Juni 2011, 22:27
von deets

Re: mp3-Stream abspielen

Verfasst: Sonntag 19. Juni 2011, 22:42
von waki
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:

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
Was kann ich machen?

Re: mp3-Stream abspielen

Verfasst: Sonntag 19. Juni 2011, 22:47
von deets
Nicht auf Windows ein Kommando ausfuehren welches fuer unix gedacht ist? Waere ein Anfang..

Re: mp3-Stream abspielen

Verfasst: Sonntag 19. Juni 2011, 23:27
von deets
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.

Re: mp3-Stream abspielen

Verfasst: Montag 20. Juni 2011, 11:46
von noisefloor
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

Re: mp3-Stream abspielen

Verfasst: Montag 20. Juni 2011, 19:18
von lunar
@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.

Re: mp3-Stream abspielen

Verfasst: Dienstag 21. Juni 2011, 19:14
von waki
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.

Re: mp3-Stream abspielen

Verfasst: Freitag 24. Juni 2011, 14:06
von waki
*push* :)

Re: mp3-Stream abspielen

Verfasst: Freitag 24. Juni 2011, 19:14
von noisefloor
Hallo,

hast du schon den Quellcode von Quod Libet gelesen?

Gruß, noisefloor

Re: mp3-Stream abspielen

Verfasst: Sonntag 26. Juni 2011, 18:56
von waki
hast du schonmal meine beiträge gelesen? ^^ es geht gerade darum pymad unter windows zum laufen zu bringen...

Re: mp3-Stream abspielen

Verfasst: Sonntag 26. Juni 2011, 19:27
von lunar
@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.

Re: mp3-Stream abspielen

Verfasst: Montag 27. Juni 2011, 08:08
von snafu
Hier geht jemand einen Weg, bei dem er Befehle an die MCI sendet. Ich habe hier kein Windows zum Testen, aber vielleicht klappt es ja so.

EDIT: Und das Projekt mp3play nutzt ebenfalls MCI-Befehle zum Abspielen eines MP3-Files.

Re: mp3-Stream abspielen

Verfasst: Montag 27. Juni 2011, 16:09
von waki
Abspielen bekomm ich hin, wenn ich es decodieren kann. Hab nur noch kein passendes Modul gefunden, mit dem ich nicht nur Dateien, sondern nur Teile decodeiren kann...