vlc和python.subprocess不一致

时间:2019-04-05 11:28:20

标签: python subprocess vlc

我正在尝试创建一个可以打开和控制VLC播放器实例的python程序。我认为最好的方法是通过TCP连接使用VLC的rc控件(因为标准标准输入似乎不接受非tcp版本)。我有以下代码片段:

cmd_options=['--control', 'rc:pause_click', '--rc-host', 'localhost:11235']
instance = Popen([r'C:\Program Files\VideoLAN\VLC\vlc.exe', *cmd_options], stdin=PIPE, stdout=PIPE, stderr=PIPE)
connection = create_connection(('localhost', 11235))

奇怪的是,成功或失败取决于Popenstdinstdoutstderr参数:

  • 如果全部三个都是None,则代码可以成功运行,尽管有时视频输出将在常规VLC窗口(这是我想要的)中,有时在较小的窗口(标题为Direct3D11输出)中
  • 如果stdinstdout设置为PIPE,它将始终在Direct3D11窗口中打开
  • 如果stderr设置为PIPE,则程序将引发ConnectionRefusedError,并且资源监视器将指示vlc不在侦听端口11235。

这到底是怎么回事?在管道传输所有流时如何连接VLC端口?是否有更好的方法通过python连接到VLC的{​​{1}}控件?

0 个答案:

没有答案