Freigeben über


Azure Live Video Analytics für IoT Edge-Clientbibliothek für .NET– Version 1.0.0-beta.1

Live Video Analytics in IoT Edge ist eine Plattform zum Erstellen intelligenter Videoanwendungen, die den Edge und die Cloud umfassen. Die Plattform bietet die Möglichkeit, Livevideos zu erfassen, aufzuzeichnen und zu analysieren sowie die Ergebnisse, Video- und Videoanalysen, in Azure-Diensten in der Cloud oder im Edgebereich zu veröffentlichen. Es ist als erweiterbare Plattform konzipiert, die es Ihnen ermöglicht, verschiedene Videoanalyse-Edgemodule (z. B. Cognitive Services-Container, von Ihnen erstellte benutzerdefinierte Edgemodule mit Open-Source-Machine Learning-Modellen oder benutzerdefinierte Modelle, die mit Ihren eigenen Daten trainiert wurden) mit ihr zu verbinden und sie zum Analysieren von Livevideos zu verwenden, ohne sich Gedanken über die Komplexität des Erstellens und Ausführens einer Livevideopipeline machen zu müssen.

Verwenden Sie die Clientbibliothek für Live Video Analytics auf IoT Edge für Folgendes:

  • Vereinfachen der Interaktionen mit den Microsoft Azure IoT SDKs
  • Programmgesteuertes Erstellen von Mediendiagrammtopologien und -instanzen

Produktdokumentation | Direkte Methoden | Mediengraphen | Quellcode | Proben

Erste Schritte

Dies ist ein modellgeschütztes SDK. Alle Clientvorgänge werden mithilfe der Microsoft Azure IoT SDKs ausgeführt. Dieses SDK stellt Modelle bereit, mit denen Sie mit den Azure Iot-SDKs interagieren können.

Authentifizieren des Clients

Wie bereits erwähnt, stammt der Client aus dem Azure IoT SDK. Sie müssen eine IoT-Geräteverbindungszeichenfolge abrufen, um das Azure IoT SDK zu authentifizieren. Weitere Informationen finden Sie unter: https://github.com/Azure/azure-iot-sdk-csharp.

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

Installieren des Pakets

Installieren Sie die Live Video Analytics Clientbibliothek für .NET mit NuGet:

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

Installieren Sie das Azure IoT Hub SDk für .NET mit NuGet:

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

Voraussetzungen

  • C# ist erforderlich, um dieses Paket zu verwenden.

  • Sie benötigen ein aktives Azure-Abonnement und eine IoT-Geräteverbindungszeichenfolge , um dieses Paket verwenden zu können.

  • Sie müssen die Version des SDK verwenden, die der Version des verwendeten LVA Edge-Moduls entspricht.

    SDK LVA Edge-Modul
    1.0.0b1 2,0

Erstellen einer Graphtopologie und Senden von Anforderungen

Besuchen Sie die Beispiele für Startcode.

Wichtige Begriffe

MediaGraph-Topologie im Vergleich zur MediaGraph-Instanz

Eine Graphtopologie ist eine Blaupause oder Vorlage eines Graphen. Es definiert die Parameter des Graphen mithilfe von Platzhaltern als Werte für sie. Ein Graph instance auf eine Graphtopologie verweist und die Parameter angibt. Auf diese Weise können Sie mehrere Graphinstanzen verwenden, die auf dieselbe Topologie verweisen, jedoch mit unterschiedlichen Werten für Parameter. Weitere Informationen finden Sie unter Media Graph-Topologien und -Instanzen.

CloudToDeviceMethod

ist CloudToDeviceMethod Teil des azure-iot-hub-SDk. Mit dieser Methode können Sie unidirektionale Benachrichtigungen an ein Gerät in Ihrem IoT Hub kommunizieren. In unserem Fall möchten wir verschiedene Graphmethoden wie MediaGraphTopologySetRequest und MediaGraphTopologyGetRequestkommunizieren. Um zu verwenden CloudToDeviceMethod , müssen Sie einen Parameter übergeben: method_name und dann die Json-Nutzlast dieser Methode festlegen.

Der Parameter method_name ist der Name der Mediengraphanforderung, die Sie senden. Stellen Sie sicher, dass Sie die vordefinierte method_name Eigenschaft jeder Methode verwenden. Beispiel: MediaGraphTopologySetRequest.method_name.

Verwenden Sie die Funktion der Mediengraphanforderungsmethode GetPayloadAsJson() , um die Json-Nutzlast der Cloudmethode festzulegen. Zum Beispiel, directCloudMethod.SetPayloadJson(MediaGraphTopologySetRequest.GetPayloadAsJson())

Beispiele

Erstellen einer Graphtopologie

Zum Erstellen einer Graphtopologie müssen Sie Parameter, Quellen und Senken definieren.

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

Erstellen eines Diagramms instance

Zum Erstellen eines Graphen instance benötigen Sie eine vorhandene Graphtopologie.

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

Aufrufen einer Graphmethodenanforderung

Um eine Graphmethode auf Ihrem Gerät aufzurufen, müssen Sie zunächst die Anforderung mithilfe des lva SDK definieren. Senden Sie dann diese Methodenanforderung mithilfe des iot SDK. CloudToDeviceMethod

var setGraphRequest = new MediaGraphTopologySetRequest(graphTopology);

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

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

Informationen zum Testen verschiedener Mediengraphtopologien mit dem SDK finden Sie in den offiziellen Beispielen.

Problembehandlung

  • Denken Sie beim Senden einer Methodenanforderung mithilfe der IoT Hub CloudToDeviceMethod daran, den Namen der Methodenanforderung nicht direkt einzugeben. Verwenden Sie stattdessen [MethodRequestName.method_name].
  • Stellen Sie sicher, dass Sie die gesamte Methodenanforderung serialisieren, bevor Sie sie an übergeben. CloudToDeviceMethod

Nächste Schritte

Mitwirken

Beiträge und Vorschläge für dieses Projekt sind willkommen. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. Ausführliche Informationen finden Sie unter https://cla.microsoft.com.

Wenn Probleme auftreten, öffnen Sie ein Problem auf unserem GitHub.

Wenn Sie einen Pull Request (PR) übermitteln, überprüft ein CLA-Bot automatisch, ob Sie eine Lizenzvereinbarung bereitstellen und den PR entsprechend ergänzen müssen (z.B. mit einer Bezeichnung oder einem Kommentar). Führen Sie einfach die Anweisungen des Bots aus. Sie müssen dies nur einmal für alle Repositorys ausführen, die unsere CLA verwenden.

Für dieses Projekt gelten die Microsoft-Verhaltensregeln für Open Source (Microsoft Open Source Code of Conduct). Weitere Informationen finden Sie in den FAQ zum Verhaltenskodex, oder wenden Sie sich mit weiteren Fragen oder Kommentaren an opencode@microsoft.com.