Удаленное управление 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 через это.
Ответ 4
Как использовать libvlc в С++ http://unick-soft.ru/art/files/libvlcProject.zip
Я думаю, использование libvlc в С# очень похоже.
Ответ 5
Также существует интерфейс rc и даже telnet один: http://wiki.videolan.org/Console
Однако, я бы предпочел libvlc, если это возможно.
Ответ 6
Если то, что вы пытаетесь сделать, это управлять ранее запущенным исполняемым файлом, проверьте Process класс для перечисления всех текущие процессы или сделать это name. Проверьте исполняемый файл в соответствии с vlc.exe
. Затем вы можете получить дескриптор главного окна и сделать P/Invoke для отправки сообщений, как вы делаете, с другими исполняемыми файлами. Это, очевидно, пронизано потенциальными проблемами, например, если есть изменения в методах сокращения клавиатуры.