I am new to AvaloniaUI 0.10.5. Currently I am using the VideoView control (LibVLCSharp.Avalonia 3.5.0) in an application on macOS. The code is a copy of Donadren example 2: (https://github.com/donandren/vlcsharpavalonia/tree/master/samples/LibVLCSharp.Avalonia.Sample).
The video player works fine in a Window control but when I copy the code into UserControl (to reuse the player in a different place in my application) I hear the sound of the video but not the image. In the console I have this error:
[h264 @ 0x7ff85e8d3600] get_buffer () failed
[h264 @ 0x7ff85e8d3600] thread_get_buffer () failed
[h264 @ 0x7ff85e8d3600] decode_slice_header error
[h264 @ 0x7ff85e8d3600] no frame!
I tried to search all over the web but couldn't find anything.
Can you help me please, Thanks and Sorry for my bad english.
<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,0,0" Text="{Binding Information}" 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>