Удаленное управление VLC с С#

Я пытаюсь управлять VLC Media Player с С#. Я попытался получить дескриптор окна с помощью команды FindWindow() из .Net, но поскольку я узнал, что имя окна изменяется каждый раз, когда файл воспроизводится. Самая большая проблема, с которой я сталкиваюсь, заключается в отправке wm_commands в vlc. Этот подход работал с Winamp и проигрывателем Windows Media, но с VLC кажется, что он не будет работать.

Я читал, что VLC можно контролировать из браузера, но я не хочу этого... я видел в нем настройки, что у него есть горячие клавиши, которые можно вызвать... но они могут быть изменены, и если я вызовите их из моего кода каким-то образом... и пользователь меняет их..баммер...

Я немного застрял... любая помощь была бы фантастической... Сорин

Ответ 1

У меня есть код, способный управлять им с помощью сокетов на Интерфейс RC. Это работало до некоторой степени, но у меня было много причуд. перейти в полноэкранный режим, кажется, ничего не делает в течение нескольких секунд после вызова игры. В целом это своего рода работы.

Другие варианты:

Запишите фильтр DirectDraw (очень сложно), но как только это будет сделано, VLC может использоваться вместо или в сочетании с FFMPEG. Существующий код, который управляет медиаплеером, может использовать vlc.

Напишите оболочку interop для libvlc, недавно команда VLC разделила libvlccore с libvlc, насколько мне известно, все interop устарел. Как только вы напишите обертку, вы можете вставить vlc в приложение Windows. (если вам нужно поддерживать x64, вам нужно скомпилировать эти библиотеки под x64.

Просмотрите код VLC и узнайте, есть ли способ отправить эти сообщения Windows.

EDIT Это появится, чтобы выйти на этой неделе.

Ответ 2

Как упоминалось в Eoin, libvlc может использоваться для взаимодействия с VLC. Как пользователь С#, вы можете попробовать привязки .NET, предлагаемые libvlc-sharp.

Изменить: Кажется, что этот проект не поддерживался годами. В любом случае, я оставлю ссылку, если вы хотите взглянуть на нее и, возможно, поместить часть своего источника для использования.

Ответ 3

Вы посмотрели libvlc

Возможно, вы сможете обернуть это в библиотеку и взаимодействовать с VLC через это.

Ответ 5

Также существует интерфейс rc и даже telnet один: http://wiki.videolan.org/Console

Однако, я бы предпочел libvlc, если это возможно.

Ответ 6

Если то, что вы пытаетесь сделать, это управлять ранее запущенным исполняемым файлом, проверьте Process класс для перечисления всех текущие процессы или сделать это name. Проверьте исполняемый файл в соответствии с vlc.exe. Затем вы можете получить дескриптор главного окна и сделать P/Invoke для отправки сообщений, как вы делаете, с другими исполняемыми файлами. Это, очевидно, пронизано потенциальными проблемами, например, если есть изменения в методах сокращения клавиатуры.