Video in loop abspielen

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.
dirty sanchez
User
Beiträge: 42
Registriert: Freitag 27. Juni 2008, 12:21

Freitag 11. Juli 2008, 12:51

Hallo,
wie kann man mit Python den MPlayer oder vlc-Player starten und ein Video in loop abspielen lassen?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Freitag 11. Juli 2008, 12:54

Am besten per Subprocess Modul. Dann musst Du "nur" noch rausfinden, wie man den Playern eine Datei zum Öffnen übergibt und ihn dazu überredet, das Video im Loop zu spielen. Ist also weniger ein Python-Problem ;-)
dirty sanchez
User
Beiträge: 42
Registriert: Freitag 27. Juni 2008, 12:21

Freitag 11. Juli 2008, 12:56

wie funktioniert das subprocess-modul?

subprocess.Popen(args, stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell=True)

damit kann ich irgendwie nicht so viel anfangen.
lunar

Freitag 11. Juli 2008, 13:12

Die Doku hält doch unter unter Replacing older functions ... genügend Beispiele bereit.

Btw, "shell=True" würde ich mir gar nicht erst angewöhnen ...
dirty sanchez
User
Beiträge: 42
Registriert: Freitag 27. Juni 2008, 12:21

Freitag 11. Juli 2008, 13:41

was haltet ihr von dieser Lösung?

os.system(r'"C:\Program Files\MPlayer for Windows\mplayer.exe" -loop 0 C:\...\video.avi')
lunar

Freitag 11. Juli 2008, 14:00

dirty sanchez hat geschrieben:os.system(r'"C:\Program Files\MPlayer for Windows\mplayer.exe" -loop 0 C:\...\video.avi')
Gar nichts. Diese Lösung kommt nicht mit Sonderzeichen und Leerzeichen in Dateinamen zurecht.

Im Übrigen sollte es mit der Dokumentation ein leichtes sein, diese Zeile in einen subprocess-Aufruf zu verwandeln.
dirty sanchez
User
Beiträge: 42
Registriert: Freitag 27. Juni 2008, 12:21

Freitag 11. Juli 2008, 14:24

klar kommt sie mit leerzeichen zurecht. habs doch ausprobiert bevor ichs reingestellt hab.
BlackJack

Freitag 11. Juli 2008, 14:30

Glaube ich nicht. Es sei denn `os.system()` ruft bei Dir eine eigenartige Shell auf. Womit wir auch wieder bei dem Problem wären, warum man die Finger von `os.system()` lassen sollte.
Benutzeravatar
snafu
User
Beiträge: 5459
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Freitag 11. Juli 2008, 14:30

subprocess.call(['vlc', '-L', 'beispiel.mp3'])

Wie du siehst musst du alle Argumente, die ausgeführt werden sollen, als Liste übergeben.
lunar

Freitag 11. Juli 2008, 14:48

dirty sanchez hat geschrieben:klar kommt sie mit leerzeichen zurecht. habs doch ausprobiert bevor ichs reingestellt hab.
Im Literal, welches das Kommando enthält, Anführungszeichen um den Dateinamen zu setzen, bedeutet nicht automatisch, dass das Kommando mit Leerzeichen zurecht kommt.

"system" ist von allen Möglichkeiten in der Standardbibliothek die schlechteste, und solange du nicht mal weißt, welche Probleme du dir damit ins Haus holst, kannst du dir damit prima ins eigene Bein schießen.

Nutze subprocess, snafu war sogar so freundlich, dir die Dokumentation vorzulesen ;)
Benutzeravatar
snafu
User
Beiträge: 5459
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Freitag 11. Juli 2008, 15:00

lunar hat geschrieben:Nutze subprocess, snafu war sogar so freundlich, dir die Dokumentation vorzulesen ;)
Inklusive vlc --help ^^
dirty sanchez
User
Beiträge: 42
Registriert: Freitag 27. Juni 2008, 12:21

Montag 14. Juli 2008, 07:30

danke, aber subprocess.call sagt mir nichts, in der referenz stehts mit subprocess.Popen und das funktioniert so auch!?
dirty sanchez
User
Beiträge: 42
Registriert: Freitag 27. Juni 2008, 12:21

Montag 14. Juli 2008, 08:44

nun hab ich noch ein problem:
während ein video abgespielt wird und ich ein neues video starte läuft das alte weiter und das neue nur im hintergrund (zwei player laufen).
jetzt hätt ich aber gern das wenn ein neues video gestartet wird, das alte vorher beendet wird (nur ein Player läuft).
wie geht das (mit subprocess)?
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Montag 14. Juli 2008, 10:06

dirty sanchez hat geschrieben:nun hab ich noch ein problem:
während ein video abgespielt wird und ich ein neues video starte läuft das alte weiter und das neue nur im hintergrund (zwei player laufen).
jetzt hätt ich aber gern das wenn ein neues video gestartet wird, das alte vorher beendet wird (nur ein Player läuft).
wie geht das (mit subprocess)?
Mit Eigeninitiative.
http://www.google.ch/search?q=python+kill+process
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
dirty sanchez
User
Beiträge: 42
Registriert: Freitag 27. Juni 2008, 12:21

Montag 14. Juli 2008, 14:17

wofür gibts denn das forum?
wenn jeder ewig zeit hätte, würde mal wohl irgendwann die lösung seiner probleme alleine finden. also kann mir jemand weiterhelfen?
geht das beenden eines subprocess nur über win32? ich will einfach wenn ich ein video starte das laufende video vorher beenden. mplayer macht ein neues fenster auf (zwei videos laufen) und MPUI bricht die aktion ab(kein video läuft). schonmal im voraus danke
Antworten