Воспроизведение встроенной веб-камеры в приложении UWP перестало работать после этого? - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь воспроизвести канал встроенной веб-камеры в MediaElement в приложении UWP. Он отлично работает для некоторых пользователей, но для большинства не воспроизводится канал, и я не понимаю, в чем может быть проблема.

Некоторые наблюдения, когда канал веб-камеры не воспроизводится:

  • Код выполняется без каких-либо исключений
  • Отображается диалоговое окно, запрашивающее у пользователя разрешение на доступ к камере
  • Светодиод, указывающий, что веб-камера используется, загорается сразу после его выполнения, но нет ленты.
  • Приложения Skype и Камера работают нормально.
  • Приложение работало нормально до недели назад. За это время изменилось несколько вещей, которые могли повлиять:
    • Установленный Kaspersky
    • Набор windows обновлений
    • Удаленная профессиональная версия VS2017 и сообщество VS2019 Edition и установлен VS2019 Professional Edition

Некоторая дополнительная информация, которая может потребоваться, чтобы сузить причину.

  • Веб-камера включена в манифесте пакета приложения
  • Целевая версия приложения: 18362
  • Мин. версия приложения: 18362
  • Windows Версия ОС: 18362

Любая справка по это было бы очень признательно. Заранее большое спасибо!

Вот фрагмент кода, используемый для воспроизведения потока веб-камеры, где VideoStreamer - 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();
    }

1 Ответ

0 голосов
/ 02 июня 2020

Как упоминал Faywang-MSFT здесь , это сработало после того, как программа пометила приложение как доверенное в Kaspersky.

...