Ubuntu 在Linux-ARM64上的GUI中显示/dev/videoX提要

Ubuntu 在Linux-ARM64上的GUI中显示/dev/videoX提要,ubuntu,.net-core,arm,video-capture,avaloniaui,Ubuntu,.net Core,Arm,Video Capture,Avaloniaui,我有一个设备在64位ARM处理器上运行Ubuntu18.04LTS。我想开发一个GUI,让我能够访问可能连接多个设备的摄像头提要(/dev/video0,/dev/video1)。理想情况下,这在.NET堆栈中是可能的(.NET内核和AvaloniaUI是我所看到的)。我知道使用P/Invoke,但对它的使用只有粗略的了解。我也知道图书馆,但我不知道从那里去哪里 如果我不得不将此表述为一个更直接的问题:如何在使用NetCore构建的GUI应用程序(最好是使用AvaloniaUI)中在Ubuntu

我有一个设备在64位ARM处理器上运行Ubuntu18.04LTS。我想开发一个GUI,让我能够访问可能连接多个设备的摄像头提要(/dev/video0,/dev/video1)。理想情况下,这在.NET堆栈中是可能的(.NET内核和AvaloniaUI是我所看到的)。我知道使用P/Invoke,但对它的使用只有粗略的了解。我也知道图书馆,但我不知道从那里去哪里

如果我不得不将此表述为一个更直接的问题:如何在使用NetCore构建的GUI应用程序(最好是使用AvaloniaUI)中在Ubuntu-ARM64设备上显示/dev/videoX提要

  • 安装
  • MainWindow.axaml
  • 
    
  • MainWindow.axaml.cs:
  • 公共类主窗口:窗口
    {
    公共主窗口()
    {
    avalonixamlloader.Load(此);
    if(设计IsDesignMode)
    返回;
    var videoView=this.Get(“videoView”);
    var libVlc=新的libVlc();
    videoView.MediaPlayer=新的MediaPlayer(libVlc);
    videoView.MediaPlayer.Play(新媒体(libVlc,“v4l2://”,FromType.FromLocation));
    }
    }
    

    请注意,您可能需要从libvlcsharp为p/Invoke层安装
    libvlc dev
    软件包才能工作。

    它现在按预期工作,再次感谢@keks!我删除了XAML样式行,并将逻辑移到ViewModel而不是CB。如果你有机会看到这一点,最后一个问题是:如何指定从哪个提要中提取视频?我在这个设备上安装了多个摄像头。是否可以简单地将“mrl路径”更改为
    “v4l2://dev/video3”
    ,并创建多个VideoView、LibVLC和媒体对象?是的,您可以在url中指定设备节点,并且可以使用多个播放器对象。另外,我们将把这个标记为一个答案,因为您回答了我提出的问题,但是未来的读者应该谨慎,在花时间尝试实现它之前,检查两者,看看与多个VideoView控件相关的错误是否已修复。对于单摄像头系统,我相信这个实现可能会像它所代表的那样工作。这可能是LibVLCSharp集成库中的一个问题,因为我在玩mplayer时没有任何大小问题:您可以使用
    mplayer-vo x11 tv://-tv driver=v4l2:device=/dev/video0-zoom-wid
    Mkay获取视频提要,用mplayer复制。似乎是一只阿瓦隆虫