Hi,
dies ist mein erster Beitrag hier, nachdem ich schon im Hintergrund gelesen habe.
Seit einigen Wochen versuche ich mir Python beizubringen, und habe durchaus auch schon kleinere Erfolge gehabt. ) Angelesen habe ich es mir anfangs über dieses OpenBook (Ich weiß mittlerweile, dass es "böse" ist ;o) und diverser anderer Seiten, nur mit englischen Tutorials tu ich mich manchmal etwas schwer, obwohl ich normal mit Englisch klar komme, nur sind diverse Begriffe halt schwer zu verstehen, wenn man nicht weiß, was es ist oder es sich erst erklären lassen muss.
Letzteres war auch ein Problem, als ich mir einTool mit GUI (mit PyQt4) gebastelt habe.. es war ein Kampf, alles herauszufinden, wie ich die Widgets ansteuern kann. Aber immerhin, es läuft.
Unterwegs bin ich übrigens mit Ubuntu 8.10 (unter Gnome).
Okay, und nun mal zu meinen Fragen. ;o)
In baldiger Zukunft würde ich gerne ein Tool entwerfen welches sowohl IRC als auch einen OGG-Player enthält, der einen Stream aus dem Netz abspielt. Das müsste allerdings auch danach auf Win lauffähig sein, da die meisten der in Frage kommenden Benutzer (ist ein abgeschlossener Bereich) Win-Nutzer sind.
Daher würde ich gerne mal Empfehlungen haben, in welche Richtung ich gehen sollte.
Als GUI kommt Tkinter nicht in Frage (ist mir zu hässlich *g*), dann würde ich eher zu wxPython neigen. Nach dem was ich so gelesen habe, wäre das auch Crossplattform fähig?
Wie sollte man am besten das abspielen des Streams vornehmen? ogg123 wäre zwar schön einfach, aber AFAIK gibt es das auf Win nicht.
PyGame hab ich irgendwie Probleme mit (schon beim kompilieren).
Gst? Jedes Beispiel was ich sehe, hängt irgendwie mit GTK zusammen, das vermittelt den Eindruck, dass es zusammenhängt... Liege ich da richtig?
Das mag alles ziemlich konfus klingen, und vermutlich gehe ich das auch vollkommen falsch an, daher wären mir einen Schubs in die richtige Richtung ganz recht. )
Neu und ein paar Fragen
gstreamer hängt nicht von GTK ab, allerdings wäre dass durchaus eine Überlegung wert weil du damit ja auch ein paar nette Tutorials hast.
Bei Qt hättest du phonon zu Verfügung, dadurch hast du den Vorteil keine weitere Abhängigkeit außer eben Qt zu haben.
Bei Qt hättest du phonon zu Verfügung, dadurch hast du den Vorteil keine weitere Abhängigkeit außer eben Qt zu haben.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo TiKaey!
Willkommen im Python-Forum!
Das komplette Abspielen einer OGG-Datei könnte so aussehen:
Allerdings lässt sich der Player so nicht unterbrechen. Das Lied wird komplett abgespielt.
Interessant ist diesbezüglich noch der Slave-Mode des mplayers. Siehe: http://www.mplayerhq.hu/DOCS/HTML/en/co ... slave-mode
EDIT:
Damit sieht das dann so aus:
mfg
Gerold
Willkommen im Python-Forum!
Ja!TiKaey hat geschrieben:dann würde ich eher zu wxPython neigen. Nach dem was ich so gelesen habe, wäre das auch Crossplattform fähig?
Der "mplayer" läuft auch unter Windows. Ich spiele meine OGG-Dateien hauptsächlich damit ab. Noch dazu ist der mplayer nur eine einzelne EXE-Datei und lässt sich somit gut verteilen.TiKaey hat geschrieben:Wie sollte man am besten das abspielen des Streams vornehmen? ogg123 wäre zwar schön einfach, aber AFAIK gibt es das auf Win nicht.
Das komplette Abspielen einer OGG-Datei könnte so aussehen:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
import subprocess
OGG_FILENAME = "4_Non_Blondes-What's_Up.ogg"
MPLAYER_FILENAME = "mplayer.exe"
def main():
args = [MPLAYER_FILENAME, OGG_FILENAME]
proc = subprocess.Popen(args)
proc.wait()
if __name__ == "__main__":
main()
Interessant ist diesbezüglich noch der Slave-Mode des mplayers. Siehe: http://www.mplayerhq.hu/DOCS/HTML/en/co ... slave-mode
EDIT:
Damit sieht das dann so aus:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
import subprocess
import time
OGG_FILENAME = "4_Non_Blondes-What's_Up.ogg"
MPLAYER_FILENAME = "mplayer.exe"
def main():
args = [MPLAYER_FILENAME, "-slave", "-quiet", OGG_FILENAME]
proc = subprocess.Popen(
args,
stdout = subprocess.PIPE,
stderr = subprocess.STDOUT,
stdin = subprocess.PIPE
)
# 10 sec. abspielen
time.sleep(10)
proc.stdin.write("quit\n")
if __name__ == "__main__":
main()
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
DasIch: Phonon hatte ich auch schon im Visier, nur leider funktioniert das so noch nicht. Ich habe es bei mir installiert, und kann trotzdem keine Anwendungen benutzen, die Phonon verwenden, für die ist es schlichtweg nicht da. Habe irgendwoe gelesen, dass da noch Probleme herrschen mit Python, und es deshalb erstmal rausgenommen wurde.
gerold: Danke. Dass es den mplayer auch für Win gibt, wusste ich nicht. Klingt gut, werde das mal verfolgen.
gerold: Danke. Dass es den mplayer auch für Win gibt, wusste ich nicht. Klingt gut, werde das mal verfolgen.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Phonon kann AFAIR auch GStreamer als Backend nutzen.DasIch hat geschrieben:Bei Qt hättest du phonon zu Verfügung, dadurch hast du den Vorteil keine weitere Abhängigkeit außer eben Qt zu haben.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Stimmt, allerdings hat man als Programmierer da keinen Einfluss drauf, das ist abhängig vom Betriebssystem und den Einstellungen des Users.Leonidas hat geschrieben:Phonon kann AFAIR auch GStreamer als Backend nutzen.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Letzteres ist imho das entscheidene Die Grundidee hinter Phonon ist es ja gerade, dem Programmierer diese Sorge abzunehmen. Programmiere gegen Phonon und kümmere Dich nicht um das Backend auf technischer Ebene.DasIch hat geschrieben:Stimmt, allerdings hat man als Programmierer da keinen Einfluss drauf, das ist abhängig vom Betriebssystem und den Einstellungen des Users.Leonidas hat geschrieben:Phonon kann AFAIR auch GStreamer als Backend nutzen.
Das das noch nicht ausgereift ist, kann natürlich durchaus sein. Wobei ich unter KDE zumindest Sound habe - und das nutzt ja Phonon bereits!
... nur nicht unter Python, so wie es aussieht.
Als Beispiel bei mir... habe alles dafür installiert, was nur geht.... nur der Wrapper (?) für Python ist nicht vorhanden. Entsprechend funktioniert auch das Beispiel davon nicht. Unter anderen Sprachen kann das durchaus funktionieren.
Als Beispiel bei mir... habe alles dafür installiert, was nur geht.... nur der Wrapper (?) für Python ist nicht vorhanden. Entsprechend funktioniert auch das Beispiel davon nicht. Unter anderen Sprachen kann das durchaus funktionieren.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
In dem Fall würde ich durchaus einmal bei den Entwicklern direkt nachfragen! Hast Du mal in der Techbase geguckt, ob da ggf. sogar auf diese Problematik eingegangen wird?TiKaey hat geschrieben:... nur nicht unter Python, so wie es aussieht.
Als Beispiel bei mir... habe alles dafür installiert, was nur geht.... nur der Wrapper (?) für Python ist nicht vorhanden. Entsprechend funktioniert auch das Beispiel davon nicht. Unter anderen Sprachen kann das durchaus funktionieren.
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Ich würde sagen, dass du den binären Installer für Windows benutzt hast, Python 2.5 nutzt und folgendes nicht gelesen hast:
Riverbank Software hat geschrieben: - The Phonon multimedia framework is only included for Python v2.6 and later.
Hyperion: Nein, ich hatte nach diversen Stunden Sucherei immer mehr Hinweise gefunden, dass ich nicht alleine bin, im Gegenteil, ich habe keinen einzigen Hinweis darauf gefunden, dass es funktioniert. Irgendein Beitrag sagte mal was aus von "wird derzeit noch nicht unterstützt" oder.. weiß den Wortlaut nicht mehr.
cofi: Nein, einen Installer für Windows benutzt man selten unter Linux. ;o) Lediglich über apt-get installiert.
Ich hatte zu versuchsweise auch Python 3 installiert, mit gleichem Ergebnis. Und irgendwann gibt man halt doch auf, zumal ich - wie gesagt - Probleme mit der Doku hatte, da es wirklich nur auf englisch ging, zuviel des Guten halt.
Aber abschließend sei hier noch einmal gesagt, dass ich mich eh von PyQt (zumindest vorerst) verabschiede, da mir wxPython besser erscheint. Von daher ist Phonon erst einmal ad-acta gelegt. ;o)
Der aufgezeichnete Weg von gerold ist mir da derzeit schon vollkommen ausreichend. Nun versuche ich das nur noch komplett für meine Zwecke zu verpacken, und dann wird man sehen. ;o)
cofi: Nein, einen Installer für Windows benutzt man selten unter Linux. ;o) Lediglich über apt-get installiert.
Ich hatte zu versuchsweise auch Python 3 installiert, mit gleichem Ergebnis. Und irgendwann gibt man halt doch auf, zumal ich - wie gesagt - Probleme mit der Doku hatte, da es wirklich nur auf englisch ging, zuviel des Guten halt.
Aber abschließend sei hier noch einmal gesagt, dass ich mich eh von PyQt (zumindest vorerst) verabschiede, da mir wxPython besser erscheint. Von daher ist Phonon erst einmal ad-acta gelegt. ;o)
Der aufgezeichnete Weg von gerold ist mir da derzeit schon vollkommen ausreichend. Nun versuche ich das nur noch komplett für meine Zwecke zu verpacken, und dann wird man sehen. ;o)
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Och gar nich wahr .. unter Wine kann man da nochmal schön nachfühlen, wie schlimm es ohne Paketverwaltung istTiKaey hat geschrieben:cofi: Nein, einen Installer für Windows benutzt man selten unter Linux. ;o)
Aber Scherz beiseite, ich dachte dass du es schon unter Windows getestet hättest - dahin soll die Reise ja gehn Und nahm nicht an, dass Ubuntu/Debian so minimalistisch packt
Das was ich vorhabe, soll nachher (auch) unter Win laufen, ja, aber ich kriege hier auf dem Ubuntu-System die Phonon-Unterstützung für Python nicht hin, da ist das programmieren damit dann eher ungünstig. *g*
Ich hätte aber noch eine kurze Frage zu dem oben genannten Vorschlag von gerold, als slave-mode.
Prinzipiell kann ich das ja auch unter Linux so verwenden (vorhandenen mplayer vorausgesetzt), nur eben die .exe entfernen. Komischerweise funktioniert das aber nur in dem nicht-slave-modus oder wenn ich
time.sleep(10)
proc.stdin.write("quit\n")
mit drin habe. Später will ich das Stoppen des Abspielens ja aber erst auf Kommando haben, und nicht auf Pause. *g*
Für Win habe ich mal beides als exe erstellt (mehr kann ich teilweise den späteren Anwendern nicht zumuten ;o)) und da laufen beide Varianten einwandfrei. Unter Linux jedoch nur die mit den beiden Zeilen.
Sonst wird das Teil sofort beendet (auch keine Fehlerausgabe etc.)
Ich verstehe den Sinn der Zeilen, so ist das nicht, aber mir entgeht irgendwie, warum er das zum Abspielen in der Linux-Variante, bzw als .py erstmal braucht.
Ich hätte aber noch eine kurze Frage zu dem oben genannten Vorschlag von gerold, als slave-mode.
Prinzipiell kann ich das ja auch unter Linux so verwenden (vorhandenen mplayer vorausgesetzt), nur eben die .exe entfernen. Komischerweise funktioniert das aber nur in dem nicht-slave-modus oder wenn ich
time.sleep(10)
proc.stdin.write("quit\n")
mit drin habe. Später will ich das Stoppen des Abspielens ja aber erst auf Kommando haben, und nicht auf Pause. *g*
Für Win habe ich mal beides als exe erstellt (mehr kann ich teilweise den späteren Anwendern nicht zumuten ;o)) und da laufen beide Varianten einwandfrei. Unter Linux jedoch nur die mit den beiden Zeilen.
Sonst wird das Teil sofort beendet (auch keine Fehlerausgabe etc.)
Ich verstehe den Sinn der Zeilen, so ist das nicht, aber mir entgeht irgendwie, warum er das zum Abspielen in der Linux-Variante, bzw als .py erstmal braucht.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Danke für den Link. :o)
Noch zur Ergänzung... prinzipiell funktioniert der Code oben mit mplayer, nur gibt es scheinbar das Problem bei Streams, dass das Verbinden zu lange dauert... mit der Pause dazwischen, oder dem Warten auf eine Eingabe klappt es allerdings hervorragend.
Für den Fall, dass noch mal jemand anders das Problem haben sollte.. auch wenn ich das mal eher auf mein Denken schiebe. ;o)
Damit bin ich jedenfalls schon einen entschiedenen Schritt weiter. Der Rst ist fast Killefit. *g*
Noch zur Ergänzung... prinzipiell funktioniert der Code oben mit mplayer, nur gibt es scheinbar das Problem bei Streams, dass das Verbinden zu lange dauert... mit der Pause dazwischen, oder dem Warten auf eine Eingabe klappt es allerdings hervorragend.
Für den Fall, dass noch mal jemand anders das Problem haben sollte.. auch wenn ich das mal eher auf mein Denken schiebe. ;o)
Damit bin ich jedenfalls schon einen entschiedenen Schritt weiter. Der Rst ist fast Killefit. *g*