Neu und ein paar Fragen

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
TiKaey
User
Beiträge: 84
Registriert: Montag 24. November 2008, 20:48

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. :o) 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. :o)
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

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.
Benutzeravatar
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!
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?
Ja!
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.
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.

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()
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:

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()
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
TiKaey
User
Beiträge: 84
Registriert: Montag 24. November 2008, 20:48

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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
Phonon kann AFAIR auch GStreamer als Backend nutzen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Leonidas hat geschrieben:Phonon kann AFAIR auch GStreamer als Backend nutzen.
Stimmt, allerdings hat man als Programmierer da keinen Einfluss drauf, das ist abhängig vom Betriebssystem und den Einstellungen des Users.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

DasIch hat geschrieben:
Leonidas hat geschrieben:Phonon kann AFAIR auch GStreamer als Backend nutzen.
Stimmt, allerdings hat man als Programmierer da keinen Einfluss drauf, das ist abhängig vom Betriebssystem und den Einstellungen des Users.
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.

Das das noch nicht ausgereift ist, kann natürlich durchaus sein. Wobei ich unter KDE zumindest Sound habe - und das nutzt ja Phonon bereits!
TiKaey
User
Beiträge: 84
Registriert: Montag 24. November 2008, 20:48

... 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.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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.
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?
Benutzeravatar
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.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Phonon Unterstützung ist soweit ich weiß nicht per default mit dabei, im Gegensatz zu PyKDE4.
TiKaey
User
Beiträge: 84
Registriert: Montag 24. November 2008, 20:48

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)
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

TiKaey hat geschrieben:cofi: Nein, einen Installer für Windows benutzt man selten unter Linux. ;o)
Och gar nich wahr .. unter Wine kann man da nochmal schön nachfühlen, wie schlimm es ohne Paketverwaltung ist ;)
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 ;)
TiKaey
User
Beiträge: 84
Registriert: Montag 24. November 2008, 20:48

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.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hallo!

Ich habe keine Ahnung, ob das etwas taugt.

http://pypi.python.org/pypi/PyMPlayer/

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
TiKaey
User
Beiträge: 84
Registriert: Montag 24. November 2008, 20:48

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*
Antworten