你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

荒废的。 适用于 JavaScript 的 Azure 视频分析器 Edge 客户端库

荒废的。 我们即将停用 Azure 视频分析器预览服务,建议在 2022 年 12 月 1 日前将应用程序从视频分析器中切换。 此 SDK 不再维护。

Azure 视频分析器是一个 [Azure 应用 AI 服务][applied-ai-service],它提供一个平台,用于构建可跨越边缘和云基础结构的智能视频应用程序。 该平台提供捕获、录制和分析实时视频以及将结果、视频和视频分析发布到边缘或云中的 Azure 服务的功能。 它设计为可扩展平台,使你能够连接不同的视频推理边缘模块,例如认知服务模块或自定义推理模块,这些模块已使用开源机器学习或 [Azure 机器学习][机器学习][机器学习]训练了自己的数据。

使用视频分析器 Edge 的客户端库可以:

关键链接:

开始

安装包

使用 npm 安装适用于 Typescript 的视频分析器客户端库:

npm install @azure/video-analyzer-edge

先决条件

  • TypeScript v3.6。
  • 需要使用活动 Azure 订阅和 IoT 设备连接字符串才能使用此包。
  • 若要与 Azure IoT 中心交互,需要运行 npm install azure-iothub
  • 需要使用与所使用的视频分析器边缘模块版本相对应的 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" }]
  }
};

调用直接方法

若要在设备上调用直接方法,首先需要使用视频分析器 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 机器人会自动确定是否需要提供 CLA 并适当修饰 PR(例如标签、注释)。 只需按照机器人提供的说明进行操作。 只需使用 CLA 在所有存储库中执行此操作一次。

该项目已采用 Microsoft开源行为准则。 有关详细信息,请参阅《行为准则常见问题解答》或联系 opencode@microsoft.com,了解任何其他问题或意见。