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

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

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

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

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

was haltet ihr von dieser Lösung?

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

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

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

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: 6732
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

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

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

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: 6732
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

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

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

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:

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

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
lunar

dirty sanchez hat geschrieben:wofür gibts denn das forum?
Ganz sicher nicht, um dir die Dokumentation vorzulesen oder Google für dich zu bedienen.
wenn jeder ewig zeit hätte, würde mal wohl irgendwann die lösung seiner probleme alleine finden. also kann mir jemand weiterhelfen?
Du erwartest also, dass andere sich die Zeit nehmen, die du nicht für Recherche in Dokumentationen oder fürs Googlen verwenden willst? Habe ich das so richtig verstanden?
dirty sanchez
User
Beiträge: 42
Registriert: Freitag 27. Juni 2008, 12:21

nein das erwarte ich nicht, aber es gibt leute die das ja schon wissen!
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Und die haben, um ihr Wissen weiter zu geben, die Dokumentation geschrieben!
dirty sanchez
User
Beiträge: 42
Registriert: Freitag 27. Juni 2008, 12:21

alles klar
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Antworten