我正试图从C#控制VLC媒体播放器。我尝试使用.Net的FindWindow()命令在窗口上获取句柄,但是当我发现每次播放文件时窗口的名称都会改变。我遇到的最大问题是将wm_commands发送到vlc ..这种方法适用于Winamp和Windows Media Player,但是对于VLC,它似乎不起作用。
我读到VLC可以通过浏览器进行控制,但我不打算...我已经在设置中看到它有一些可以调用的热键..但是它们可以被更改,如果我以某种方式从我的代码中调用它们......并且用户更改它们... bummer ...
我有点卡住......任何帮助都会很棒...... 索林
答案 0 :(得分:9)
我在control it using sockets上有一些能够RC interface的代码。这在一定程度上起了作用,但有很多怪癖。在调用播放后的几秒钟内,进入全屏似乎什么都不做。总的来说它有点工作。
其他选项包括:
编写DirectDraw过滤器(非常难)但是一旦完成,可以使用VLC代替FFMPEG或与FFMPEG结合使用。驱动媒体播放器的现有代码可以使用vlc。
为 libvlc 编写一个互操作包装器,最近VLC团队从libvlccore
拆分libvlc
所以据我所知,所有interop都已出局约会编写包装器后,您可以在Windows应用程序中嵌入vlc。 (如果需要支持x64,则需要在x64下编译这些库。
查看VLC代码,找出是否有办法发送这些Windows消息。
编辑 This appears本周已经问世。
答案 1 :(得分:3)
正如Eoin所说,libvlc
可用于与VLC交互。作为C#用户,您可能希望尝试libvlc-sharp
项目提供的.NET绑定。
编辑:好像这个项目多年来一直没有维护。无论如何,我会留下链接,以防你想看看它,也许可以使用它的一些来源。
答案 2 :(得分:2)
你看过libvlc
吗?您可以将其包装在库中,并通过它与VLC进行交互。
答案 3 :(得分:1)
如果您要执行的操作是控制以前运行的可执行文件,请查看Process类以枚举所有current processes或按name执行此操作。检查可执行文件以匹配vlc.exe
。然后,您可以获取主窗口的句柄,并执行一些P / Invoke来发送消息,就像您使用其他可执行文件一样。这显然充满了潜在的问题,例如键盘切割是否有变化。
答案 4 :(得分:1)
如何在C ++中使用libvlc http://unick-soft.ru/art/files/libvlcProject.zip 我认为,在C#中使用libvlc非常相似。
答案 5 :(得分:0)
还有 rc 界面,甚至还有一个telnet界面:http://wiki.videolan.org/Console
但是,如果可能的话,我更喜欢libvlc。