Compartir a través de


En desuso. Biblioteca cliente de Azure Video Analyzer Edge para .NET

En desuso. Estamos retirando el servicio de versión preliminar de Azure Video Analyzer, se recomienda realizar la transición y retirar las aplicaciones de Video Analyzer antes del 1 de diciembre de 2022. Este SDK ya no se mantiene.

Azure Video Analyzer es un servicio de IA aplicado de Azure que proporciona una plataforma para crear aplicaciones de vídeo inteligentes que pueden abarcar infraestructuras perimetrales y en la nube. La plataforma ofrece la capacidad de capturar, grabar y analizar vídeo en directo junto con la publicación de los resultados, el análisis de vídeo y vídeo, en los servicios de Azure en el perímetro o en la nube. Está diseñado para ser una plataforma extensible, lo que le permite conectar diferentes módulos perimetrales de inferencia de vídeo, como módulos de Cognitive Services, o módulos de inferencia personalizados que se han entrenado con sus propios datos mediante aprendizaje automático de código abierto o Azure Machine Learning.

Use la biblioteca cliente de Video Analyzer Edge para:

  • Simplificación de las interacciones con los SDK de IoT de Microsoft Azure
  • Construcción mediante programación de topologías de canalización y canalizaciones dinámicas

Documentación | del producto Métodos | directos Tuberías | Código | fuente Muestras

Introducción

Se trata de un SDK de solo modelos. Todas las operaciones de cliente se realizan mediante los SDK de IoT de Microsoft Azure. Este SDK proporciona modelos que puede usar para interactuar con los SDK de IoT de Azure.

Autenticar el cliente

El cliente procede del SDK de Azure IoT. Tendrá que obtener una cadena de conexión de dispositivo IoT para autenticar el SDK de Azure IoT. Para obtener más información, visite: https://github.com/Azure/azure-iot-sdk-csharp.

string connectionString = System.Environment.GetEnvironmentVariable("iothub_connectionstring", EnvironmentVariableTarget.User);
var serviceClient = ServiceClient.CreateFromConnectionString(connectionString);

Instalar el paquete

Instale la biblioteca cliente de Video Analyzer Edge para .NET con NuGet:

dotnet add package Azure.Media.VideoAnalyzer.Edge --prerelease

Instale el SDk de Azure IoT Hub para .NET con NuGet:

dotnet add package Microsoft.Azure.Devices

Requisitos previos

  • Necesita una suscripción de Azure activa y una cadena de conexión de dispositivo IoT para usar este paquete.

  • Tendrá que usar la versión del SDK que corresponde a la versión del módulo perimetral de Video Analyzer que está usando.

    SDK Módulo perimetral de Video Analyzer
    1.0.0-beta.5 1.1
    1.0.0-beta.4 1.0
    1.0.0-beta.3 1.0
    1.0.0-beta.2 1.0
    1.0.0-beta.1 1.0

Creación de una topología de canalización y realización de solicitudes

Visite los ejemplos para el código de inicio.

Conceptos clave

Topología de canalización frente a canalización en directo

Una topología de canalización es un plano técnico o una plantilla para crear instancias de canalizaciones dinámicas. Define los parámetros de la canalización mediante marcadores de posición como valores para ellos. Una canalización activa hace referencia a una topología de canalización y especifica los parámetros. De esta manera, puede tener varias canalizaciones en directo que hacen referencia a la misma topología, pero con valores diferentes para los parámetros. Para más información, visite topologías de canalización y canalizaciones activas.

CloudToDeviceMethod

CloudToDeviceMethod forma parte del SDk azure-iot-hub. Este método permite comunicar notificaciones unidireccionales a un dispositivo de IoT Hub. En nuestro caso, queremos comunicar varios métodos como PipelineTopologySetRequest y PipelineTopologyGetRequest. Para usar CloudToDeviceMethod , debe pasar un parámetro: MethodName y, a continuación, establecer la carga JSON de ese método.

El parámetro MethodName es el nombre de la solicitud que está enviando. Asegúrese de usar la propiedad predefinida MethodName de cada método. Por ejemplo, PipelineTopologySetRequest.MethodName.

Para establecer la carga json del método en la nube, use la función del método de solicitud de GetPayloadAsJson() canalización. Por ejemplo, directCloudMethod.SetPayloadJson(PipelineTopologySetRequest.GetPayloadAsJson()).

Seguridad para subprocesos

Garantizamos que todos los métodos de instancia de cliente sean seguros para subprocesos e independientes entre sí (guía). Esto garantiza que la recomendación de reutilizar instancias de cliente siempre es segura, incluso entre subprocesos.

Conceptos adicionales

Opciones | de cliente Acceso a la respuesta | Operaciones | de larga duraciónControl de errores | Diagnóstico | Burla | Duración del cliente

Ejemplos

Creación de una topología de canalización

Para crear una topología de canalización, debe definir orígenes y receptores.

Definir parámetros

pipelineTopologyProperties.Parameters.Add(new ParameterDeclaration("rtspUserName", ParameterType.String)
{
    Description = "rtsp source user name.",
    Default = "exampleUserName"
});
pipelineTopologyProperties.Parameters.Add(new ParameterDeclaration("rtspPassword", ParameterType.SecretString)
{
    Description = "rtsp source password.",
    Default = "examplePassword"
});
pipelineTopologyProperties.Parameters.Add(new ParameterDeclaration("rtspUrl", ParameterType.String)
{
    Description = "rtsp Url"
});

Definición de un origen

pipelineTopologyProps.Sources.Add(new RtspSource("rtspSource", new UnsecuredEndpoint("${rtspUrl}")
{
    Credentials = new UsernamePasswordCredentials("${rtspUserName}", "${rtspPassword}")
})
);

Definir un receptor

var nodeInput = new List<NodeInput>
{
    new NodeInput("rtspSource")
};
pipelineTopologyProps.Sinks.Add(new VideoSink("videoSink", nodeInput, "video", "/var/lib/videoanalyzer/tmp/", "1024"));

Establecer las propiedades de la topología y crear una topología

var pipelineTopologyProps = new PipelineTopologyProperties
{
    Description = "Continuous video recording to a Video Analyzer video",
};
SetParameters(pipelineTopologyProps);
SetSources(pipelineTopologyProps);
SetSinks(pipelineTopologyProps);
return new PipelineTopology("ContinuousRecording")
{
    Properties = pipelineTopologyProps
};

Creación de una canalización en vivo

Para crear una canalización activa, debe tener una topología de canalización existente.

var livePipelineProps = new LivePipelineProperties
{
    Description = "Sample description",
    TopologyName = topologyName,
};

livePipelineProps.Parameters.Add(new ParameterDefinition("rtspUrl", "rtsp://sample.com"));

return new LivePipeline("livePIpeline")
{
    Properties = livePipelineProps
};

Invocación de un método directo

Para invocar un método directo en el dispositivo, primero debe definir la solicitud mediante el SDK de Video Analyzer Edge y, a continuación, enviar esa solicitud de método mediante el SDK de CloudToDeviceMethodIoT.

var setPipelineTopRequest = new PipelineTopologySetRequest(pipelineTopology);

var directMethod = new CloudToDeviceMethod(setPipelineTopRequest.MethodName);
directMethod.SetPayloadJson(setPipelineTopRequest.GetPayloadAsJson());

var setPipelineTopResponse = await _serviceClient.InvokeDeviceMethodAsync(_deviceId, _moduleId, directMethod);

Para probar diferentes topologías de canalización con el SDK, consulte los ejemplos oficiales.

Solución de problemas

  • Al enviar una solicitud de método mediante el IoT Hub recuerde no escribir directamente el nombre de la solicitud de CloudToDeviceMethod método. Se usa MethodRequestName.MethodName en su lugar.

Pasos siguientes

Contribuciones

Este proyecto agradece las contribuciones y sugerencias. La mayoría de las contribuciones requieren que acepte un Contrato de licencia para el colaborador (CLA) que declara que tiene el derecho a concedernos y nos concede los derechos para usar su contribución. Para más detalles, visite https://cla.microsoft.com.

Si tiene algún problema, abra un problema en nuestro Github.

Cuando se envía una solicitud de incorporación de cambios, un bot de CLA determinará de forma automática si tiene que aportar un CLA y completar la PR adecuadamente (por ejemplo, la etiqueta, el comentario). Solo siga las instrucciones que le dará el bot. Solo será necesario que lo haga una vez en todos los repositorios con nuestro CLA.

El proyecto ha adoptado el Código de conducta de código abierto de Microsoft. Para obtener más información, consulte las preguntas más frecuentes del código de conducta o póngase en contacto con opencode@microsoft.com si tiene cualquier otra pregunta o comentario.

Impresiones