我目前使用C#项目进行LibVLC设置,并使用Panel输出视频流。由于WPF更适合我想要实现的一些GUI选项,我现在已将我的项目切换到它。但是,我注意到WPF控件没有像C#控件这样的句柄。
我找到了这些...... http://wpfmediakit.codeplex.com/ http://videorendererelement.codeplex.com
但是我是WPF的新手,并且不知道如何实际集成它们。在WPF中从LibVlC输出视频流的最佳方法是什么?
答案 0 :(得分:1)
我设法通过使用WindowsFormsHost控件来解决这个问题,并使用我以前在Win Forms应用程序中执行的Panel。似乎仍然使用WPF原生的其他东西会更好,但是现在这个工作正常。
答案 1 :(得分:0)
我担心这是不可能的......
由于WPF控件不是幕后的Win32控件(MS特定的HWND或更通用的HANDLE),就像大多数WinForms控件一样,为libvlc提供一个HANDLE来进行渲染是不可能的或不容易的。
请参阅here
屏幕上的所有WPF元素最终都由HWND支持。创建WPF窗口时,WPF会创建一个顶级HWND,并使用HwndSource将Window及其WPF内容放入HWND中。应用程序中的其余WPF内容共享该单个HWND。菜单,组合框下拉菜单和其他弹出窗口是一个例外。这些元素创建了自己的顶级窗口,这就是为什么WPF菜单可能会越过包含它的窗口HWND的边缘。
您可以尝试使用Window并尝试获取其句柄:
IntPtr windowHandle = new WindowInteropHelper(windowInstance).Handle
然后将此句柄传递给libvlc。请记住,只要在窗口的Loaded事件内获取此句柄,请参阅here
但这会限制您使用顶级窗口控件,这似乎不是您想要的。