Несоответствия vlc и python.subprocess - PullRequest
0 голосов
/ 05 апреля 2019

Я пытаюсь создать программу на python, которая может открывать и контролировать экземпляр проигрывателя VLC. Я подумал, что лучший способ сделать это - использовать элемент управления VLC rc с TCP-соединением (поскольку версия, не относящаяся к tcp, кажется, не принимает стандартный стандарт stdin). У меня есть следующий фрагмент кода:

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))

Странно то, что успех или неудача зависят от Popen параметров stdin, stdout, stderr:

  • если все три None, код работает успешно, хотя иногда вывод видео будет происходить в обычном окне VLC (что я и хочу), а иногда в меньшем окне (под названием Direct3D11 output))
  • , если stdin или stdout установлено на PIPE, оно всегда будет открываться в окне Direct3D11
  • если для stderr установлено значение PIPE, программа выдаст значение ConnectionRefusedError, и монитор ресурсов покажет, что vlc не прослушивает порт 11235.

Что именно здесь происходит? Как я могу подключиться к порту VLC во время передачи всех потоков? Есть ли лучший способ подключения к VLC rc control с python?

...