非推奨になりました。 .NET 用 Azure Video Analyzer Edge クライアント ライブラリ
非推奨になりました。 Azure Video Analyzer プレビュー サービスは廃止されます。2022 年 12 月 1 日までに、Video Analyzer からアプリケーションを移行することをお勧めします。 この SDK は維持されなくなりました。
Azure Video Analyzer は、エッジ インフラストラクチャとクラウド インフラストラクチャの両方にまたがるインテリジェントなビデオ アプリケーションを構築するためのプラットフォームを提供する Azure Applied AI サービス です。 このプラットフォームでは、ライブ ビデオをキャプチャ、記録、分析し、結果、ビデオ、ビデオ分析をエッジまたはクラウドの Azure サービスに公開する機能を提供します。 これは拡張可能なプラットフォームとして設計されており、Cognitive Services モジュールなどのさまざまなビデオ推論エッジ モジュール、またはオープンソースの機械学習または Azure Machine Learning を使用して独自のデータでトレーニングされたカスタム推論モジュールを接続できます。
Video Analyzer Edge のクライアント ライブラリを使用して、次の操作を行います。
- 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してください。
string connectionString = System.Environment.GetEnvironmentVariable("iothub_connectionstring", EnvironmentVariableTarget.User);
var serviceClient = ServiceClient.CreateFromConnectionString(connectionString);
パッケージをインストールする
NuGet を使用して .NET 用 Video Analyzer Edge クライアント ライブラリをインストールします。
dotnet add package Azure.Media.VideoAnalyzer.Edge --prerelease
NuGet を使用して Azure IoT Hub SDk for .NET をインストールします。
dotnet add package Microsoft.Azure.Devices
前提条件
このパッケージを使用するには、アクティブな Azure サブスクリプション と IoT デバイス接続文字列が必要です。
使用している Video Analyzer Edge モジュールのバージョンに対応する SDK のバージョンを使用する必要があります。
SDK Video Analyzer エッジ モジュール 1.0.0-beta.5 1.1 1.0.0-beta.4 1.0 1.0.0-beta.3 1.0 1.0.0-beta.2 1.0 1.0.0-beta.1 1.0
パイプライン トポロジの作成と要求の作成
スターター コードの 例 に関するページを参照してください。
主要な概念
パイプライン トポロジとライブ パイプライン
パイプライン トポロジは、ライブ パイプラインをインスタンス化するためのブループリントまたはテンプレートです。 プレースホルダーを値として使用して、パイプラインのパラメーターを定義します。 ライブ パイプラインはパイプライン トポロジを参照し、パラメーターを指定します。 これにより、同じトポロジを参照しているが、パラメーターの値が異なる複数のライブ パイプラインを作成できます。 詳細については、 パイプライン トポロジとライブ パイプラインに関するページを参照してください。
CloudToDeviceMethod
は CloudToDeviceMethod
、 azure-iot-hub SDk の一部です。 この方法を使用すると、IoT ハブ内のデバイスに対して一方向の通知を通信できます。 ここでは、 や PipelineTopologyGetRequest
などPipelineTopologySetRequest
、さまざまな方法を伝えたいと考えています。 を使用 CloudToDeviceMethod
するには、1 つのパラメーター MethodName
を渡し、そのメソッドの JSON ペイロードを設定する必要があります。
パラメーター MethodName
は、送信する要求の名前です。 各メソッドの定義済み MethodName
プロパティを必ず使用してください。 たとえば、PipelineTopologySetRequest.MethodName
のように指定します。
クラウド メソッドの Json ペイロードを設定するには、パイプライン要求メソッドの GetPayloadAsJson()
関数を使用します。 たとえば、directCloudMethod.SetPayloadJson(PipelineTopologySetRequest.GetPayloadAsJson())
のように指定します。
スレッド セーフ
すべてのクライアント インスタンス メソッドがスレッド セーフであり、相互に独立していることを保証します (ガイドライン)。 これにより、クライアント インスタンスの再利用に関する推奨事項は、スレッド間でも常に安全になります。
その他の概念
クライアント オプション | 応答 | へのアクセス実行時間の長い操作 | エラーの | 処理診断 | あざける | クライアントの有効期間
例
パイプライン トポロジの作成
パイプライン トポロジを作成するには、ソースとシンクを定義する必要があります。
パラメーターの定義
pipelineTopologyProperties.Parameters.Add(new ParameterDeclaration("rtspUserName", ParameterType.String)
{
Description = "rtsp source user name.",
Default = "exampleUserName"
});
pipelineTopologyProperties.Parameters.Add(new ParameterDeclaration("rtspPassword", ParameterType.SecretString)
{
Description = "rtsp source password.",
Default = "examplePassword"
});
pipelineTopologyProperties.Parameters.Add(new ParameterDeclaration("rtspUrl", ParameterType.String)
{
Description = "rtsp Url"
});
ソースの定義
pipelineTopologyProps.Sources.Add(new RtspSource("rtspSource", new UnsecuredEndpoint("${rtspUrl}")
{
Credentials = new UsernamePasswordCredentials("${rtspUserName}", "${rtspPassword}")
})
);
シンクを定義する
var nodeInput = new List<NodeInput>
{
new NodeInput("rtspSource")
};
pipelineTopologyProps.Sinks.Add(new VideoSink("videoSink", nodeInput, "video", "/var/lib/videoanalyzer/tmp/", "1024"));
トポロジのプロパティを設定し、トポロジを作成する
var pipelineTopologyProps = new PipelineTopologyProperties
{
Description = "Continuous video recording to a Video Analyzer video",
};
SetParameters(pipelineTopologyProps);
SetSources(pipelineTopologyProps);
SetSinks(pipelineTopologyProps);
return new PipelineTopology("ContinuousRecording")
{
Properties = pipelineTopologyProps
};
ライブ パイプラインの作成
ライブ パイプラインを作成するには、既存のパイプライン トポロジが必要です。
var livePipelineProps = new LivePipelineProperties
{
Description = "Sample description",
TopologyName = topologyName,
};
livePipelineProps.Parameters.Add(new ParameterDefinition("rtspUrl", "rtsp://sample.com"));
return new LivePipeline("livePIpeline")
{
Properties = livePipelineProps
};
ダイレクト メソッドの呼び出し
デバイスでダイレクト メソッドを呼び出すには、まず Video Analyzer Edge SDK を使用して要求を定義してから、IoT SDK の CloudToDeviceMethod
を使用してそのメソッド要求を送信する必要があります。
var setPipelineTopRequest = new PipelineTopologySetRequest(pipelineTopology);
var directMethod = new CloudToDeviceMethod(setPipelineTopRequest.MethodName);
directMethod.SetPayloadJson(setPipelineTopRequest.GetPayloadAsJson());
var setPipelineTopResponse = await _serviceClient.InvokeDeviceMethodAsync(_deviceId, _moduleId, directMethod);
SDK でさまざまなパイプライン トポロジを試すには、公式の サンプルを参照してください。
トラブルシューティング
- IoT Hubを使用してメソッド要求を送信する場合は
CloudToDeviceMethod
、メソッド要求名を直接入力しないようにしてください。 代わりにMethodRequestName.MethodName
を使用してください
次のステップ
共同作成
このプロジェクトでは、共同作成と提案を歓迎しています。 ほとんどの共同作成では、共同作成者使用許諾契約書 (CLA) にご同意いただき、ご自身の共同作成内容を使用する権利を Microsoft に供与する権利をお持ちであり、かつ実際に供与することを宣言していただく必要があります。 詳細については、 https://cla.microsoft.com を参照してください。
問題が発生した場合は、 GitHub で問題を開いてください。
pull request を送信すると、CLA を提供して PR (ラベル、コメントなど) を適宜装飾する必要があるかどうかを CLA ボットが自動的に決定します。 ボットによって提供される手順にそのまま従ってください。 この操作は、Microsoft の CLA を使用するすべてのリポジトリについて、1 回だけ行う必要があります。
このプロジェクトは、「Microsoft のオープン ソースの倫理規定」を採用しています。 詳細については、倫理規定についてよくあるご質問を参照するか、opencode@microsoft.com 宛てにご質問またはコメントをお送りください。
Azure SDK for .NET