Partilhar via


Preterido. Biblioteca de cliente do Azure Video Analyzer Edge para JavaScript

Preterido. Estamos desativando o serviço de visualização do Azure Video Analyzer, você é aconselhado a fazer a transição de seus aplicativos para fora do Video Analyzer até 01 de dezembro de 2022. Este SDK não é mais mantido.

O Azure Video Analyzer é um [Azure Applied AI Service][applied-ai-service] que fornece uma plataforma para você criar aplicativos de vídeo inteligentes que podem abranger infraestruturas de borda e de nuvem. A plataforma oferece a capacidade de capturar, gravar e analisar vídeo ao vivo, juntamente com a publicação dos resultados, vídeo e análise de vídeo, nos serviços do Azure na borda ou na nuvem. Ele foi projetado para ser uma plataforma extensível, permitindo que você conecte diferentes módulos de borda de inferência de vídeo, como módulos de serviços cognitivos ou módulos de inferência personalizados que foram treinados com seus próprios dados usando aprendizado de máquina de código aberto ou [Azure Machine Learning][aprendizado de máquina].

Use a biblioteca de cliente do Video Analyzer Edge para:

  • Simplifique as interações com os SDKs de IoT do Microsoft Azure
  • Construa programaticamente topologias de pipeline e pipelines em tempo real

Ligações principais:

Primeiros passos

Instalar o pacote

Instale a biblioteca de cliente do Video Analyzer para Typescript com npm:

npm install @azure/video-analyzer-edge

Pré-requisitos

  • TypeScript v3.6.
  • Você precisa de uma assinatura ativa do Azuree uma cadeia de conexão de dispositivo IoT para usar este pacote.
  • Para interagir com o Hub IoT do Azure, você precisará executar npm install azure-iothub
  • Você precisará usar a versão do SDK que corresponde à versão do módulo de borda do Video Analyzer que você está usando.
SDK Módulo de borda do analisador de vídeo
1.0.0-beta.3 1.1
1.0.0-beta.2 1.0
1.0.0-beta.1 1.0

Criando uma topologia de pipeline e fazendo solicitações

Por favor, visite o Exemplos para código inicial.

Garantimos que todos os métodos de instância do cliente são thread-safe e independentes uns dos outros (diretriz). Isso garante que a recomendação de reutilização de instâncias de cliente seja sempre segura, mesmo entre threads.

Conceitos-chave

Topologia de pipeline vs pipeline em tempo real

Uma topologia de pipeline é um modelo ou modelo para instanciar pipelines dinâmicos. Ele define os parâmetros do pipeline usando espaços reservados como valores para eles. Um pipeline em tempo real faz referência a uma topologia de pipeline e especifica os parâmetros. Dessa forma, você pode ter vários pipelines dinâmicos fazendo referência à mesma topologia, mas com valores diferentes para parâmetros. Para obter mais informações, visite topologias de pipeline e pipelines dinâmicos.

Exemplos

Criando uma topologia de pipeline

Para criar uma topologia de pipeline, você precisa definir fontes e coletores.

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]
  }
};

Criando um pipeline ao vivo

Para criar uma instância de pipeline em tempo real, você precisa ter uma topologia de pipeline existente.

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

Invocando um método direto

Para invocar um método direto em seu dispositivo, você precisa primeiro definir a solicitação usando o SDK do Video Analyzer Edge e, em seguida, enviar essa solicitação de método usando o CloudToDeviceMethoddo SDK da IoT.

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
});

Solução de problemas

  • Ao criar uma solicitação de método, lembre-se de verificar a ortografia do nome do método

Próximos passos

Contribuição

Este projeto acolhe contribuições e sugestões. A maioria das contribuições exige que você concorde com um Contrato de Licença de Colaborador (CLA) declarando que você tem o direito de, e realmente concede, os direitos de usar sua contribuição. Para mais detalhes, visite https://cla.microsoft.com.

Se você encontrar algum problema, abra um problema em nosso Github.

Quando você envia uma solicitação pull, um CLA-bot determinará automaticamente se você precisa fornecer um CLA e decorar o PR adequadamente (por exemplo, rótulo, comentário). Basta seguir as instruções fornecidas pelo bot. Você só precisará fazer isso uma vez em todos os repositórios usando nosso CLA.

Este projeto adotou o Microsoft Open Source Code of Conduct. Para obter mais informações, consulte as Perguntas frequentes sobre o Código de Conduta ou entre em contato com opencode@microsoft.com com quaisquer perguntas ou comentários adicionais.