你当前正在访问 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 的客户端库可以:
- 简化与 Microsoft Azure IoT SDK 的交互
- 以编程方式构造管道拓扑和实时管道
关键链接:
开始
安装包
使用 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,了解任何其他问题或意见。