2012-04-20 16 views
15

Pracuję nad prostym skryptem w języku Python, który powinien coś zrobić, a następnie odtwarzać plik wideo, a następnie zrobić więcej rzeczy.Odtwórz plik wideo za pomocą VLC, a następnie zakończ VLC

jestem zmuszony to zrobić na Windows XP maszynie z Python 3.2.3 i VLC grać mój plik wideo.

Obecnie używam tego kodu ...

vlc_path = '\\path\\to\\vlc.exe' 
video_path = '\\path\\to\\video\\file' 
subprocess.call([vlc_path, video_path]) 

... aby otworzyć VLC i odtworzyć film. Działa ładnie. Jednak skrypt czeka na zakończenie VLC przed jego uruchomieniem. Co jest dobre i chcę zachować to w ten sposób.

Moje pytanie brzmi: Czy istnieje sposób na wyjście z VLC zaraz po odtworzeniu pliku wideo?

Wielkie dzięki za pomoc!

+2

dla dodatkowej kontroli vlc ma powiązania Pythona: http: //wiki.videolan.org/Python_bindings – bmu

+0

Dzięki, bmu, ale to więcej niż potrzebuję. :) – Florian

Odpowiedz

35

Zabawne, vlc ma opcji wiersza poleceń dla tego:

--play-and-exit, --no-play-and-exit 
          Play and exit (default disabled) 

Więc po prostu przekazać tę opcję, aby VLC.

+1

Dziękuję, to działało idealnie. Jedną rzeczą, która wydawała się być ważna, jest ustawienie 'shell = True'. To zadziałało dla mnie: 'subprocess.call ([vlc_path, video_path, '--play-and-exit', '--fullscreen'], shell = True)' – Florian

+1

@Florian. Dziwne. Dla mnie 'shell = False' działało, a' True' nie. Jednak dzięki za wdrożenie! – Mathias711

+0

To nie działało dla mnie z uruchomieniem vlc na Windows 10. Jednak dodanie wspomnianego poniżej manekina spowodowało, że udało się. –

0

Najlepszym sposobem, jaki przychodzi mi na myśl, jest zabicie procesu przez osobny wątek po upływie długości filmu, jeśli znasz długość filmu w Pythonie. Gdzie indziej, zależy to od opcji wiersza poleceń VLC-ów. Może powiesz mu, żeby zamknął się po zagraniu filmu.

+2

Byłoby lepiej użyć tutaj opcji wiersza poleceń, niż nieczytelnie zakończyć proces. – logain

0

Jeśli nic nie działa spróbuj użyć opcji --ignore-config na początku po vlc oprócz http://quit na końcu