.NET MAUI WEB CAM PREVIEW

886 views Asked by At

I am new to .dotnet world. I am trying to stream the web cam on my maui screen (Windows Only) . The problem is default MAUI function to do this job is using MediaPicker CaptureAyncPhoto method which is not working on windows machine and reported as bug on github.

So now i am trying with Aforge Video library to preview web cam on my screen here i dont know how to assign stream to xaml image .

here is my xaml

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="TestWebCam.MainPage">

    <ScrollView>
        <VerticalStackLayout Spacing="25" VerticalOptions="Center">

            <Image  HorizontalOptions="Center"  HeightRequest="300" x:Name="myImage" />

        </VerticalStackLayout>
    </ScrollView>

</ContentPage>

Here us my MyMainPage.xaml.cs

using AForge.Video;
using AForge.Video.DirectShow;
using SkiaSharp;
using System.Drawing;
using System.IO;

namespace TestWebCam;


public partial class MainPage : ContentPage
{
    private VideoCaptureDevice videoDevice;

    

    public MainPage()
    {
        InitializeComponent();
      

        // Get the list of available video devices
        FilterInfoCollection videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
        if (videoDevices.Count == 0)
        {
            DisplayAlert("Error", "No video devices found", "OK");
            return;
        }

        // Select the first video device
        videoDevice = new VideoCaptureDevice(videoDevices[0].MonikerString);

      
        videoDevice.NewFrame += videoDevice_NewFrame;
       
        videoDevice.Start();

    }

    private void videoDevice_NewFrame(object sender, NewFrameEventArgs eventArgs)
    {
       
        using var bitmap = (System.Drawing.Bitmap) eventArgs.Frame.Clone();

      

        //  myImage.Source = ImageSource.FromFile("calendar.png");
    }

    protected override void OnDisappearing()
    {
        base.OnDisappearing();

        // Stop capturing frames from the video device
        videoDevice.SignalToStop();
        videoDevice.WaitForStop();
    }


}

this problem i am facing is this method videoDevice_NewFrame how can i bind the myImage to this stream here.

1

There are 1 answers

0
Slapout On

The .NET MAUI Community Toolkit may be able to help. It has a MediaElement that is supported on Windows.