Я пытаюсь создать программу на 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?