Получите изображение 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 приложения должны обрабатывать случай, когда пользователь отключил камеру с помощью чудо-кнопки "Настройки". Возможность веб-камеры предоставляет доступ только к видеопотоку. Чтобы предоставить доступ к аудиопотоку, необходимо добавить функцию микрофона.