Получите изображение BitMap с IP-камеры, UWP

Я хочу получить изображение с IP-камеры с помощью RaspberryPI3, который я написал этот код, но когда я нажимаю кнопку, система отключается, исключение выдается в App.gics, как я могу исправить этот код?

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Net;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.Storage.Streams;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Media.Imaging;
using Windows.UI.Xaml.Navigation;
using Windows.Web.Http;


namespace App6
{
public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();
    }

    private async void Sample()
    {
        Windows.Storage.Streams.IRandomAccessStream random = await Windows.Storage.Streams.RandomAccessStreamReference.CreateFromUri(new Uri("http://192.168.1.253/SnapShotJPEG?Resolution=320x240&Quality=Motion")).OpenReadAsync();

        Windows.Graphics.Imaging.BitmapDecoder decoder = await Windows.Graphics.Imaging.BitmapDecoder.CreateAsync(random);
        Windows.Graphics.Imaging.PixelDataProvider pixelData = await decoder.GetPixelDataAsync();

        byte[] bytes = pixelData.DetachPixelData();


        BitmapImage image = new BitmapImage();
        using (InMemoryRandomAccessStream stream = new InMemoryRandomAccessStream())
        {
            await stream.WriteAsync(bytes.AsBuffer());
            stream.Seek(0);
            await image.SetSourceAsync(stream);
        }
            IpCamera_1.Source = image; //IpCamera_1 is Image.

    }

    private void Hello_Click(object sender, RoutedEventArgs e)
    {
        Sample();
    }
}
}

Есть ли другое решение для потоковой передачи видео с IP-камеры на Raspberry-Pi? Я использую Windows-10-iot-core.

2 ответа

Поскольку вы подключаетесь к локальной сети, вам следует добавить некоторые необходимые Package.appxmanifest, Щелкните правой кнопкой мыши файл в обозревателе решений, выберите View code и в <Capabilities> элемент добавить следующее:

<Capabilities>
  <Capability Name="internetClient" />
  <Capability Name="internetClientServer" />
  <Capability Name="privateNetworkClientServer" />
</Capabilities>

Пожалуйста, попробуйте добавить webcam способность к вашему Package.appxmanifest,

  <Capabilities>
    <Capability Name="internetClient" />
    <Capability Name="privateNetworkClientServer" />
    <Capability Name="internetClientServer" />
    <DeviceCapability Name="webcam" />
  </Capabilities>

Возможности должны быть объявлены в манифесте пакета приложения универсальной платформы Windows (UWP) для доступа к определенным API или ресурсам, таким как изображения, музыка или устройства, такие как камера или микрофон. Вы можете обратиться к декларациям о возможностях приложения.

Возможность веб-камеры обеспечивает доступ к видеопотоку со встроенной камеры или внешней веб-камеры, что позволяет приложению захватывать фотографии и видео. В Windows приложения должны обрабатывать случай, когда пользователь отключил камеру с помощью чудо-кнопки "Настройки". Возможность веб-камеры предоставляет доступ только к видеопотоку. Чтобы предоставить доступ к аудиопотоку, необходимо добавить функцию микрофона.

Другие вопросы по тегам