Azure Live Video Analytics pour IoT Edge bibliothèque cliente pour .NET - version 1.0.0-beta.1

Live Video Analytics sur IoT Edge fournit une plateforme pour créer des applications vidéo intelligentes qui s’étendent à la périphérie et au cloud. La plateforme offre la possibilité de capturer, d’enregistrer et d’analyser des vidéos en direct, ainsi que de publier les résultats, la vidéo et l’analytique vidéo, sur les services Azure dans le cloud ou en périphérie. Il est conçu pour être une plateforme extensible, qui vous permet de connecter différents modules de périphérie d’analyse vidéo (tels que des conteneurs Cognitive Services, des modules de périphérie personnalisés créés par vous avec des modèles Machine Learning open source ou des modèles personnalisés entraînés avec vos propres données) et de les utiliser pour analyser la vidéo en direct sans vous soucier de la complexité de la création et de l’exécution d’un pipeline vidéo en direct.

Utilisez la bibliothèque cliente pour Live Video Analytics sur IoT Edge pour :

  • Simplifier les interactions avec les SDK Microsoft Azure IoT
  • Construire programmatiquement des topologies et des instances de graphe multimédia

| Documentation produitMéthodes directes | Graphiques multimédias | | Code sourceÉchantillons

Prise en main

Il s’agit d’un sdk de modèles uniquement. Toutes les opérations clientes sont effectuées à l’aide des SDK Microsoft Azure IoT. Ce kit sdk fournit des modèles que vous pouvez utiliser pour interagir avec les kits SDK Azure Iot.

Authentifier le client

Comme mentionné ci-dessus, le client provient du Kit de développement logiciel (SDK) Azure IoT. Vous devez obtenir une chaîne de connexion d’appareil IoT afin d’authentifier le Kit de développement logiciel (SDK) Azure IoT. Pour plus d’informations, consultez : https://github.com/Azure/azure-iot-sdk-csharp.

var connectionString = "connectionString";
this._serviceClient = ServiceClient.CreateFromConnectionString(connectionString);

Installer le package

Installez la bibliothèque cliente Live Video Analytics pour .NET avec NuGet :

dotnet add package Azure.Media.Analytics.Edge --version 1.0.0-beta.1

Installez le SDk Azure IoT Hub pour .Net avec NuGet :

dotnet add package Microsoft.Azure.Devices --version 1.28.1

Prérequis

  • C# est requis pour utiliser ce package.

  • Vous avez besoin d’un abonnement Azure actif et d’une chaîne de connexion d’appareil IoT pour utiliser ce package.

  • Vous devez utiliser la version du Kit de développement logiciel (SDK) qui correspond à la version du module LVA Edge que vous utilisez.

    Kit SDK LVA Edge Module
    1.0.0b1 2.0

Création d’une topologie de graphe et envoi de requêtes

Consultez exemples de code de démarrage

Concepts clés

Topologie MediaGraph par rapport à l’instance MediaGraph

Une topologie de graphe est un blueprint ou un modèle d’un graphique. Il définit les paramètres du graphe à l’aide d’espaces réservés comme valeurs. Un graphique instance référence une topologie de graphe et spécifie les paramètres. De cette façon, vous pouvez avoir plusieurs instances de graphe référençant la même topologie, mais avec des valeurs différentes pour les paramètres. Pour plus d’informations, consultez Topologies et instances media graph

CloudToDeviceMethod

fait CloudToDeviceMethod partie du SDk azure-iot-hub. Cette méthode vous permet de communiquer des notifications unidirectionnelles à un appareil dans votre hub IoT. Dans notre cas, nous voulons communiquer différentes méthodes de graphe telles que MediaGraphTopologySetRequest et MediaGraphTopologyGetRequest. Pour utiliser, CloudToDeviceMethod vous devez passer un paramètre : method_name puis définir la charge utile Json de cette méthode.

Le paramètre method_name est le nom de la demande de graphe multimédia que vous envoyez. Veillez à utiliser la propriété prédéfinie method_name de chaque méthode. Par exemple : MediaGraphTopologySetRequest.method_name.

Pour définir la charge utile Json de la méthode cloud, utilisez la fonction de la méthode de requête de GetPayloadAsJson() graphe multimédia. Par exemple : directCloudMethod.SetPayloadJson(MediaGraphTopologySetRequest.GetPayloadAsJson())

Exemples

Création d’une topologie de graphe

Pour créer une topologie de graphique, vous devez définir des paramètres, des sources et des récepteurs.

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

Création d’un instance de graphe

Pour créer un graphique instance, vous devez disposer d’une topologie de graphe existante.

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

Appel d’une demande de méthode graphe

Pour appeler une méthode de graphe sur votre appareil, vous devez d’abord définir la demande à l’aide du sdk lva. Envoyez ensuite cette demande de méthode à l’aide des sdk 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);

Pour essayer différentes topologies de graphe multimédia avec le SDK, consultez les exemples officiels.

Dépannage

  • Lors de l’envoi d’une demande de méthode à l’aide du CloudToDeviceMethod IoT Hub n’oubliez pas de ne pas taper directement le nom de la demande de méthode. Utilisez à la place [MethodRequestName.method_name]
  • Veillez à sérialiser l’ensemble de la demande de méthode avant de la passer à CloudToDeviceMethod

Étapes suivantes

Contribution

Ce projet accepte les contributions et les suggestions. La plupart des contributions vous demandent d’accepter un contrat de licence de contribution (CLA) déclarant que vous avez le droit de nous accorder, et que vous nous accordez réellement, les droits d’utilisation de votre contribution. Pour plus d’informations, visitez https://cla.microsoft.com.

Si vous rencontrez des problèmes, ouvrez un problème sur notre github.

Quand vous envoyez une demande de tirage (pull request), un bot CLA détermine automatiquement si vous devez fournir un contrat CLA et agrémenter la demande de tirage de façon appropriée (par exemple, avec une étiquette ou un commentaire). Suivez simplement les instructions fournies par le bot. Vous ne devez effectuer cette opération qu’une seule fois sur tous les dépôts utilisant notre contrat CLA.

Ce projet a adopté le Code de conduite Open Source de Microsoft. Pour plus d’informations, consultez la FAQ sur le code de conduite ou contactez opencode@microsoft.com pour toute question ou tout commentaire supplémentaire.