VLC дистанционное управление из C # - PullRequest
11 голосов
/ 24 апреля 2009

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

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

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

Ответы [ 6 ]

9 голосов
/ 24 апреля 2009

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

Другие опции:

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

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

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

РЕДАКТИРОВАТЬ Похоже, выйдет на этой неделе.

3 голосов
/ 24 апреля 2009

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

Редактировать: Похоже, что этот проект не поддерживается в течение многих лет. Я все равно оставлю ссылку, на случай, если вы захотите взглянуть на нее и, возможно, использовать ее источник.

2 голосов
/ 24 апреля 2009

Вы смотрели на libvlc

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

1 голос
/ 11 ноября 2009

Как использовать libvlc в C ++ http://unick -soft.ru / art / files / libvlcProject.zip Я думаю, использовать libvlc в C # очень похоже.

1 голос
/ 24 апреля 2009

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

0 голосов
/ 24 апреля 2009

Есть также интерфейс rc и даже телнет: http://wiki.videolan.org/Console

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

...