共用方式為


荒廢的。 適用於 JavaScript 的 Azure Video Analyzer Edge 用戶端連結庫

荒廢的。 我們即將淘汰 Azure 影片分析器預覽服務,建議您在 2022 年 12 月 1 日之前,將應用程式從影片分析器轉換。 此 SDK 不會再維護。

Azure 影片分析器是 [Azure Applied AI Service][applied-ai-service],可提供平臺讓您建置可跨越邊緣和雲端基礎結構的智慧型視訊應用程式。 此平臺提供擷取、錄製和分析即時影片的功能,以及將結果、影片和影片分析發佈至邊緣或雲端中的 Azure 服務。 其設計目的是要成為可延伸的平臺,可讓您連接不同的視訊推斷邊緣模組,例如認知服務模組,或使用開放原始碼機器學習或 [Azure Machine Learning][machine-learning] 來定型的自定義推斷模組。

使用 Video Analyzer Edge 的用戶端連結庫來:

  • 簡化與 Azure IoT SDK Microsoft 互動
  • 以程序設計方式建構管線拓撲和即時管線

主要連結:

開始

安裝套件

使用 npm 安裝 Typescript 的 Video Analyzer 用戶端連結庫:

npm install @azure/video-analyzer-edge

先決條件

  • TypeScript v3.6。
  • 您需要作用中 Azure 訂用帳戶,以及 IoT 裝置連接字串,才能使用此套件。
  • 若要與 Azure IoT 中樞互動,您必須執行 npm install azure-iothub
  • 您必須使用對應至所使用影片分析器 Edge 模組版本的 SDK 版本。
SDK 影片分析器邊緣模組
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),宣告您有權,而且實際上確實會授與我們使用您貢獻的許可權。 如需詳細資訊,請瀏覽 https://cla.microsoft.com

如果您遇到任何問題,請在我們的 Github上提出問題。

當您提交提取要求時,CLA-Bot 會自動判斷您是否需要提供 CLA 並適當裝飾 PR(例如標籤、批註)。 只要遵循 Bot 所提供的指示即可。 您只需要使用我們的 CLA 在所有存放庫上執行此動作一次。

此專案已採用 Microsoft開放原始碼。 如需詳細資訊,請參閱《管理辦法》常見問題或連絡 opencode@microsoft.com,以取得任何其他問題或意見。