Condividi tramite


Libreria client di Azure Video Analyzer Edge per Python - versione 1.0.0b4

Deprecato. Il servizio di anteprima di Azure Video Analyzer viene ritirato, è consigliabile eseguire la transizione delle applicazioni dall'analizzatore video entro il 01 dicembre 2022. Questo SDK non viene più gestito.

Azure Video Analyzer è un servizio di intelligenza artificiale applicato di Azure che offre una piattaforma per creare applicazioni video intelligenti che possono estendersi sia sulle infrastrutture perimetrali che cloud. La piattaforma offre la possibilità di acquisire, registrare e analizzare video live insieme alla pubblicazione dei risultati, dei video e dell'analisi video, ai servizi di Azure al bordo o nel cloud. È progettato per essere una piattaforma estendibile, consentendo di connettere diversi moduli perimetrali di inferenza video, ad esempio moduli di servizi cognitivi o moduli di inferenza personalizzati sottoposti a training con i propri dati usando machine learning open source o Azure Machine Learning.

Usare la libreria client per Video Analyzer Edge per:

  • Semplificare le interazioni con gli SDK IoT di Microsoft Azure
  • Costruire topologie della pipeline a livello di codice e pipeline in tempo reale

Pacchetto (PyPI) | Documentazione | del prodotto Metodi | diretti Condutture | Codice | sorgente Campioni

Introduzione

Installare il pacchetto

Installare la libreria client di Video Analyzer Edge per Python con pip:

pip install azure-media-videoanalyzer-edge

Prerequisiti

  • Python 2.7 o 3.6 o versione successiva è necessario per usare questo pacchetto.

  • È necessaria una sottoscrizione di Azure attiva e una stringa di connessione del dispositivo IoT per usare questo pacchetto.

  • Per interagire con hub IoT di Azure sarà necessario eseguirepip install azure-iot-hub

  • Sarà necessario usare la versione dell'SDK corrispondente alla versione del modulo Video Analyzer Edge in uso.

    SDK Modulo perimetrale di Video Analyzer
    1.0.0b3 1.1
    1.0.0b2 1,0
    1.0.0b1 1,0

Creazione di una topologia della pipeline e creazione di richieste

Visitare gli esempi per il codice iniziale.

Concetti chiave

Topologia della pipeline e pipeline live

Una topologia della pipeline è un progetto o un modello per la creazione di pipeline live. Definisce i parametri della pipeline usando segnaposto come valori. Una pipeline live fa riferimento a una topologia della pipeline e specifica i parametri. In questo modo è possibile avere più pipeline live che fanno riferimento alla stessa topologia, ma con valori diversi per i parametri. Per altre informazioni, vedere topologie della pipeline e pipeline live.

CloudToDeviceMethod

Fa CloudToDeviceMethod parte di azure-iot-hub SDk. Questo metodo consente di comunicare notifiche unidirezionale a un dispositivo nell'hub IoT. Nel nostro caso, vogliamo comunicare vari metodi diretti, ad esempio PipelineTopologySetRequest e PipelineTopologyGetRequest. Per usare CloudToDeviceMethod è necessario passare due parametri: method_name e payload.

Il primo parametro, method_name, è il nome della richiesta di metodo diretto che si sta inviando. Assicurarsi di usare la proprietà predefinita method_name di ogni metodo. Ad esempio, PipelineTopologySetRequest.method_name.

Il secondo parametro, payload, invia l'intera serializzazione della richiesta di topologia della pipeline. Ad esempio, usare PipelineTopologySetRequest.serialize()

Esempio

Creazione di una topologia della pipeline

Per creare una topologia della pipeline, è necessario definire origini e sink.

#Parameters
user_name_param = ParameterDeclaration(name="rtspUserName",type="String",default="testusername")
password_param = ParameterDeclaration(name="rtspPassword",type="SecretString",default="testpassword")
url_param = ParameterDeclaration(name="rtspUrl",type="String",default="rtsp://www.sample.com")

#Source and Sink
source = RtspSource(name="rtspSource", endpoint=UnsecuredEndpoint(url="${rtspUrl}",credentials=UsernamePasswordCredentials(username="${rtspUserName}",password="${rtspPassword}")))
node = NodeInput(node_name="rtspSource")
sink = VideoSink(name="videoSink", inputs=[node], video_name="video", local_media_cache_path="/var/lib/videoanalyzer/tmp/", local_media_cache_maximum_size_mi_b="1024");
    
pipeline_topology_properties = PipelineTopologyProperties()
pipeline_topology_properties.parameters = [user_name_param, password_param, url_param]
pipeline_topology_properties.sources = [source]
pipeline_topology_properties.sinks = [sink]
pipeline_topology = PipelineTopology(name=pipeline_topology_name,properties=pipeline_topology_properties)

Creazione di una pipeline live

Per creare una pipeline live, è necessario disporre di una topologia della pipeline esistente.

url_param = ParameterDefinition(name="rtspUrl", value=pipeline_url)
pass_param = ParameterDefinition(name="rtspPassword", value="secret_password")
live_pipeline_properties = LivePipelineProperties(description="Sample pipeline description", topology_name=pipeline_topology_name, parameters=[url_param])

live_pipeline = LivePipeline(name=live_pipeline_name, properties=live_pipeline_properties)

Richiamare un metodo diretto

Per richiamare un metodo diretto nel dispositivo, è prima necessario definire la richiesta usando Video Analyzer Edge SDK, quindi inviare tale richiesta di metodo usando l'SDK CloudToDeviceMethodIoT.

set_method_request = PipelineTopologySetRequest(pipeline_topology=pipeline_topology)
direct_method = CloudToDeviceMethod(method_name=set_method_request.method_name, payload=set_method_request.serialize())
registry_manager = IoTHubRegistryManager(connection_string)

registry_manager.invoke_device_module_method(device_id, module_d, direct_method)

Per provare topologie di pipeline diverse con l'SDK, vedere esempi ufficiali.

Risoluzione dei problemi

  • Quando si invia una richiesta di metodo usando il hub IoT CloudToDeviceMethod ricordarsi di non digitare direttamente il nome della richiesta del metodo. Viene usato [MethodRequestName.method_name]
  • Assicurarsi di serializzare l'intera richiesta di metodo prima di passarla a CloudToDeviceMethod

Passaggi successivi

Contributo

In questo progetto sono benvenuti i contributi e i suggerimenti. Per la maggior parte dei contenuti è necessario sottoscrivere un contratto di licenza di collaborazione (CLA, Contributor License Agreement) che stabilisce che l'utente ha il diritto di concedere, e di fatto concede a Microsoft i diritti d'uso del suo contributo. Per informazioni dettagliate, vedere https://cla.microsoft.com.

Se si verificano problemi, aprire un problema in GitHub.

Quando si invia una richiesta pull, un bot CLA determina automaticamente se è necessario specificare un contratto CLA e completare la richiesta pull in modo appropriato (ad esempio con un'etichetta e un commento). Seguire le istruzioni specificate dal bot. È sufficiente eseguire questa operazione una sola volta per tutti i repository che usano il contratto CLA Microsoft.

Questo progetto ha adottato il Codice di comportamento di Microsoft per l'open source. Per altre informazioni, vedere Code of Conduct FAQ (Domande frequenti sul Codice di comportamento) oppure contattare opencode@microsoft.com per eventuali altre domande o commenti.