用vlc播放视频,然后干净地终止该过程

时间:2017-08-13 10:09:53

标签: python subprocess

我正在编写一个播放不同播放器的视频和音频文件的脚本。在这方面,vlc不是唯一的,我想避免使用任何特定的选项,如“--play-and-exit”。 vlc / cvlc的问题在于播放视频/音频(来自终端)后,它不会终止该过程。 我能做的最好的事情可以通过以下脚本来说明,该脚本仅适用于ipython:

import subprocess


def play_with_vlc():
    proc = subprocess.Popen(['/usr/bin/vlc', PATH_TO_FILE])
    try:
        subprocess.communicate(timeout=5)
    except subprocess.TimeoutExpired:
        proc.kill()
        proc.communicate()


play_with_vlc()

然而,这不是我正在寻找的解决方案。因为我不知道播放视频需要多长时间。我只想在停止播放文件后干净安全地终止vlc进程。但它不应该是特定的东西。 有没有办法做到这一点?

修改

好的,从我到目前为止所学到的,我不得不得出结论,最好的方法是计算文件的持续时间。 可以通过对$ ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 PATH linux命令进行子处理来完成。

但我仍然不太明白为什么以下脚本无法按预期工作。

import subprocess
import sys


def play_with_vlc(path_to_file=sys.argv[1]):
    proc = subprocess.Popen(['/usr/bin/vlc', path_to_file])
    try:
        subprocess.communicate(timeout=5)
    except subprocess.TimeoutExpired:
        proc.kill()
        proc.communicate()


if __name__ == "__main__":
    play_with_vlc()

0 个答案:

没有答案