伪造视频功能列表 - 可能不完整



我正在使用 c# 应用程序中 aForge.NET 库来访问平板电脑联想 Yoga 2(内置摄像头)上的相机设备。

我正在尝试设置流的特定(最大可能)分辨率。为此,我使用了VideoCaptureDevice对象的VideoCapabilities属性。我相信视频功能列表并不完整。我的问题是"为什么?"是否有可能检索更多(视频功能)?

否则,如果没有办法获得更高的分辨率,如何检查并确保我的内置相机仅使用从 VideoCapabilities 属性派生的相机运行?

是什么让我相信我应该看到更多的反驳:

  • 我已经使用 DirectShowCaptureCapabilities-Win32.exe 应用程序检查了 DirectShow 功能。它给了我更多的能力。例如,我正在尝试设置的 1280x960。

  • 运行默认的 Windows 应用程序(从平板电脑锁定屏幕)后,我看到来自更大分辨率的预览 - 可能是 1280x960

  • 在 2.2.5 版库中运行示例 aForge.NET 应用程序(快照制作器)中的代码 在运行相同的代码时获得 5 种不同的功能 库 2.2.0 版为我提供了 10 种不同的功能

代码是:

videoDevices = new FilterInfoCollection( FilterCategory.VideoInputDevice );
...
videoDevice = new VideoCaptureDevice( videoDevices[devicesCombo.SelectedIndex].MonikerString );
videoCapabilities = videoDevice.VideoCapabilities;// that gives me not full list of capabilities
...
videoDevice.VideoResolution = videoCapabilities[videoResolutionsCombo.SelectedIndex];

经过一点发现,这就是我所取得的成就

Aforge Developer告诉我:

该列表可能不完整。尤其是在这些现代平板电脑上, 倾向于提供高分辨率,但每像素值的位数很小。

首先,所有 12 bpp 分辨率都被忽略,因为会导致问题 视频捕获设备。在修复之前,这些决议将被忽略。 其次,从代码中可以看出,只有最高的BPP是 报道。因此,如果您有两种分辨率,例如 640x480x32 和 640x480x24,则仅显示 x32。

这是代码。

另外,如果你们中的任何人遇到类似的问题 - 请注意,相机不仅通过流行的DirectShow界面暴露其功能,而且还通过其他界面或可能具有自己的API。所以试着看看这些。

我想要实现的分辨率只能通过MediaCapture API提供给我。但这专用于Windows Store Aps/UWP。在 Windows 8/8.1 桌面应用程序下很容易找到使用它的方法。

最新更新