0

我目前有一个 C# 项目的 LibVLC 设置,它使用面板输出视频流。由于 WPF 更适合我想要实现的一些 GUI 选项,我现在已经将我的项目切换到它。但是,我注意到 WPF 控件没有像 C# 控件那样的句柄。

我找到了这些... http://wpfmediakit.codeplex.com/ http://videorendererelement.codeplex.com

但是我是 WPF 的新手,不知道如何实际集成它们。在 WPF 中从 LibVlC 输出视频流的最佳方法是什么?

4

2 回答 2

1

我设法通过使用 WindowsFormsHost 控件解决了这个问题,并且只使用了一个面板,就像我之前在我的 Win Forms 应用程序中所做的那样。仍然似乎使用 WPF 原生的其他东西会更好,但现在这工作正常。

于 2012-08-12T06:33:15.423 回答
0

恐怕这不可能……

由于 WPF 控件不是幕后的 Win32 控件(MS 特定的 HWND 或更通用的 HANDLE),就像大多数 WinForms 控件一样,为 libvlc 提供 HANDLE 以进行渲染是不可能或不容易的。

这里

屏幕上的所有 WPF 元素最终都由 HWND 支持。当您创建 WPF Window 时,WPF 会创建一个顶级 HWND,并使用 HwndSource 将 Window 及其 WPF 内容放入 HWND。应用程序中的其余 WPF 内容共享单个 HWND。一个例外是菜单、组合框下拉菜单和其他弹出窗口。这些元素创建自己的顶级窗口,这就是 WPF 菜单可能会超出包含它的窗口 HWND 边缘的原因。

您可以尝试使用 Window 并尝试像这样获取它的句柄:

IntPtr windowHandle = new WindowInteropHelper(windowInstance).Handle

然后将此句柄传递给 libvlc。请记住在窗口的 Loaded 事件中获取此句柄,请参见此处

但这将限制您使用顶级 Window 控件,这似乎不是您想要的。

于 2012-08-12T06:38:08.433 回答