用于视频流的控件?

时间:2012-08-11 23:32:37

标签: wpf wpf-controls video-streaming mediaelement libvlc

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

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

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

2 个答案:

答案 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

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