如何在 Avalonia 窗口中嵌入 LibVLCSharp MediaPlayer?

问题描述 投票:0回答:1

似乎

LibVLCSharp.Avalonia
正在单独的窗口上渲染视频播放器,这导致我的应用程序出现问题。

我正在遵循示例代码here,并且效果很好。但是,我遇到一个问题,当我专注于其中一个控件时,整个窗口都会失去焦点。

这是显示

VideoView
的部分代码:

<Grid RowDefinitions="Auto, *, Auto">
        <Label Grid.Row="0" HorizontalAlignment="Center">Video Player</Label>

        <vlc:VideoView Grid.Row="1" MediaPlayer="{Binding MediaPlayer}"
                       HorizontalAlignment="Stretch"
                       VerticalAlignment="Stretch"
                       PointerEntered="VideoViewOnPointerEntered"
                       PointerExited="VideoViewOnPointerExited">
            <Panel Name="ControlsPanel">
                <StackPanel Orientation="Horizontal" VerticalAlignment="Bottom" Background="#900000FF" Spacing="20">
                    <Button Command="{Binding Play}" Margin="20">Play</Button>
                    <Button Command="{Binding Stop}" Margin="20">Stop</Button>
                </StackPanel>
            </Panel>
        </vlc:VideoView>
</Grid>

我还导出了我的应用程序以在我的 Linux (Hyprland) 安装上测试它,当我拖动窗口时会发生这种情况:

Detached window after moving

这有点难看,因为我必须取消窗口焦点才能截取屏幕截图,但您可以看到控件被放入一个完全独立的窗口中。这显然不理想。

我只是好奇是否有一种方法可以将播放器嵌入到窗口内而不是分开。

c# .net avaloniaui libvlcsharp
1个回答
0
投票

在视频视图可见之前不要开始 Play() 视频。 在窗口打开之前,视频视图无法知道其窗口句柄,但 libvlc 期望在调用播放函数时知道窗口句柄

© www.soinside.com 2019 - 2024. All rights reserved.