LibVLCSharp.WPF VideoView.Content(叠加)滚动

LibVLCSharp.WPF VideoView.Content (overlay) scrolling

我正在尝试在不断变化的视图(滚动、调整大小等)中包含 VideoView 和一些叠加层。问题是,叠加层停留在相同的位置。我试图修复它,我已经搜索了解决方案,但我无法找到或想出任何东西。有可能以某种方式做到这一点吗?

为了提供演示,我从LibVLCSharp.WPF.Sample 应用程序如下:

Example1.xaml
...
<ScrollViewer>
    <StackPanel>
        <StackPanel Background="Blue" Height="300" Width="200"/>
        <uc:VideoView x:Name="VideoView" Width="200" Height="200"/>
        <StackPanel Background="Red" Height="300" Width="200"/>
    </StackPanel>
</ScrollViewer>
...

Example1.xaml.cs
...
public Example1()
{
    InitializeComponent();

    _controls = new Controls(this);
    VideoView.Content = _controls;
    VideoView.Height = 200;
}
...

这使得 window 可滚动,应该可以证明该问题。问题是,开始和停止按钮不随 VideoView.

滚动

取消滚动: 滚动:

提前致谢。

如果您关注了 LibVLCSharp 和 Vlc.DotNet 中 "writing controls over a vlc view" 的悠久历史,以及更广泛的关于 "writing WPF control over a WinFormsHost" 的问题,您就会知道这完全是关于技巧和权衡的。

简而言之:

  • WPF 没有显示视频的高效方式,因此我们需要创建一个 WinFormsHost
  • 用户希望能够轻松控制视频。 WPF 不能轻易做到这一点(它被命名为 "airspace issue"),我们试图提供一个开箱即用的解决方案,这实际上是一个 hack 并绘制了一个 window 浮动在上面。

我认为问题在于我们如何处理浮动 window,您应该 post 在 code.videolan.org 上提出问题。否则,您将需要使用自己的修复程序

重新实现 VideoView