Vlc.DotNet WPF视频背景问题

时间:2015-06-02 08:41:59

标签: wpf video vlc

有我的代码。我看到右上角的视频,控件本身位于此处,但主网格背景为空。它应该通过VisualBrush拍摄视频,对吧?我搜索了几个样本并且他们都使用相同的技巧,但它不起作用......

我还尝试在控件之上放置一些控件,但没有任何显示,因为我认为它在内部使用WinForms控件,这是最顶层的。

那么如何将此视频作为背景?

<Grid>
    <vlc:VlcControl  x:Name="myVlcControl" Width="100" Height="100" HorizontalAlignment="Right" VerticalAlignment="Top" />
    <Grid>
    <Grid.Background>
        <VisualBrush Stretch="Uniform">
            <VisualBrush.Visual>
                <Image Source="{Binding VideoSource, ElementName=myVlcControl}" />
            </VisualBrush.Visual>
        </VisualBrush >
    </Grid.Background>
</Grid>

2 个答案:

答案 0 :(得分:0)

MediaElement支持RTSP很好,但它可能不支持您尝试使用的编码/容器。下面生成一个工作流媒体元素,并使用VisualBrush用MediaElement绘制网格的背景:

<Grid x:Name="LayoutRoot">
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition />
    </Grid.RowDefinitions>

    <MediaElement x:Name="MyPlayer"
                Width="640"
                Height="480"
                LoadedBehavior="Play"
                Source="rtsp://granton.ucs.ed.ac.uk/domsdemo/v2003-1.wmv" />

    <Grid Grid.Row="1"
        Width="320"
        Height="240">
        <Grid.Background>
            <VisualBrush Stretch="Uniform" Visual="{Binding ElementName=MyPlayer}" />
        </Grid.Background>
    </Grid>
</Grid>

答案 1 :(得分:0)

@Kolorowezworki提出Airhack control来解决此问题。

示例:

   <airhack:AirControl DataContext="{Binding}">
           <airhack:AirControl.Front>
                 <Image Source="{Binding VideoSource, ElementName=myVlcControl}" />
           </airhack:AirControl.Front>
           <airhack:AirControl.Back>
                 <vlc:VlcControl  x:Name="myVlcControl" Width="100" Height="100" HorizontalAlignment="Right" VerticalAlignment="Top" />
           </airhack:AirControl.Back>
   </airhack:AirControl>

注意:默认情况下,AirControl不支持DataContext Binding,要解决此问题,请分叉或复制存储库,并通过将其传递给“ airhack”窗口来实现对DataContext的支持。

示例:

 public AirControl()
 {
       InitializeComponent();
       alpha = new Alpha(this);
       alpha.DataContext = DataContext;
       DataContextChanged += (sender, args) => alpha.DataContext = DataContext;
 }