C# 从USB 3.0摄像头UWP读取数据
我正在使用USB3.0摄像头来显示它的预览屏幕。但Windows似乎无法识别它是成像设备,所以当我尝试打开Windows 10的默认摄像头应用程序时,它显示了一个错误。 所以我的问题是,如何把USB3.0摄像头当作成像设备,我们可以在UWP中使用它?C# 从USB 3.0摄像头UWP读取数据,c#,.net,camera,uwp,C#,.net,Camera,Uwp,我正在使用USB3.0摄像头来显示它的预览屏幕。但Windows似乎无法识别它是成像设备,所以当我尝试打开Windows 10的默认摄像头应用程序时,它显示了一个错误。 所以我的问题是,如何把USB3.0摄像头当作成像设备,我们可以在UWP中使用它? 我不确定我是否正确理解了这个问题 首先,您应该在应用程序清单中启用摄像头/网络摄像头功能 然后试试这个: MediaCapture _mediaCapture = new MediaCapture(); var devices = await D
我不确定我是否正确理解了这个问题 首先,您应该在应用程序清单中启用摄像头/网络摄像头功能 然后试试这个:
MediaCapture _mediaCapture = new MediaCapture();
var devices = await DeviceInformation.FindAllAsync(DeviceClass.VideoCapture);
DeviceInformation deviceInfo = devices.FirstOrDefault();
if (deviceInfo == null)
deviceInfo = devices.ElementAtOrDefault(0);
var settings = new MediaCaptureInitializationSettings()
{
VideoDeviceId = deviceInfo?.Id,
PhotoCaptureSource = PhotoCaptureSource.Auto,
StreamingCaptureMode = StreamingCaptureMode.Video,
};
if (deviceInfo == null)
_mediaCapture = null;
if (_mediaCapture != null)
{
await _mediaCapture.InitializeAsync(settings);
await _mediaCapture.StartPreviewAsync();
}
编辑:
如果它不工作并且设备不包含您需要的摄像头,您应该尝试通过设备id/guid手动查找您的设备:
当你得到aqs时:
var myDevices = await DeviceInformation.FindAllAsync(aqs);
UsbDevice usbDevice = await Windows.Devices.Usb.UsbDevice.FromIdAsync(myDevices[0].Id);
// or try init MediaCaptureInitializationSettings
var settings = new MediaCaptureInitializationSettings()
{
VideoDeviceId = myDevices.FirstOrDefault()?.Id,
PhotoCaptureSource = PhotoCaptureSource.Auto,
StreamingCaptureMode = StreamingCaptureMode.Video,
};
问题是UWP无法识别USB 3.0摄像头是视频捕获设备。因此,我无法通过设备信息找到它。FindAllAsyncIt是指设备不包含usb 3.0摄像头的内容?是的。它检测到我的相机只是一个USB设备,而不是视频捕获设备。是否尝试通过guid或deviceid获取相机设备?查看我的答案编辑
var myDevices = await DeviceInformation.FindAllAsync(aqs);
UsbDevice usbDevice = await Windows.Devices.Usb.UsbDevice.FromIdAsync(myDevices[0].Id);
// or try init MediaCaptureInitializationSettings
var settings = new MediaCaptureInitializationSettings()
{
VideoDeviceId = myDevices.FirstOrDefault()?.Id,
PhotoCaptureSource = PhotoCaptureSource.Auto,
StreamingCaptureMode = StreamingCaptureMode.Video,
};