非推奨になりました。 JavaScript 用 Azure Video Analyzer Edge クライアント ライブラリ

非推奨になりました。 Azure Video Analyzer プレビュー サービスは廃止されます。2022 年 12 月 1 日までに、Video Analyzer からアプリケーションを移行することをお勧めします。 この SDK は維持されなくなりました。

Azure Video Analyzer は、[Azure Applied AI Service][applied-ai-service] であり、エッジ インフラストラクチャとクラウド インフラストラクチャの両方にまたがるインテリジェントなビデオ アプリケーションを構築するためのプラットフォームを提供します。 このプラットフォームでは、ライブ ビデオをキャプチャ、記録、分析し、結果、ビデオ、ビデオ分析をエッジまたはクラウドの Azure サービスに公開する機能が提供されます。 これは拡張可能なプラットフォームとして設計されており、Cognitive Services モジュールなどのさまざまなビデオ推論エッジ モジュールや、オープンソースの機械学習または [Azure Machine Learning][機械学習] を使用して独自のデータでトレーニングされたカスタム推論モジュールに接続できます。

Video Analyzer Edge のクライアント ライブラリを使用して、次の操作を行います。

  • Microsoft Azure IoT SDK との対話を簡素化する
  • プログラムによってパイプライン トポロジとライブ パイプラインを構築する

主要リンク:

作業の開始

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

npm を使用して Typescript 用 Video Analyzer クライアント ライブラリをインストールします。

npm install @azure/video-analyzer-edge

前提条件

  • TypeScript v3.6。
  • このパッケージを使用するには、アクティブな Azure サブスクリプションと IoT デバイス接続文字列が必要です。
  • Azure IoT Hubを操作するには、 を実行する必要がありますnpm install azure-iothub
  • 使用している Video Analyzer エッジ モジュールのバージョンに対応する SDK のバージョンを使用する必要があります。
SDK Video Analyzer エッジ モジュール
1.0.0-beta.3 1.1
1.0.0-beta.2 1.0
1.0.0-beta.1 1.0

パイプライン トポロジの作成と要求の作成

スターター コードの に関するページを参照してください。

すべてのクライアント インスタンス メソッドがスレッド セーフであり、相互に独立していることを保証します (ガイドライン)。 これにより、スレッド間であっても、クライアント インスタンスの再利用に関する推奨事項が常に安全になります。

主要な概念

パイプライン トポロジとライブ パイプライン

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

パイプライン トポロジの作成

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

const rtspSource: RtspSource = {
  //Create a source for your pipeline topology
  name: "rtspSource",
  endpoint: {
    url: "${rtspUrl}",
    "@type": "#Microsoft.VideoAnalyzer.UnsecuredEndpoint",
    credentials: {
      username: "${rtspUserName}",
      password: "${rtspPassword}",
      "@type": "#Microsoft.VideoAnalyzer.UsernamePasswordCredentials"
    }
  } as UnsecuredEndpoint,
  "@type": "#Microsoft.VideoAnalyzer.RtspSource"
};

const nodeInput: NodeInput = {
  //Create an input for your sink
  nodeName: "rtspSource"
};

const videoSink: VideoSink = {
  name: "videoSink",
  inputs: [nodeInput],
  videoName: "video",
  localMediaCachePath: "/var/lib/videoanalyzer/tmp/",
  localMediaCacheMaximumSizeMiB: "1024",
  "@type": "#Microsoft.VideoAnalyzer.VideoSink"
};

const pipelineTopology: PipelineTopology = {
  name: "jsTestTopology",
  properties: {
    description: "description for jsTestTopology",
    parameters: [
      { name: "rtspUserName", type: "String", default: "testUsername" },
      { name: "rtspPassword", type: "SecretString", default: "testPassword" },
      { name: "rtspUrl", type: "String" }
    ],
    sources: [rtspSource],
    sinks: [videoSink]
  }
};

ライブ パイプラインの作成

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

const livePipeline: LivePipeline = {
  name: "jsLivePipelineTest",
  properties: {
    description: "description",
    topologyName: pipelineTopologyName,
    parameters: [{ name: "rtspUrl", value: "rtsp://sample.com" }]
  }
};

ダイレクト メソッドの呼び出し

デバイスでダイレクト メソッドを呼び出すには、まず Video Analyzer Edge SDK を使用して要求を定義してから、IoT SDK の CloudToDeviceMethodを使用してそのメソッド要求を送信する必要があります。

import { createRequest } from "@azure/video-analyzer-edge";
import { Client } from "azure-iothub";

const deviceId = process.env.iothub_deviceid;
const moduleId = process.env.iothub_moduleid;
const connectionString = process.env.iothub_connectionstring;
const iotHubClient = Client.fromConnectionString(connectionString); //Connect to your IoT Hub

const pipelineTopologySetRequest = createRequest("pipelineTopologySet", pipelineTopology);
const setPipelineTopResponse = await iotHubClient.invokeDeviceMethod(deviceId, moduleId, {
  methodName: pipelineTopologySetRequest.methodName,
  payload: pipelineTopologySetRequest.payload
});

トラブルシューティング

  • メソッド要求を作成するときは、必ずメソッドの名前のスペルを確認してください

次のステップ

共同作成

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

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

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

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