Python Mplayer脚本在播放时不运行

时间:2016-06-23 18:53:56

标签: python mplayer

我非常喜欢使用Python和Linux命令,但我正试图将其包围起来。

我的应用程序比这个样本更大,但我试图在扩展之前使其工作。

我在从属模式下使用mplayer播放视频片段,但我想在片段完成后自动将其删除。所以我的想法是在slave模式下启动mplayer然后命令'get_time_length',存储该值,为该值休眠,杀死它并返回主程序。

Business.searchWithTerm("Restaurants", sort: .Distance, categories: ["asianfusion", "burgers"], deals: true) { (businesses: [Business]!, error: NSError!) -> Void in

    for business in businesses {
        print(business.name!)
        print(business.address!)
    }
}

我遇到的问题是,一旦视频片段开始播放,它就不会在播放期间运行任何命令。我也不确定我的语法是否正确以便检索命令行但我至少想知道如何在播放视频的同时使用我的脚本向mplayer发送命令。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用subprocess中建议的docs lib,其中提到了os.popen 自2.6版以来已弃用:此功能已过时,您需要做的就是使用check_call程序将在视频播放时结束。

from subprocess import  check_call

path = '/media/*/button1/*'
check_call(['mplayer',"-fs", '-quiet' ,'-slave',path])

如果您想以某种方式进行通信,您将使用subprocess.Popen,这将在循环中打印所有输出,并在用户输入ctrl-c时终止该过程:

从进口睡眠时间开始    来自子进程导入Popen,PIPE

path = '/media/*/button1/*'
try:
    p = Popen(['mplayer', '-quiet' ,'-slave', path],stdout=PIPE, stdin=PIPE)
    for line in iter(p.stdout.readline,""):
        print(line)
except KeyboardInterrupt:
    p.terminate()

如果您想发送命令,请写入 p.stdin