Veraltet. Azure Video Analyzer Edge-Clientbibliothek für .NET

Veraltet. Wir setzen den Azure Video Analyzer-Vorschaudienst zurück, wir empfehlen Ihnen, Ihre Anwendungen nach dem 01. Dezember 2022 zu übertragen. Dieses SDK wird nicht mehr beibehalten.

Azure Video Analyzer ist ein azure applied AI Service , der eine Plattform zum Erstellen intelligenter Videoanwendungen bietet, die sowohl Edge- als auch Cloudinfrastrukturen umfassen können. Die Plattform bietet die Möglichkeit, Livevideos zu erfassen, aufzuzeichnen und zu analysieren sowie die Ergebnisse, Video- und Videoanalysen, in Azure-Diensten am Edge oder in der Cloud zu veröffentlichen. Es ist als erweiterbare Plattform konzipiert, mit der Sie verschiedene Videorückschluss-Edgemodule wie Cognitive Services-Module oder benutzerdefinierte Rückschlussmodule verbinden können, die mit Ihren eigenen Daten mithilfe von Open Source Machine Learning oder Azure Machine Learning trainiert wurden.

Verwenden Sie die Clientbibliothek für Video Analyzer Edge für Folgendes:

  • Vereinfachen der Interaktionen mit den Microsoft Azure IoT SDKs
  • Programmgesteuertes Erstellen von Pipelinetopologien und Livepipelines

Produktdokumentation | Direkte Methoden | Pipelines | Quellcode | Proben

Erste Schritte

Hierbei handelt es sich um ein nur modellbasiertes SDK. Alle Clientvorgänge werden mit den 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

Der Client stammt 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

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

Installieren des Pakets

Installieren Sie die Video Analyzer Edge-Clientbibliothek für .NET mit NuGet:

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

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

dotnet add package Microsoft.Azure.Devices

Voraussetzungen

  • 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 Video Analyzer Edge-Moduls entspricht.

    SDK Video Analyzer-Edgemodul
    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

Erstellen einer Pipelinetopologie und Stellen von Anforderungen

Besuchen Sie die Beispiele für Startcode.

Wichtige Begriffe

Pipelinetopologie im Vergleich zur Livepipeline

Eine Pipelinetopologie ist eine Blaupause oder Vorlage zum Instanziieren von Livepipelines. Sie definiert die Parameter der Pipeline mithilfe von Platzhaltern als Werte für sie. Eine Livepipeline verweist auf eine Pipelinetopologie und gibt die Parameter an. Auf diese Weise können Sie mehrere Livepipelines verwenden, die auf dieselbe Topologie verweisen, aber unterschiedliche Werte für Parameter aufweisen. Weitere Informationen finden Sie unter Pipelinetopologien und Livepipelines.

CloudToDeviceMethod

Ist CloudToDeviceMethod Teil des azure-iot-hub-SDk. Mit dieser Methode können Sie One-Way-Benachrichtigungen an ein Gerät in Ihrem IoT Hub kommunizieren. In unserem Fall möchten wir verschiedene Methoden wie PipelineTopologySetRequest und PipelineTopologyGetRequestkommunizieren. Zur Verwendung CloudToDeviceMethod müssen Sie einen Parameter übergeben: MethodName und dann die JSON-Nutzlast dieser Methode festlegen.

Der Parameter MethodName ist der Name der Anforderung, die Sie senden. Stellen Sie sicher, dass Sie die vordefinierte MethodName Eigenschaft jeder Methode verwenden. Beispiel: PipelineTopologySetRequest.MethodName.

Um die Json-Nutzlast der Cloudmethode festzulegen, verwenden Sie die Funktion der GetPayloadAsJson() Pipelineanforderungsmethode. Beispiel: directCloudMethod.SetPayloadJson(PipelineTopologySetRequest.GetPayloadAsJson())

Threadsicherheit

Wir garantieren, dass alle Client-instance Methoden threadsicher und unabhängig voneinander sind (Richtlinie). Dadurch wird sichergestellt, dass die Empfehlung, Clientinstanzen wiederzuverwenden, immer sicher ist, auch threadsübergreifend.

Zusätzliche Konzepte

Clientoptionen | Zugreifen auf die Antwort | Vorgänge | mit langer AusführungsdauerBehandeln von Fehlern | Diagnose | Spott | Clientlebensdauer

Beispiele

Erstellen einer Pipelinetopologie

Zum Erstellen einer Pipelinetopologie müssen Sie Quellen und Senken definieren.

Definieren von Parametern

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

Definieren einer Quelle

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

Definieren einer Senke

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

Festlegen der Topologieeigenschaften und Erstellen einer Topologie

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

Erstellen einer Livepipeline

Zum Erstellen einer Livepipeline benötigen Sie eine vorhandene Pipelinetopologie.

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

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

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

Aufrufen einer direkten Methode

Um eine direkte Methode auf Ihrem Gerät aufzurufen, müssen Sie zuerst die Anforderung mithilfe des Video Analyzer Edge SDK definieren und dann diese Methodenanforderung mithilfe des IoT SDK CloudToDeviceMethodsenden.

var setPipelineTopRequest = new PipelineTopologySetRequest(pipelineTopology);

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

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

Informationen zum Testen verschiedener Pipelinetopologien 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.MethodName.

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 häufig gestellten Fragen zum Verhaltenskodex. Sie können sich auch an opencode@microsoft.com wenden, wenn Sie weitere Fragen oder Kommentare haben.

Aufrufe