0

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;
    }
4

1 に答える 1

0

問題は実際には私のコードの別のセクションにあったことがわかりました。ウェブカメラへの接続に関する DirectShow.Net ページの例を使用しましたが、カムの静止ピンを探していました。正常に機能するスティルピンを報告したカムはなかったので、コメントアウトしました。その後、彼らは続けて、ティーを使用してすべてを行います. これらのカメラは静止画とプレビュー ピンを報告していましたが、私は正しく設定していませんでした。ピンを外して、すべてにティーを使用しました。

于 2016-02-25T14:37:42.843 に答える