Directshow.Net ライブラリを使用するコード (Winforms、C#、.Net 4) があります。デバイスに「ウェブカメラ」が搭載されているが、デバイス マネージャーに画像デバイスとして表示されず、別のものとして表示されるという問題が 2 回発生しました。それが発生すると、DirectShow.Net はそれを認識しないか、ある程度は動作するのに十分認識しますが、ビデオをキャプチャしようとすると爆発します。これは最近、Windows 10 を実行している Microsoft Surface Pro 4 で発生しました。なぜそれが起こっているのか、それを回避する方法は? ハードウェア インターフェイスは私の専門ではありません。これは、直接ハードウェア インターフェイスを扱う唯一のプロダクト コードです。
回答は、VB または C# (またはその他の言語) で行うことができます。
ありがとう
編集:このコード行(DirectShow.Netライブラリから)からエラーが発生していると思います.完全な関数呼び出しはさらに下にあります:
hr = m_VidControl.SetMode(m_pinStill, VideoControlFlags.Trigger);
実際にはウェブカメラではないウェブカメラを搭載したデバイスで開発するためのアクセス権がないため、これを特定するのに苦労しています
返されるエラーは
System.Runtime.InteropServices.COMException (0x80070032): The request is not supported.
at DirectShowLib.DsError.ThrowExceptionForHR(Int32 hr)
全機能コード:
public IntPtr Click()
{
int hr;
// get ready to wait for new image
m_PictureReady.Reset();
m_ipBuffer = Marshal.AllocCoTaskMem(Math.Abs(m_stride) * m_videoHeight);
try
{
m_WantOne = true;
// If we are using a still pin, ask for a picture
if (m_VidControl != null)
{
// Tell the camera to send an image
hr = m_VidControl.SetMode(m_pinStill, VideoControlFlags.Trigger);
DsError.ThrowExceptionForHR(hr);
}
// Start waiting
if (!m_PictureReady.WaitOne(9000, false))
{
throw new Exception("Timeout waiting to get picture");
}
}
catch
{
Marshal.FreeCoTaskMem(m_ipBuffer);
m_ipBuffer = IntPtr.Zero;
throw;
}
// Got one
return m_ipBuffer;
}