Azure Live Video Analytics para IoT Edge biblioteca cliente para .NET: versión 1.0.0-beta.1
Live Video Analytics on IoT Edge proporciona una plataforma para crear aplicaciones de vídeo inteligentes que abarcan el perímetro y 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 la nube o el perímetro. Está diseñado para ser una plataforma extensible, lo que le permite conectar diferentes módulos perimetrales de análisis de vídeo (como contenedores de Cognitive Services, módulos perimetrales personalizados creados por usted con modelos de aprendizaje automático de código abierto o modelos personalizados entrenados con sus propios datos) y usarlos para analizar vídeo en directo sin preocuparse por la complejidad de compilar y ejecutar una canalización de vídeo en directo.
Use la biblioteca cliente para Live Video Analytics en IoT Edge para:
- Simplificación de las interacciones con los SDK de IoT de Microsoft Azure
- Construir mediante programación topologías e instancias de grafos multimedia
| Documentación del productoMétodos | directos Gráficos multimedia | Código | fuente Muestras
Introducción
Se trata de un sdk solo de 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 Azure IoT.
Autenticar el cliente
Como se mencionó anteriormente, 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.
var connectionString = "connectionString";
this._serviceClient = ServiceClient.CreateFromConnectionString(connectionString);
Instalar el paquete
Instale la biblioteca cliente de Live Video Analytics para .NET con NuGet:
dotnet add package Azure.Media.Analytics.Edge --version 1.0.0-beta.1
Instale el SDk de Azure IoT Hub para .Net con NuGet:
dotnet add package Microsoft.Azure.Devices --version 1.28.1
Requisitos previos
C# es necesario para usar este paquete.
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 LVA Edge que está usando.
SDK Módulo LVA Edge 1.0.0b1 2.0
Creación de una topología de grafo y realización de solicitudes
Visite los ejemplos para el código de inicio.
Conceptos clave
Topología de MediaGraph frente a instancia de MediaGraph
Una topología de grafo es un plano técnico o una plantilla de un grafo. Define los parámetros del grafo mediante marcadores de posición como valores para ellos. Una instancia de grafo hace referencia a una topología de grafo y especifica los parámetros. De esta manera, puede tener varias instancias de grafo que hacen referencia a la misma topología, pero con valores diferentes para los parámetros. Para obtener más información, visite Topologías e instancias de grafos multimedia.
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 de grafo como MediaGraphTopologySetRequest
y MediaGraphTopologyGetRequest
. Para usar CloudToDeviceMethod
, debe pasar un parámetro: method_name
y, a continuación, establecer la carga json de ese método.
El parámetro method_name
es el nombre de la solicitud de grafo multimedia que está enviando. Asegúrese de usar la propiedad predefinida method_name
de cada método. Por ejemplo, MediaGraphTopologySetRequest.method_name
.
Para establecer la carga json del método en la nube, use la función del método de solicitud del GetPayloadAsJson()
grafo multimedia. Por ejemplo: directCloudMethod.SetPayloadJson(MediaGraphTopologySetRequest.GetPayloadAsJson())
Ejemplos
Creación de una topología de grafo
Para crear una topología de grafo, debe definir parámetros, orígenes y receptores.
// Add parameters to Topology
private void SetParameters(MediaGraphTopologyProperties graphProperties)
{
graphProperties.Parameters.Add(new MediaGraphParameterDeclaration("rtspUserName", MediaGraphParameterType.String)
{
Description = "rtsp source user name.",
Default = "dummyUserName"
});
graphProperties.Parameters.Add(new MediaGraphParameterDeclaration("rtspPassword", MediaGraphParameterType.SecretString)
{
Description = "rtsp source password.",
Default = "dummyPassword"
});
graphProperties.Parameters.Add(new MediaGraphParameterDeclaration("rtspUrl", MediaGraphParameterType.String)
{
Description = "rtsp Url"
});
}
// Add sources to Topology
private void SetSources(MediaGraphTopologyProperties graphProperties)
{
graphProperties.Sources.Add(new MediaGraphRtspSource("rtspSource", new MediaGraphUnsecuredEndpoint("${rtspUrl}")
{
Credentials = new MediaGraphUsernamePasswordCredentials("${rtspUserName}", "${rtspPassword}")
})
);
}
// Add sinks to Topology
private void SetSinks(MediaGraphTopologyProperties graphProperties)
{
var graphNodeInput = new List<MediaGraphNodeInput>
{
new MediaGraphNodeInput("rtspSource")
};
var cachePath = "/var/lib/azuremediaservices/tmp/";
var cacheMaxSize = "2048";
graphProperties.Sinks.Add(new MediaGraphAssetSink("assetSink", graphNodeInput, "sampleAsset-${System.GraphTopologyName}-${System.GraphInstanceName}", cachePath, cacheMaxSize)
{
SegmentLength = System.Xml.XmlConvert.ToString(TimeSpan.FromSeconds(30)),
});
}
private MediaGraphTopology BuildGraphTopology()
{
var graphProperties = new MediaGraphTopologyProperties
{
Description = "Continuous video recording to an Azure Media Services Asset",
};
SetParameters(graphProperties);
SetSources(graphProperties);
SetSinks(graphProperties);
return new MediaGraphTopology("ContinuousRecording")
{
Properties = graphProperties
};
}
Creación de una instancia de grafo
Para crear una instancia de grafo, debe tener una topología de grafo existente.
private MediaGraphInstance BuildGraphInstance(string graphTopologyName)
{
var graphInstanceProperties = new MediaGraphInstanceProperties
{
Description = "Sample graph description",
TopologyName = graphTopologyName,
};
graphInstanceProperties.Parameters.Add(new MediaGraphParameterDefinition("rtspUrl", "rtsp://sample.com"));
return new MediaGraphInstance("graphInstance")
{
Properties = graphInstanceProperties
};
}
Invocar una solicitud de método de grafo
Para invocar un método de grafo en el dispositivo, primero debe definir la solicitud mediante el SDK de lva. A continuación, envíe esa solicitud de método mediante el sdk de iot. CloudToDeviceMethod
var setGraphRequest = new MediaGraphTopologySetRequest(graphTopology);
var directMethod = new CloudToDeviceMethod(setGraphRequest.MethodName);
directMethod.SetPayloadJson(setGraphRequest.GetPayloadAsJson());
var setGraphResponse = await _serviceClient.InvokeDeviceMethodAsync(_deviceId, _moduleId, directMethod);
Para probar diferentes topologías de grafos multimedia con el SDK, consulte los ejemplos oficiales.
Solución de problemas
- Al enviar una solicitud de método mediante el IoT Hub
CloudToDeviceMethod
recuerde no escribir directamente el nombre de la solicitud del método. Se usa[MethodRequestName.method_name]
en su lugar. - Asegúrese de serializar toda la solicitud de método antes de pasarla a
CloudToDeviceMethod
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.
Este proyecto ha adoptado el Código de conducta de Microsoft Open Source. Para obtener más información, vea las preguntas más frecuentes sobre el código de conducta o póngase en contacto con opencode@microsoft.com si tiene preguntas o comentarios.
Azure SDK for .NET