使用VLC播放视频文件,然后退出VLC。

21

我正在编写一个简单的Python脚本,它应该执行一些操作,然后播放视频文件,最后执行一些其他操作。

由于使用Windows XP机器和Python 3.2.3以及VLC播放视频文件,我被迫这么做。

我目前正在使用以下代码...

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

我使用脚本打开VLC并播放视频,效果很好。不过,脚本会等待VLC退出后才继续执行,这一点很好,我希望保持原样。

我的问题是:有没有办法在视频文件播放完毕后立即退出VLC?

非常感谢任何帮助!


2
为了更好的控制,VLC提供了Python绑定:http://wiki.videolan.org/Python_bindings - bmu
谢谢,bmu,但那比我需要的多了。 :) - Florian
4个回答

44
有趣的是,vlc有一个针对此功能的命令行选项:
  --play-and-exit, --no-play-and-exit
                             Play and exit (default disabled)

所以,只需将此选项传递给 VLC。


1
谢谢,这个完美地解决了问题。有一件事情似乎很重要,那就是你需要设置 shell=True。对我来说这很有效: subprocess.call([vlc_path, video_path, '--play-and-exit', '--fullscreen'], shell=True) - Florian
1
@Florian。奇怪。对我来说,shell=False有效,而True无效。不过,感谢您的实现! - Mathias711
这对我在Windows 10上运行VLC没有起作用。然而,添加下面提到的虚拟项就解决了问题。 - Tobias Ramforth
备注:如果循环播放处于活动状态,这将无法工作(尽管这是有道理的)。 - Alex M.M.

10
另一个选择是传递虚拟项vlc://quit,例如:
vlc audio1.mp3 audio2.mp3 vlc://quit

来源:https://wiki.videolan.org/Transcode/#Completely_non-interactive_transcoding

完全非交互式转码是指在没有人工干预的情况下进行的转码过程。在这种情况下,通常使用一组预定义的选项和过滤器来处理输入文件并生成所需的输出文件。这种方法的优点是可以批量处理大量文件,并且不需要人的参与,因此可以自动化整个过程。但是,由于无法对每个文件进行定制,因此可能会出现某些文件的转换结果不理想的情况。

1
如果一切都不起作用,尝试在vlc后面加上--ignore-config选项,并在结尾添加http://quit

0
我能想到的最好的方法是,在视频长度过去后,通过一个单独的线程杀死进程,如果你知道Python中视频的长度。否则,这取决于VLC的命令行选项。也许你可以告诉它在播放完电影后关闭。

2
最好使用命令行选项来完成此处的操作,而不是不干净地终止进程。 - logain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接