AvaloniaUI:无法在 UserControl 中嵌入 VideoView 控件 (LibVlcSharp)

问题描述

我是 AvaloniaUI 0.10.5 的新手。目前我在 macOS 上的应用程序中使用 VideoView 控件(LibVLCSharp.Avalonia 3.5.0)。代码是 Donadren 示例 2 的副本: (https://github.com/donandren/vlcsharpavalonia/tree/master/samples/LibVLCSharp.Avalonia.Sample)。

视频播放器在 Window 控件中工作正常,但是当我将代码复制到 UserControl 时(以便在我的应用程序中的不同位置重用播放器),我听到了视频的声音,但没有听到图像。在控制台中我有这个错误

[h264 @ 0x7ff85e8d3600] get_buffer () Failed
[h264 @ 0x7ff85e8d3600] thread_get_buffer () Failed
[h264 @ 0x7ff85e8d3600] decode_slice_header error
[h264 @ 0x7ff85e8d3600] no frame!

我尝试在整个网络上搜索,但找不到任何内容

你能帮我吗,谢谢,对不起,我的英语不好。

<UserControl xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:viewmodels="clr-namespace:Avalonia.NETCoreMVVMApp3.viewmodels"
             xmlns:avalonia="clr-namespace:LibVLCSharp.Avalonia;assembly=LibVLCSharp.Avalonia"
             mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
             x:Class="Avalonia.NETCoreMVVMApp3.Views.VlcControl">
    <Design.DataContext>
        <viewmodels:VlcControlviewmodel/>
    </Design.DataContext>
    <Grid RowDeFinitions="*,Auto">
      <avalonia:VideoView x:Name="VideoView" Grid.Row="0" MediaPlayer="{Binding MediaPlayer}">
      </avalonia:VideoView>
      <Grid Grid.Row="1" RowDeFinitions="Auto,Auto,Auto">
        <Grid Grid.Row="0" ColumnDeFinitions="Auto,*,Auto">
          <TextBlock Text="File (url):" Grid.Column="0" VerticalAlignment="Center" />
          <autocompletebox Name="mediaUrl" Text="{Binding MediaUrl,Mode=TwoWay}" Items="{Binding Played}" FilterMode="Contains" Grid.Column="1" IsDropDownopen="False" />
          <Button Content="Open File" Command="{Binding OpenCommand}" Grid.Column="2" />
        </Grid>
        <Grid Grid.Row="1" ColumnDeFinitions="Auto,Auto">
          <TextBlock Text="{Binding CurrentTime}" Grid.Column="0" />
          <TextBlock Text="{Binding Duration}" Grid.Column="2" />
          <Slider Minimum="0" Maximum="100" Value="{Binding Position}" Grid.Column="1" />
        </Grid>
        <Grid Grid.Row="2" ColumnDeFinitions="Auto,Auto">
          <StackPanel Orientation="Horizontal" Grid.Column="0" Spacing="5">
            <Button Content="Play" Command="{Binding PlayCommand}" />
            <Button Content="Stop" Command="{Binding StopCommand}" />
            <Button Content="Pause" Command="{Binding PauseCommand}" />
            <Button Content="-1s" Command="{Binding BackwardCommand}" />
            <Button Content="+1s" Command="{Binding ForwardCommand}" />
            <Button Content="Next Frame" Command="{Binding NextFrameCommand}" />
          </StackPanel>

          <Grid ColumnDeFinitions="Auto,*" Grid.Column="1">
            <TextBlock Text="{Binding State,StringFormat='State:\{0\}'}" Grid.Column="0" VerticalAlignment="Center" />
            <ScrollViewer Grid.Column="1" MaxHeight="40" HorizontalScrollBarVisibility="disabled">
              <TextBlock Margin="5,0" Text="{Binding @R_731_4045@ion}" textwrapping="Wrap" VerticalAlignment="Center" />
            </ScrollViewer>
          </Grid>

          <StackPanel Orientation="Horizontal" Grid.Column="2" Spacing="2">
            <StackPanel Orientation="Horizontal">
              <TextBlock Text="Rendering:" VerticalAlignment="Center" />
              <ComboBox Selectedindex="{Binding #VideoView.VlcRenderingOptions}">
                <ComboBoxItem Content="{x:Static avalonia:LibVLCAvaloniaRenderingOptions.VlcNative}" />
                <ComboBoxItem Content="{x:Static avalonia:LibVLCAvaloniaRenderingOptions.Avalonia}" />
                <ComboBoxItem Content="{x:Static avalonia:LibVLCAvaloniaRenderingOptions.AvaloniaCustomDrawingOperation}" />
              </ComboBox>
            </StackPanel>
            <CheckBox Content="Stats" IsChecked="{Binding #VideoView.displayRenderStats}" />
            <CheckBox Content="Volume:" IsChecked="{Binding !IsMuted,Mode=TwoWay}" />
            <Slider IsEnabled="{Binding !IsMuted}" Minimum="0" Maximum="100" Width="200" Value="{Binding Volume}" VerticalAlignment="Center">
              <Slider.Styles>
                <Style Selector="Slider:disabled">
                  <Setter Property="Opacity" Value="0.5" />
                </Style>
              </Slider.Styles>
            </Slider>
          </StackPanel>
        </Grid>
      </Grid>
  </Grid>
</UserControl>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)