Seite 1 von 1

Neu und ein paar Fragen

Verfasst: Sonntag 8. Februar 2009, 22:44
von TiKaey
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)

Verfasst: Sonntag 8. Februar 2009, 23:01
von DasIch
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.

Re: Neu und ein paar Fragen

Verfasst: Sonntag 8. Februar 2009, 23:10
von gerold
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
:-)

Verfasst: Sonntag 8. Februar 2009, 23:31
von TiKaey
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.

Verfasst: Montag 9. Februar 2009, 01:17
von Leonidas
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.

Verfasst: Montag 9. Februar 2009, 01:24
von DasIch
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.

Verfasst: Montag 9. Februar 2009, 08:18
von Hyperion
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!

Verfasst: Montag 9. Februar 2009, 10:58
von TiKaey
... 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.

Verfasst: Montag 9. Februar 2009, 11:16
von Hyperion
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?

Verfasst: Montag 9. Februar 2009, 14:31
von cofi
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.

Verfasst: Montag 9. Februar 2009, 14:34
von DasIch
Phonon Unterstützung ist soweit ich weiß nicht per default mit dabei, im Gegensatz zu PyKDE4.

Verfasst: Montag 9. Februar 2009, 19:04
von TiKaey
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)

Verfasst: Montag 9. Februar 2009, 19:20
von cofi
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 ;)

Verfasst: Montag 9. Februar 2009, 20:06
von TiKaey
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.

Verfasst: Mittwoch 11. Februar 2009, 15:19
von gerold
Hallo!

Ich habe keine Ahnung, ob das etwas taugt.

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

mfg
Gerold
:-)

Verfasst: Dienstag 17. Februar 2009, 15:13
von TiKaey
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*