为什么由代码创建的WPFMediaKit VideoCaptureElement曾经在MediaFailed中登陆?



我在运行时将VideoCaptureElement添加到窗口中,但是当我运行此代码时,它会触发MediaFailed。但是如果我在 XAML 中添加相同的元素,那么它可以正常工作,我可以看到笔记本电脑摄像头的视频。 我做错了什么吗?请帮忙!

public partial class MainWindow : Window
{
    WPFMediaKit.DirectShow.Controls.VideoCaptureElement VCE;
    public MainWindow()
    {
        InitializeComponent();
        VCE = new WPFMediaKit.DirectShow.Controls.VideoCaptureElement();
        Content = VCE;
    }
    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        VCE.MediaOpened += VCE_MediaOpened;
        VCE.MediaFailed += VCE_MediaFailed;
        VCE.VideoCaptureDevice = WPFMediaKit.DirectShow.Controls.MultimediaUtil.VideoInputDevices[0];  // This is my laptop webcam
    }
    void VCE_MediaOpened(Object sender, RoutedEventArgs e) { ... }
    void VCE_MediaFailed(object sender, WPFMediaKit.DirectShow.MediaPlayers.MediaFailedEventArgs e) { ... }
}

我在 XAML 中工作的 MediaUriElement 遇到了类似的问题,但在代码隐藏中实例化时不起作用。

我的解决方案是初始化控件:

VCE.BeginInit();
VCE.EndInit();

这适用于实例化(VCE = new...(和分配(内容 = VCE(。我还没有测试过你的特定方案,但听起来像是相同的原因 - 使用 XAML 时,必须在 Init 中完成一些额外的工作。

相关内容

最新更新