2012-04-20 32 views
15

Estoy trabajando en un script simple de Python que se supone que debe hacer algo, luego reproduzca un archivo de video y luego haga algunas cosas más.Reproduzca el archivo de video con VLC, luego salga de VLC

estoy obligado a hacer esto en una máquina deWindows XP con Python 3.2.3 y VLC jugar mi archivo de vídeo.

Actualmente estoy usando el código ...

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

... para abrir VLC y reproducir el vídeo. Funciona bien Sin embargo, el script espera a que VLC se cierre antes de que continúe. Lo cual es bueno y quiero mantenerlo así.

Mi pregunta es: ¿Hay alguna manera de cerrar VLC inmediatamente después de que se haya reproducido el archivo de video?

Muchas gracias por cualquier ayuda!

+2

para control adicional vlc tiene enlaces de python: http: //wiki.videolan.org/Python_bindings – bmu

+0

Gracias, bmu, pero eso es más de lo que necesito. :) – Florian

Respuesta

35

Curiosamente, VLC tiene una opción de línea de comandos para esto:

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

Por lo tanto, sólo tiene que pasar esta opción para VLC.

+1

Gracias, esto funcionó a la perfección. Una cosa que parecía ser importante es que establezcas 'shell = True'. Esto funcionó para mí: 'subprocess.call ([vlc_path, video_path, '--play-and-exit', '--fullscreen'], shell = True)' – Florian

+1

@Florian. Extraño. Para mí 'shell = False' trabajó, y' True' no. Sin embargo, gracias por su implementación! – Mathias711

+0

Esto no funcionó para mí al ejecutar vlc en Windows 10. Sin embargo, agregar el objeto ficticio mencionado a continuación fue el truco. –

0

La mejor forma en que puedo pensar es en matar el proceso por un hilo por separado después de que haya pasado la duración del video, si conoce la duración del video en Python. En otro lugar, depende de las opciones de línea de comando de VLC-s. Quizás puedas decirle que se cierre después de jugar la película.

+2

Sería mejor usar la opción de línea de comando aquí en lugar de terminar el proceso sin limpiarlo. – logain

0

Si nada funciona intente usar la opción --ignore-config al principio después de vlc, además de http://quit al final

Cuestiones relacionadas