简体   繁体   中英

Playing in-built webcam feed in a UWP app stopped working after?

I'm trying to play the built-in webcam feed in a MediaElement within a UWP app. It works fine for a few users but there is no feed played for most and I'm lost on what could be the issue.

Some observations when the webcam feed doesn't play:

  • The code executes without any exceptions
  • The dialog that requests user permission to access the camera is shown
  • The LED indicating the webcam is in use turns on soon as it is executed, but there is no feed.
  • Skype and Camera apps work fine.
  • The app was working as expected until a week back. A few things that changed in the mean time that could have had an impact are
    • Installed Kaspersky
    • A bunch of windows updates
    • Uninstalled VS2017 professional edition & VS2019 Community edition and installed VS2019 Professional Edition

Some additional information that might be needed to narrow down the reason.

  • Webcam is enabled in the Package manifest of the app
  • App Target version: 18362
  • App Min version: 18362
  • Windows OS Version: 18362

Any help on this would be highly appreciated. Thanks much in advance!

Here is the piece of code used to play the webcam feed where VideoStreamer is a MediaElement .

private async Task PlayLiveVideo()
    {
        var allGroups = await MediaFrameSourceGroup.FindAllAsync();
        var eligibleGroups = allGroups.Select(g => new
        {
            Group = g,

            // For each source kind, find the source which offers that kind of media frame,
            // or null if there is no such source.
            SourceInfos = new MediaFrameSourceInfo[]
            {
    g.SourceInfos.FirstOrDefault(info => info.DeviceInformation?.EnclosureLocation.Panel == Windows.Devices.Enumeration.Panel.Front
        && info.SourceKind == MediaFrameSourceKind.Color),
    g.SourceInfos.FirstOrDefault(info => info.DeviceInformation?.EnclosureLocation.Panel == Windows.Devices.Enumeration.Panel.Back
        && info.SourceKind == MediaFrameSourceKind.Color)
            }
        }).Where(g => g.SourceInfos.Any(info => info != null)).ToList();

        if (eligibleGroups.Count == 0)
        {
            System.Diagnostics.Debug.WriteLine("No source group with front and back-facing camera found.");
            return;
        }

        var selectedGroupIndex = 0; // Select the first eligible group
        MediaFrameSourceGroup selectedGroup = eligibleGroups[selectedGroupIndex].Group;
        MediaFrameSourceInfo frontSourceInfo = selectedGroup.SourceInfos[0];
        
        MediaCapture mediaCapture = new MediaCapture();    
        MediaCaptureInitializationSettings settings = new MediaCaptureInitializationSettings()
        {
            SourceGroup = selectedGroup,
            SharingMode = MediaCaptureSharingMode.ExclusiveControl,
            MemoryPreference = MediaCaptureMemoryPreference.Cpu,
            StreamingCaptureMode = StreamingCaptureMode.Video, 
        };
        try
        {
            await mediaCapture.InitializeAsync(settings);
        }
        catch (Exception ex)
        {
            System.Diagnostics.Debug.WriteLine("MediaCapture initialization failed: " + ex.Message);
            return;
        } 
        var frameMediaSource1 = MediaSource.CreateFromMediaFrameSource(mediaCapture.FrameSources[frontSourceInfo.Id]);               
        VideoStreamer.SetPlaybackSource(frameMediaSource1);
        VideoStreamer.Play();
    }

As mentioned by Faywang-MSFT here , it worked after marking the application as trusted in Kaspersky.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM