Поделиться через


Устаревшие. Клиентская библиотека Azure Video Analyzer Edge для JavaScript

Устаревшие. Мы удаляем службу предварительной версии Видеоанализатора Azure, вам рекомендуется перенести приложения из Видеоанализатора к 01 декабря 2022 года. Этот пакет SDK больше не поддерживается.

Видеоанализатор Azure — это [примененная служба ИИ Azure][applied-ai-service], которая предоставляет платформу для создания интеллектуальных видео-приложений, которые могут охватывать как пограничные, так и облачные инфраструктуры. Платформа предоставляет возможность записывать, записывать и анализировать видеотрансляций, а также публиковать результаты, видео и видеоаналиту, службы Azure в пограничных или облачных службах. Она предназначена для расширяемой платформы, что позволяет подключать различные пограничные модули вывода видео, такие как модули Cognitive Services, или пользовательские модули вывода, которые были обучены собственными данными с помощью машинного обучения с открытым исходным кодом или [Машинного обучения Azure][машинное обучение][машинное обучение].

Использование клиентской библиотеки для Пограничных анализаторов видеоанализатора:

  • Упрощение взаимодействия с пакетами SDK Microsoft Azure IoT
  • Программное создание топологий конвейеров и динамических конвейеров

Ключевые ссылки:

Начало работы

Установка пакета

Установите клиентскую библиотеку Видеоанализатора для Typescript с помощью npm:

npm install @azure/video-analyzer-edge

Необходимые условия

  • TypeScript версии 3.6.
  • Для использования этого пакета требуется активнаяподписка Azure и строка подключения устройства Интернета вещей.
  • Для взаимодействия с Центром Интернета вещей Azure необходимо запустить 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" }]
  }
};

Вызов прямого метода

Чтобы вызвать прямой метод на устройстве, сначала необходимо определить запрос с помощью пакета SDK Для Пограничных анализаторов видеоанализатора, а затем отправить этот запрос с помощью CloudToDeviceMethodпакета SDK Для Интернета вещей.

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 автоматически определяет, нужно ли предоставить соглашение об уровне обслуживания и украсить pr соответствующим образом (например, метка, комментарий). Просто следуйте инструкциям, предоставленным ботом. Это необходимо сделать только один раз во всех репозиториях с помощью нашего CLA.

Этот проект принял Microsoft Open Source Code of Conduct. Дополнительные сведения см. в разделе "Часто задаваемые вопросы о поведении" или opencode@microsoft.com с дополнительными вопросами или комментариями.