Seite 1 von 1

VLC oder Mplayer einbauen und mit python steuern

Verfasst: Samstag 10. Februar 2007, 16:55
von reverse
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

Re: VLC oder Mplayer einbauen und mit python steuern

Verfasst: Samstag 10. Februar 2007, 17:07
von Leonidas
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.

Verfasst: Samstag 10. Februar 2007, 18:57
von reverse
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

Verfasst: Samstag 10. Februar 2007, 19:54
von Leonidas
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.

Verfasst: Samstag 10. Februar 2007, 21:13
von reverse
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

Verfasst: Samstag 10. Februar 2007, 21:31
von gummibaerchen
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 ...

Verfasst: Samstag 10. Februar 2007, 21:50
von reverse
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

Verfasst: Samstag 10. Februar 2007, 21:54
von Leonidas
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.

Verfasst: Samstag 10. Februar 2007, 21:57
von reverse
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()

Verfasst: Samstag 10. Februar 2007, 22:03
von sape
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.

Verfasst: Samstag 10. Februar 2007, 22:42
von reverse
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

Verfasst: Sonntag 11. Februar 2007, 15:59
von Leonidas
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.

Verfasst: Sonntag 11. Februar 2007, 19:32
von reverse
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

Verfasst: Sonntag 11. Februar 2007, 21:07
von Leonidas
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.

Verfasst: Sonntag 11. Februar 2007, 22:13
von PmanX

Verfasst: Sonntag 11. Februar 2007, 23:00
von Leonidas
PmanX hat geschrieben:http://wiki.videolan.org/Console
Richtig - leider bietet das Konsoleninterface (zumindest damals, als vlcoperator programmiert wurde) nicht die benötigten Features.
Genau das wird ja verwendet - leider, mangels Alternativen.

Verfasst: Sonntag 11. Februar 2007, 23:11
von PmanX
Ich war selbst erschrocken, was VLC alles kann.
Rückwärts-Polnisch rechnen kann nicht jeder :wink: