次の方法で共有


Azure Live Video Analytics for IoT Edge クライアント ライブラリ for .NET - バージョン 1.0.0-beta.1

Live Video Analytics on IoT Edge は、エッジとクラウドにまたがるインテリジェントなビデオ アプリケーションを構築するためのプラットフォームを提供します。 このプラットフォームでは、ライブ ビデオをキャプチャ、記録、分析し、結果、ビデオ分析、ビデオ分析をクラウドまたはエッジの Azure サービスに公開する機能を提供します。 これは拡張可能なプラットフォームとして設計されており、さまざまなビデオ分析エッジ モジュール (Cognitive Services コンテナー、オープンソースの機械学習モデルで構築されたカスタム エッジ モジュール、独自のデータでトレーニングされたカスタム モデルなど) をそれに接続し、ライブ ビデオ パイプラインの構築と実行の複雑さを気にせずにライブ ビデオを分析できます。

IoT EdgeでLive Video Analyticsするクライアント ライブラリを使用して、次の手順を実行します。

  • Microsoft Azure IoT SDK との対話を簡略化する
  • プログラムによってメディア グラフ トポロジとインスタンスを構築する

製品ドキュメント | ダイレクト メソッド | メディア グラフ | ソースコード | サンプル

作業の開始

これはモデルのみの SDK です。 すべてのクライアント操作は、 Microsoft Azure IoT SDK を使用して行われます。 この sdk には、Azure IoT SDK と対話するために使用できるモデルが用意されています。

クライアントを認証する

前述のように、クライアントは Azure IoT SDK から取得されます。 Azure IoT SDK を認証するには、 IoT デバイス 接続文字列を取得する必要があります。 詳細については、 を参照 https://github.com/Azure/azure-iot-sdk-csharpしてください。

var connectionString = "connectionString";
this._serviceClient = ServiceClient.CreateFromConnectionString(connectionString);

パッケージをインストールする

NuGet を使用して .NET 用のLive Video Analytics クライアント ライブラリをインストールします。

dotnet add package Azure.Media.Analytics.Edge --version 1.0.0-beta.1

NuGet を使用して .Net 用Azure IoT Hub SDk をインストールします。

dotnet add package Microsoft.Azure.Devices --version 1.28.1

前提条件

  • このパッケージを使用するには C# が必要です。

  • このパッケージを使用するには、アクティブな Azure サブスクリプションIoT デバイス接続文字列 が必要です。

  • 使用している LVA Edge モジュールのバージョンに対応する SDK のバージョンを使用する必要があります。

    SDK LVA Edge モジュール
    1.0.0b1 2.0

グラフ トポロジの作成と要求の作成

スターター コードの 例を 参照してください

主要な概念

MediaGraph トポロジと MediaGraph インスタンス

グラフ トポロジは、グラフのブループリントまたはテンプレートです。 プレースホルダーを値として使用して、グラフのパラメーターを定義します。 グラフ インスタンスは、グラフ トポロジを参照し、パラメーターを指定します。 これにより、同じトポロジを参照しているが、パラメーターの値が異なる複数のグラフ インスタンスを作成できます。 詳細については、メディア グラフのトポロジとインスタンスに関するページを参照してください

CloudToDeviceMethod

CloudToDeviceMethodazure-iot-hub SDk の一部です。 この方法を使用すると、IoT ハブ内のデバイスに対して一方向の通知を通信できます。 ここでは、 や MediaGraphTopologyGetRequestなどのMediaGraphTopologySetRequestさまざまなグラフメソッドを伝えたいと考えています。 を使用 CloudToDeviceMethod するには、1 つのパラメーター method_name を渡し、そのメソッドの Json ペイロードを設定する必要があります。

パラメーター method_name は、送信するメディア グラフ要求の名前です。 各メソッドの定義済み method_name プロパティを必ず使用してください。 たとえば、「 MediaGraphTopologySetRequest.method_name 」のように入力します。

クラウド メソッドの Json ペイロードを設定するには、メディア グラフ要求メソッドの GetPayloadAsJson() 関数を使用します。 たとえば、directCloudMethod.SetPayloadJson(MediaGraphTopologySetRequest.GetPayloadAsJson()) のように指定します。

グラフ トポロジの作成

グラフ トポロジを作成するには、パラメーター、ソース、シンクを定義する必要があります。

// Add parameters to Topology
private void SetParameters(MediaGraphTopologyProperties graphProperties)
{
    graphProperties.Parameters.Add(new MediaGraphParameterDeclaration("rtspUserName", MediaGraphParameterType.String)
    {
        Description = "rtsp source user name.",
        Default = "dummyUserName"
    });
    graphProperties.Parameters.Add(new MediaGraphParameterDeclaration("rtspPassword", MediaGraphParameterType.SecretString)
    {
        Description = "rtsp source password.",
        Default = "dummyPassword"
    });
    graphProperties.Parameters.Add(new MediaGraphParameterDeclaration("rtspUrl", MediaGraphParameterType.String)
    {
        Description = "rtsp Url"
    });
}
// Add sources to Topology
private void SetSources(MediaGraphTopologyProperties graphProperties)
{
    graphProperties.Sources.Add(new MediaGraphRtspSource("rtspSource", new MediaGraphUnsecuredEndpoint("${rtspUrl}")
        {
            Credentials = new MediaGraphUsernamePasswordCredentials("${rtspUserName}", "${rtspPassword}")
        })
    );
}

// Add sinks to Topology
private void SetSinks(MediaGraphTopologyProperties graphProperties)
{
    var graphNodeInput = new List<MediaGraphNodeInput>
    {
        new MediaGraphNodeInput("rtspSource")
    };
    var cachePath = "/var/lib/azuremediaservices/tmp/";
    var cacheMaxSize = "2048";
    graphProperties.Sinks.Add(new MediaGraphAssetSink("assetSink", graphNodeInput, "sampleAsset-${System.GraphTopologyName}-${System.GraphInstanceName}", cachePath, cacheMaxSize)
    {
        SegmentLength = System.Xml.XmlConvert.ToString(TimeSpan.FromSeconds(30)),
    });
}
private MediaGraphTopology BuildGraphTopology()
{
    var graphProperties = new MediaGraphTopologyProperties
    {
        Description = "Continuous video recording to an Azure Media Services Asset",
    };
    SetParameters(graphProperties);
    SetSources(graphProperties);
    SetSinks(graphProperties);
    return new MediaGraphTopology("ContinuousRecording")
    {
        Properties = graphProperties
    };
}

グラフ インスタンスの作成

グラフ インスタンスを作成するには、既存のグラフ トポロジが必要です。

private MediaGraphInstance BuildGraphInstance(string graphTopologyName)
{
    var graphInstanceProperties = new MediaGraphInstanceProperties
    {
        Description = "Sample graph description",
        TopologyName = graphTopologyName,
    };

    graphInstanceProperties.Parameters.Add(new MediaGraphParameterDefinition("rtspUrl", "rtsp://sample.com"));

    return new MediaGraphInstance("graphInstance")
    {
        Properties = graphInstanceProperties
    };
}

グラフ メソッド要求の呼び出し

デバイスで graph メソッドを呼び出すには、最初に lva sdk を使用して要求を定義する必要があります。 次に、iot sdk を使用してそのメソッド要求を送信します。 CloudToDeviceMethod

var setGraphRequest = new MediaGraphTopologySetRequest(graphTopology);

var directMethod = new CloudToDeviceMethod(setGraphRequest.MethodName);
directMethod.SetPayloadJson(setGraphRequest.GetPayloadAsJson());

var setGraphResponse = await _serviceClient.InvokeDeviceMethodAsync(_deviceId, _moduleId, directMethod);

SDK でさまざまなメディア グラフ トポロジを試すには、公式の サンプルを参照してください。

トラブルシューティング

  • IoT Hubを使用してメソッド要求を送信する場合はCloudToDeviceMethod、メソッド要求名を直接入力しないようにしてください。 代わりに [MethodRequestName.method_name] を使用してください
  • に渡す前に、必ずメソッド要求全体をシリアル化してください CloudToDeviceMethod

次のステップ

共同作成

このプロジェクトでは、共同作成と提案を歓迎しています。 ほとんどの共同作成では、共同作成者使用許諾契約書 (CLA) にご同意いただき、ご自身の共同作成内容を使用する権利を Microsoft に供与する権利をお持ちであり、かつ実際に供与することを宣言していただく必要があります。 詳細については、 https://cla.microsoft.com を参照してください。

問題が発生した場合は、 GitHub で問題を開いてください。

pull request を送信すると、CLA を提供して PR (ラベル、コメントなど) を適宜装飾する必要があるかどうかを CLA ボットが自動的に決定します。 ボットによって提供される手順にそのまま従ってください。 この操作は、Microsoft の CLA を使用するすべてのリポジトリについて、1 回だけ行う必要があります。

このプロジェクトでは、Microsoft オープン ソースの倫理規定を採用しています。 詳細については、「倫理規定の FAQ」をご覧ください。追加の質問やコメントがある場合は opencode@microsoft.com にお問い合わせください。