2

私は onvif カメラで作業していますが、発見に関していくつかの問題があります。

以下のように非常に基本的な検出コードを使用すると、ネットワーク上のほとんどのデバイスから応答が返されますが、いくつかは破棄されています。トレース ログを追加し、ディスカバリ クライアントによって破棄されたメッセージを次の説明とともに確認できます。

対応する検索操作が完了したか、relatedTo 値が無効であるため、messageId='uuid:xxx' および relatedTo='uuid:xx' の ProbeMatches メッセージが DiscoveryClient によってドロップされました。

トレースと MS Network Monitor の relatedTo 値を見ると、それらはまったく同じように見え、ドロップされているものは最初のいくつかの返信にあるため、操作が完了した後ではないと思います。

私はまた、sourceforge にある onvif デバイス マネージャーを実行しました。これには同じ問題がありますが、デバイスが異なります。以前にこれに遭遇した人はいますか、それを引き起こしている可能性のあるアイデアはありません。

public void TryToDiscoverClients()
    {

        System.Net.ServicePointManager.Expect100Continue = false;

        var endPoint = new UdpDiscoveryEndpoint(DiscoveryVersion.WSDiscoveryApril2005);

        var discoveryClient = new DiscoveryClient(endPoint);
        discoveryClient.FindProgressChanged += discoveryClient_FindProgressChanged;

        FindCriteria findCriteria = new FindCriteria();
        findCriteria.Duration = TimeSpan.MaxValue;
        findCriteria.MaxResults = int.MaxValue;

        findCriteria.ContractTypeNames.Add(new XmlQualifiedName("NetworkVideoTransmitter", @"http://www.onvif.org/ver10/network/wsdl"));
        findCriteria.ContractTypeNames.Add(new XmlQualifiedName("Device", @"http://www.onvif.org/ver10/device/wsdl"));

        discoveryClient.FindAsync(findCriteria);

    }

    private void discoveryClient_FindProgressChanged(object sender, FindProgressChangedEventArgs e)
    {
        Results.Add(e);
    }
4

1 に答える 1

0

ONVIF モードの一部の ACTi カメラ (KCM-3911、I51 など) で同じ問題に遭遇しました。2 つの ONVIF クライアント (ONVIF テスト ツールと Onvif デバイス マネージャー) は、これらのカメラを検出できましたが、本質的にあなたのコードと同等である自分のコードは検出できませんでした。あなたのものと同じエラーを含む WCF メッセージとトレース ログを調べ、プローブとこれらのカメラからの ProbeMatch 応答を比較すると、messageId と relatedTo の両方の値に、WS Addressing で必要な "urn:" プレフィックスが欠落していることに気付きました。

WS Addressing 仕様に依存する ONVIF 仕様に準拠していないこの不一致について、ACTi テクニカル サポートに問い合わせました。一方、ONVIF テスト ツールと Onvif デバイス マネージャーがこれらのカメラを検出するために ProbeMatch をどのように処理しているかを調べています。 WCFのように。

于 2014-11-05T03:31:57.300 に答える