VLC oder Mplayer einbauen und mit python steuern

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.
reverse
User
Beiträge: 62
Registriert: Mittwoch 29. November 2006, 22:43

Samstag 10. Februar 2007, 16:55

Hello an alle

ist es möglich ein applikation in python gui zu embedden?
zum beispiel VLC oder Mplayer einbauen und mit python steuern?
beziehungsweise python soll eher wie fernshen remote control funktion ubernehmen und folgender param übergeben mms://stream.n-tv.de/ntvlive an VLC/Mplayer

wenn ja, welche wäre eher geeignet dafür?
GTK
TKinter
wxGlade

Kann mir da jemand weiter helfen?
gibt es schon so was als demo?
mfg

reverse
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Samstag 10. Februar 2007, 17:07

reverse hat geschrieben:ist es möglich ein applikation in python gui zu embedden?
zum beispiel VLC oder Mplayer einbauen und mit python steuern?
Ja, damit.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
reverse
User
Beiträge: 62
Registriert: Mittwoch 29. November 2006, 22:43

Samstag 10. Februar 2007, 18:57

Hello Leonidas
Danke fürs feedback!!!

Gibt es documentation oder mehr info dazu, ich erhalte error meldung?
C:\Python24\pythonw: can't open file 'vlcoperator.py': [Errno 2] No such file or directory
>Exit code: 2
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Samstag 10. Februar 2007, 19:54

reverse hat geschrieben:Gibt es documentation oder mehr info dazu,
Nein, aber wenn du Fragen hast oder Patches kann ich sie unter Umständen in die Datei einchecken.
reverse hat geschrieben:ich erhalte error meldung?
C:\Python24\pythonw: can't open file 'vlcoperator.py': [Errno 2] No such file or directory
>Exit code: 2
Das heißst wohl, dass dein Python-Interpreter die Datei nicht finden kann. Du musst natürlich den Pfad so angeben, dass sie gefunden werden kann - ist aber nicht mein Fehler, da kann vlcoperator.py auch nichts dafür.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
reverse
User
Beiträge: 62
Registriert: Mittwoch 29. November 2006, 22:43

Samstag 10. Februar 2007, 21:13

Das heißst wohl, dass dein Python-Interpreter die Datei nicht finden kann. Du musst natürlich den Pfad so angeben, dass sie gefunden werden kann - ist aber nicht mein Fehler, da kann vlcoperator.py auch nichts dafür.
Ich habe vlc in c:\VLC installiert.
beim location hab versucht absoultes pfad eingegeben aber leider erhalte ich immer noch error meldung.

Code: Alles auswählen

def discover_executable():
    """Searches the VideoLAN CLient executable"""
    try:
        #import _winreg
        #uninstall_key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,
         #   r'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\VLC media player')
        #location = _winreg.QueryValueEx(uninstall_key, 'DisplayIcon')[0]
        location = 'c:\VLC'
    except ImportError, e:
        # a non Windows-OS, much easier
        location = 'vlc'

    return location
neu fehler meldung
File "vlcoperator.py", line 67, in ?
vlco = VLCOperator(discover_executable())
File "vlcoperator.py", line 15, in __init__
subprocess.Popen(command, shell=False)
File "C:\Python24\lib\subprocess.py", line 543, in __init__
errread, errwrite)
File "C:\Python24\lib\subprocess.py", line 706, in _execute_child
startupinfo)
WindowsError: [Errno 5] Zugriff verweigert
gummibaerchen
User
Beiträge: 51
Registriert: Samstag 7. Oktober 2006, 15:13

Samstag 10. Februar 2007, 21:31

reverse hat geschrieben: Ich habe vlc in c:\VLC installiert.
beim location hab versucht absoultes pfad eingegeben aber leider erhalte ich immer noch error meldung.

Code: Alles auswählen

def discover_executable():
    """Searches the VideoLAN CLient executable"""
    try:
        #import _winreg
        #uninstall_key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,
         #   r'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\VLC media player')
        #location = _winreg.QueryValueEx(uninstall_key, 'DisplayIcon')[0]
        location = 'c:\VLC'
    except ImportError, e:
        # a non Windows-OS, much easier
        location = 'vlc'

    return location
Es gibt jetzt 2 Möglichkeiten
1) Programme werden unter Windows jetzt als Ordner getarnt
2) Programme haben keine .exe Endung mehr
:D

Wie wärs den KOMPLETTEN Pfad anzugeben?
In der Art: C:\VLC\vlc.exe ...
reverse
User
Beiträge: 62
Registriert: Mittwoch 29. November 2006, 22:43

Samstag 10. Februar 2007, 21:50

mit location = 'C:\VLC\vlc.exe'

immer noch error
WindowsError: [Errno 123] Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch

schon einbisschen komisch...den pfad ist absolut richtig
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Samstag 10. Februar 2007, 21:54

reverse hat geschrieben:mit location = 'C:\VLC\vlc.exe'
Du musst entweder

Code: Alles auswählen

location = r'C:\VLC\vlc.exe'
oder

Code: Alles auswählen

location = 'C:\\VLC\\vlc.exe'
oder

Code: Alles auswählen

location = 'C:/VLC/vlc.exe'
So wie du es gemacht hast geht es nicht - ``\v`` ist ein Sonderzeichen in dem Kontext.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
reverse
User
Beiträge: 62
Registriert: Mittwoch 29. November 2006, 22:43

Samstag 10. Februar 2007, 21:57

bin gerade beim lesen vom python bindings

http://wiki.videolan.org/PythonBinding
Win32 initialization

If the vlc module was not compiled with the exact same prefix as the VLC installation (e.g. c:\\Program Files\\Videolan), then it cannot find itself the installation directory (stored in the registry Software\VideoLAN\VLC\InstallDir), and the MediaControl instanciation will fail with a message like "Cannot find interface plugins".

The workaround consists in changing directory to the VLC installation directory before instanciating the MediaControl object.

def get_registry_value (self, subkey, name):
import _winreg
value = None
for hkey in _winreg.HKEY_LOCAL_MACHINE, _winreg.HKEY_CURRENT_USER:
try:
reg = _winreg.OpenKey(hkey, subkey)
value, type_id = _winreg.QueryValueEx(reg, name)
_winreg.CloseKey(reg)
except _winreg.error:
pass
return value

vlcpath=get_registry_value('Software\\VideoLAN\\VLC','InstallDir')
if vlcpath is None:
print "Cannot locate VLC installation directory"
else:
os.chdir(vlcpath)
mc=vlc.MediaControl()
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Samstag 10. Februar 2007, 22:03

reverse hat geschrieben:
Das heißst wohl, dass dein Python-Interpreter die Datei nicht finden kann. Du musst natürlich den Pfad so angeben, dass sie gefunden werden kann - ist aber nicht mein Fehler, da kann vlcoperator.py auch nichts dafür.
Ich habe vlc in c:\VLC installiert.
beim location hab versucht absoultes pfad eingegeben aber leider erhalte ich immer noch error meldung.
Du sollst doch nicht den Pfad im Script ändern! Leonidas meinte das du python den Pafd des Scripts schon geben musst.

Also in Verzeichnis von vlcoperator.py wechseln und dann "python vlcoperator.py" ausführen.

Oder, falls der Pfad von Python nicht in der ``path`` Umgebungsvariablen von Windows ist, muss du dann stattdessen ins Python verzeichne wechseln und dann den kompletten Pfad mit scriptname an python übergeben:
Z.B.:

Code: Alles auswählen

c:\> cd python
c:\python> python "c:\mein pfad zu dem script\vlcoperator.py"
Der Vorgang das in der Registry nach dem Eintrag von VLC gesucht wird unter Windows hat Leonidas nicht zum Spaß gemacht, sondern hat einen Sinn und sollte daher nicht selber geändert werden.
reverse
User
Beiträge: 62
Registriert: Mittwoch 29. November 2006, 22:43

Samstag 10. Februar 2007, 22:42

c:\> cd python
c:\python> python "c:\mein pfad zu dem script\vlcoperator.py"
erhalte immer noch error meldung obwohl alle meine programmen (virus/utorrent/firewall) nicht am laufen sind.
urllib.urlopen('http://localhost:8080/?control=play&item=%s' % elements[-1])
IndexError: list index out of range
ist das ein socket error??

vielleicht mal grundsaztliches...was macht den unterschied?
vlcoperator.py zu executieren aus editor (scite) oder durch
console (cd python)?

mfg
reverse
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 11. Februar 2007, 15:59

reverse hat geschrieben:
urllib.urlopen('http://localhost:8080/?control=play&item=%s' % elements[-1])
IndexError: list index out of range
ist das ein socket error??
Nein, das ist ein IndexError, steht ja dran.

Da scheint wohl was am Regex-Code kaputt zu sein. VIelleicht hat VLC den HTML-Code etwas verändert, so dass die Regex ins leere geht. Dummerweise hat VLC kein gescheites Interface, über das man zugreifen könnte. So ist das nunmal ziemlich fragil. Aber über telnet wird die Funktionalität leider nicht bereitgestellt.

Wäre am besten, wenn man VLC über DBus steuern könnte, aber das gibt es unter Windows nicht.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
reverse
User
Beiträge: 62
Registriert: Mittwoch 29. November 2006, 22:43

Sonntag 11. Februar 2007, 19:32

Ich möchte mich herzlich bei euch alle, besonders
Leonidas bedanken für die tolle unterstützung und feedbacks!

sorry, wenn ich einbisschen auf die wecker gehe :D .....
na, ja es ist erst seit paar wochen dass ich mit python beschäftige.


hey Leonidas was IndexError betrifft..muss ich damit abfinden
oder gibt es doch ein hack lösung?


mfg
reverse
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 11. Februar 2007, 21:07

reverse hat geschrieben:hey Leonidas was IndexError betrifft..muss ich damit abfinden
oder gibt es doch ein hack lösung?
Du kannst natürlich die Regex anpassen - ich habe die wenn ich mich richtig erinnere, auch nicht selbst geschrieben.

Eine Möglichkeit wäre auch, BeautifulSoup zu nehmen, aber dann hat man zusätzliche Abhängigkeiten, was auch nicht optimal ist.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
PmanX
User
Beiträge: 123
Registriert: Donnerstag 25. Januar 2007, 13:50
Wohnort: Germany.BB.LOS
Kontaktdaten:

Sonntag 11. Februar 2007, 22:13

Antworten