Metodi diretti dell'analizzatore video di Azure

edge icon
In alternativa, vedere gli argomenti in Creare applicazioni video nel servizio.


Nota

È consigliabile ritirare il servizio di anteprima di Analizzatore video di Azure. È consigliabile eseguire la transizione delle applicazioni da Analizzatore video entro il 01 dicembre 2022.

L'analizzatore video di Azure per i supporti non è interessato da questo ritiro. Viene ora rinominata in Azure Video Indexer. Fare clic qui per altre informazioni.

Azione necessaria: per ridurre al minimo le interruzioni dei carichi di lavoro, eseguire la transizione dell'applicazione da Analizzatore video per suggerimenti descritti in questa guida prima del 1° dicembre 2022. Dopo il 1° dicembre 2022 l'account analizzatore video di Azure non funzionerà più. A partire dal 2 maggio 2022 non sarà possibile creare nuovi account analizzatore video.

Il modulo avaedge edge di Analizzatore video di Azure espone diversi metodi diretti che possono essere richiamati da hub IoT. I metodi diretti rappresentano un'interazione di tipo richiesta-risposta con un dispositivo simile a una chiamata HTTP, dato che dopo il timeout specificato dall'utente l'esito positivo o negativo viene comunicato immediatamente. Questo approccio è utile per gli scenari in cui la linea di condotta immediata è diversa a seconda che il dispositivo sia in grado di rispondere o meno, Per altre informazioni, vedere Comprendere e richiamare metodi diretti da hub IoT.

In questo argomento vengono descritti questi metodi, convenzioni e lo schema dei metodi.

Convenzioni

I metodi diretti si basano sulle convenzioni seguenti:

  1. I metodi diretti hanno una versione specificata in MAJOR. Formato SECONDARIO (come illustrato nell'esempio seguente). Si tratta del numero "@apiVersion", dove "1" è major e "0" minore in questo esempio:

    {
      "methodName": "pipelineTopologySet",
      "payload": {
          "@apiVersion": "1.1",
          "name": "{TopologyName}",
          "properties": {
              // Desired Topology properties
          }
      }
    }
    
  2. Una determinata versione del modulo Analizzatore video supporta tutte le versioni secondarie di un metodo diretto di chiamata alla versione corrente. Il supporto tra le versioni principali non è garantito.

  3. Tutti i metodi diretti sono sincroni.

  4. I risultati degli errori sono basati sullo schema di errore OData.

  5. I nomi devono osservare i vincoli seguenti:

    • Solo caratteri alfanumerici e trattini finché non inizia e termina con un trattino
    • Nessuna spazi
    • Massimo 32 caratteri

Esempio di risposta da un metodo diretto

-----------------------  Request: livePipelineList  --------------------------------------------------

{
  "@apiVersion": "1.1"
}

---------------  Response: livePipelineList - Status: 200  ---------------

{
  "value": []
}

--------------------------------------------------------------------------

Codici di errore

Come illustrato nell'esempio seguente, quando si riceve una risposta di errore da un metodo diretto, è presente un codice di errore di primo livello e vengono fornite altre informazioni in details.

{
  "status": 400,
  "payload": {
    "error": {
      "code": "BadRequest",
      "message": "The request is invalid",
      "details": [
        {
          "code": "ApiVersionNotSupported",
          "message": "The API version '1.4' is not supported. Supported version(s): 1.0, 1.1"
        }
      ]
    }
  }
}

Di seguito sono riportati i codici di errore usati al livello superiore.

Stato Codice Message
400 BadRequest Richiesta non valida.
400 InvalidResource Risorsa non valida
400 InvalidVersion La versione dell'API non è valida
402 ConnectivityRequired Il modulo Edge richiede la connettività cloud per funzionare correttamente.
404 NotFound Risorsa non trovata
409 Conflitto Conflitto di operazioni
500 InternalServerError Errore interno del server
503 ServerBusy Server occupato

Di seguito sono riportati alcuni dei codici di errore usati a livello di dettaglio.

Stato Codice dettagliato Descrizione
400 PipelineValidationError Errori generali della pipeline, ad esempio cicli o partizionamento e così via.
400 ModuleValidationError Errori di convalida specifici del modulo.
409 PipelineTopologyInUse La topologia della pipeline fa ancora riferimento a una o più pipeline attive.
409 OperationNotAllowedInState Impossibile eseguire l'operazione richiesta nello stato corrente.
409 ResourceValidationError La risorsa a cui si fa riferimento (ad esempio: risorsa video) non è in uno stato valido.

Metodi diretti supportati

Di seguito sono riportati i metodi diretti esposti dal modulo Edge di Analizzatore video. Lo schema per i metodi diretti è disponibile qui.

pipelineTopologyList

Questo metodo diretto elenca tutte le topologie della pipeline create.

Richiesta

{
  "@apiVersion": "1.1"
}

Risposta

{
  "status": 200,
  "value": [
    {
      "systemData": {
        "createdAt": "2021-05-05T14:19:22.16Z",
        "lastModifiedAt": "2021-05-05T16:20:41.505Z"
      },
      
      // first pipeline topology payload
      
    },
      "systemData": {
        "createdAt": "2021-05-06T14:19:22.16Z",
        "lastModifiedAt": "2021-05-06T16:20:41.505Z"
      },
      
      // next pipeline topology payload
      
    }    
  ]
}

Codici di stato

Condizione Codice stato
Entità trovata 200
Errori utente generici Intervallo 400
Entità non trovata 404
Errori server generici Intervallo 500

pipelineTopologySet

Crea una topologia della pipeline con il nome specificato se non esiste una topologia di questo tipo o aggiorna una topologia esistente con tale nome.

Aspetti chiave:

  • Una topologia della pipeline può essere aggiornata liberamente se non sono presenti pipeline attive che lo fanno riferimento.

  • Una topologia della pipeline può essere aggiornata liberamente se tutte le pipeline attive di riferimento vengono disattivate purché:

    • I parametri appena aggiunti hanno valori predefiniti
    • I parametri rimossi non fanno riferimento ad alcuna pipeline
  • Solo alcuni aggiornamenti della topologia della pipeline sono consentiti mentre è attiva una pipeline attiva.

Richiesta

  {
    "methodName": "pipelineTopologySet",
    "payload": {
        "@apiVersion": "1.1",
        "name": "{TopologyName}",
        "properties": {
            // Desired pipeline topology properties
        }
    }
  }

Risposta

  {
    "status": 201,
    "payload": {
        "systemData": {
           "createdAt": "2021-05-11T18:16:46.491Z",
           "lastModifiedAt": "2021-05-11T18:16:46.491Z"
        },
        "name": "{TopologyName}",
        "properties": {
            // Complete pipeline topology
        }
    }
  }

Codici di stato

Condizione Codice stato Codice di errore dettagliato
Entità esistente aggiornata 200 N/D
Nuova entità creata 201 N/D
Errori utente generici Intervallo 400
Errori di convalida della pipeline 400 PipelineValidationError
Errori di convalida del modulo 400 ModuleValidationError
Errori server generici Intervallo 500

pipelineTopologyGet

Recupera una topologia della pipeline con il nome specificato, se esistente.

Richiesta

  {
        "@apiVersion": "1.1",
        "name": "{TopologyName}"       
  }

Risposta

{
  "status": 200,
  "payload": {
    "value": [
      {
        "systemData": {
          "createdAt": "2021-05-06T10:28:04.560Z",
          "lastModifiedAt": "2021-05-06T10:28:04.560Z"
        },
        "name": "{TopologyName}",
        // Complete pipeline topology
      }
    ]
  }
}

Codici di stato

Condizione Codice stato
Operazione completata 200
Errori utente generici Intervallo 400
Errori server generici Intervallo 500

pipelineTopologyDelete

Elimina una singola topologia della pipeline.

Richiesta

  {
    "methodName": "pipelineTopologyDelete",
    "payload": {
        "@apiVersion": "1.1",
        "name": "{TopologyName}"
    }
  }

Risposta

{
    "status": 200,
    "payload": null
}

Codici di stato

Condizione Codice stato Codice di errore dettagliato
Entità eliminata 200 N/D
Entità non trovata 204 N/D
Errori utente generici Intervallo 400
La topologia della pipeline fa riferimento a uno o più Pipelines 409 PipelineTopologyInUse
Errori server generici Intervallo 500

livePipelineList

Elenca tutte le pipeline attive.

Richiesta

  {
        "@apiVersion": "1.1"
  }

Risposta

{
  "status": 200,
  "value": [
    {
      "systemData": {
        "createdAt": "2021-05-05T14:19:22.16Z",
        "lastModifiedAt": "2021-05-05T16:20:41.505Z"
      },      
      // first live pipeline payload  
    },
      "systemData": {
        "createdAt": "2021-05-06T14:19:22.16Z",
        "lastModifiedAt": "2021-05-06T16:20:41.505Z"
      },
      // next live pipeline payload
    }    
  ]
}

Codici di stato

Condizione Codice stato
Entità trovata 200
Errori utente generici Intervallo 400
Entità non trovata 404
Errori server generici Intervallo 500

livePipelineSet

Crea una pipeline dinamica con il nome specificato se non esiste una pipeline dinamica di questo tipo o aggiorna una pipeline dinamica esistente con tale nome.

Aspetti chiave:

  • Una pipeline dinamica può essere aggiornata liberamente durante lo stato "Disattivato". In altri stati sono consentiti solo alcuni aggiornamenti.
  • Una pipeline dinamica viene riconvalidata in ogni aggiornamento.

Richiesta

  {
        "@apiVersion": "1.1",
        "name": "{livePipelineName}",
        "properties": {
            // Desired live pipeline properties
        }
  }

Risposta

  {
    "status": 201,
    "payload": {
        "systemData": {
           "createdAt": "2021-05-11T18:16:46.491Z",
           "lastModifiedAt": "2021-05-11T18:16:46.491Z"
        },
        "name": "{livePipelineName}",
        "properties": {
            // Complete live pipeline
        }
    }
  }

Codici di stato

Condizione Codice stato Codice di errore dettagliato
Entità esistente aggiornata 200 N/D
Nuova entità creata 201 N/D
Errori utente generici Intervallo 400 N/D
Errori di convalida della pipeline in tempo reale 400 PipelineValidationError
Errori di convalida del modulo 400 ModuleValidationError
Errori di convalida delle risorse 409 ResourceValidationError
Errori server generici Intervallo 500 N/D

livePipelineDelete

Elimina una singola pipeline dinamica.

Aspetti chiave:

  • È possibile eliminare solo le pipeline attive disattivate.

Richiesta

  {
        "@apiVersion": "1.1",
        "name": "{livePipelineName}"
  }

Risposta

  {
    "status": 200,
    "payload": null
  }

Codici di stato

Condizione Codice stato Codice di errore dettagliato
Pipeline dinamica eliminata correttamente 200 N/D
Pipeline in tempo reale non trovata 204 N/D
Errori utente generici Intervallo 400
La pipeline non è nello stato "Disattivato" 409 OperationNotAllowedInState
Errori server generici Intervallo 500

livePipelineGet

Questo è simile a livePipelineTopologyGet. Recupera una pipeline dinamica con il nome specificato, se esistente.

Richiesta

  {
        "@apiVersion": "1.1",
        "name": "{livePipelineName}"       
  }

Risposta

{
  "status": 200,
  "payload": {
    "value": [
      {
        "systemData": {
          "createdAt": "2021-05-06T10:28:04.560Z",
          "lastModifiedAt": "2021-05-06T10:28:04.560Z"
        },
        "name": "{livePipelineName}",
        // Complete live pipeline
      }
    ]
  }
}

Codici di stato

Condizione Codice stato
Operazione completata 200
Errori utente generici Intervallo 400
Errori server generici Intervallo 500

livePipelineActivate

Attiva una pipeline dinamica.

Aspetti chiave

  • Il metodo restituisce quando la pipeline dinamica è in stato "Attivazione" o "Attivato".
  • Un'operazione List/Set nella pipeline in tempo reale restituirà lo stato corrente.
  • Questo metodo può essere richiamato purché la pipeline in tempo reale non si trova nello stato (temporaneo) "Disattivazione".
  • Idempotenza:
    • La chiamata livePipelineActivate a una pipeline dinamica già in stato "Attivazione" si comporta come se la pipeline in tempo reale fosse disattivata.
    • L'attivazione di una pipeline con stato "Attivo" restituisce immediatamente un codice di operazione riuscita.

Richiesta

  {
        "@apiVersion": "1.1",
        "name": "{livePipelineName}"
  }

Risposta

{
    "status": 200,
    "payload": null
}

Codici di stato

Condizione Codice stato Codice di errore dettagliato
Pipeline attivata correttamente 200 N/D
Nuova entità creata 201 N/D
Errori utente generici Intervallo 400
Errori di convalida del modulo 400 ModuleValidationError
Errori di convalida delle risorse 409 ResourceValidationError
La pipeline dinamica è in stato di disattivazione 409 OperationNotAllowedInState
Errori server generici Intervallo 500

livePipelineDeactivate

Disattiva una pipeline dinamica. La disattivazione di una pipeline disattiva normalmente l'elaborazione video e garantisce che tutti gli eventi e i video memorizzati nella cache sul cloud vengano sottoposti a commit nel cloud, ogni volta che applicabile.

Aspetti chiave:

  • Il metodo restituisce solo quando la pipeline dinamica viene disattivata.
  • Questo metodo può essere richiamato purché la pipeline in tempo reale non si trova nello stato (temporaneo) "Attivazione".
  • La pipeline passa allo stato "Disattivazione" durante la disattivazione.
    • Un'operazione List/Set nella pipeline in tempo reale restituirà lo stato corrente.
    • La disattivazione viene completata quando tutti i supporti sono stati caricati nel cloud (se la pipeline ha un nodo sink video ).
  • Idempotenza:
    • La chiamata livePipelineDeactivate a una pipeline dinamica già in stato di disattivazione si comporta come se la pipeline dinamica fosse in stato "Attivo".
    • La disattivazione di una pipeline con stato "Inattivo" restituisce immediatamente un codice di operazione riuscita.

Richiesta

  {
    "@apiVersion": "1.1",
    "name": "{livePipelineName}"
  }

Risposta

{
 "status": 200,
 "payload": null
}
Condizione Codice stato Codice di errore dettagliato
Pipeline attivata correttamente 200 N/D
Nuova entità creata 201 N/D
Errori utente generici Intervallo 400
La pipeline è in stato di attivazione 409 OperationNotAllowedInState
Errori server generici Intervallo 500

remoteDeviceAdapterList

Elenca tutte le schede di dispositivo remote. Il modulo edge di Analizzatore video può fungere da gateway trasparente per video, consentendo ai dispositivi IoT di inviare video al cloud da dietro un firewall. Per ogni dispositivo IoT deve essere creata una scheda dispositivo remoto. La comunicazione tra il cloud e il dispositivo IoT verrà quindi propagata tramite il modulo Edge di Analizzatore video.

Richiesta

  {
        "@apiVersion": "1.1"
  }

Risposta

{
  "status": 200,
  "value": [
    {
      "systemData": {
        "createdAt": "2021-10-05T14:19:22.16Z",
        "lastModifiedAt": "2021-10-05T16:20:41.505Z"
      },      
      // first remote device adapter payload
    },
      "systemData": {
        "createdAt": "2021-10-06T14:19:22.16Z",
        "lastModifiedAt": "2021-10-06T16:20:41.505Z"
      },
      // next remote device adapter  payload
    }    
  ]
}

Codici di stato

Condizione Codice stato
Entità trovata 200
Errori utente generici Intervallo 400
Entità non trovata 404
Errori server generici Intervallo 500

remoteDeviceAdapterSet

Crea una scheda di dispositivo remota con il nome specificato se tale scheda esiste o aggiorna una scheda esistente con tale nome. Nel payload della risposta e nelle remoteDeviceAdapterList chiamate o remoteDeviceAdapterGet vengono omesse credenziali o segreti.

Richiesta

  {
        "@apiVersion": "1.1",
        "name": "{remoteDeviceAdapterName}",
        "properties": {
            // Desired remote device adapter properties
        }
  }

Risposta

  {
    "status": 201,
    "payload": {
        "systemData": {
           "createdAt": "2021-10-11T18:16:46.491Z",
           "lastModifiedAt": "2021-10-11T18:16:46.491Z"
        },
        "name": "{remoteDeviceAdapterName}",
        "properties": {
            // Remote device adapter properties, except the credentials
        }
    }
  }

Codici di stato

Condizione Codice stato Codice di errore dettagliato
Entità esistente aggiornata 200 N/D
Nuova entità creata 201 N/D
Errori utente generici Intervallo 400 N/D
Errori di convalida dell'adattatore di dispositivo remoto 400 RemoteDeviceAdapterValidationError
Errori di convalida del modulo 400 ModuleValidationError
Errori di convalida delle risorse 409 ResourceValidationError
Errori server generici Intervallo 500 N/D

remoteDeviceAdapterGet

È simile a livePipelineTopologyGet. Recupera un adattatore di dispositivo remoto con il nome specificato, se esistente (eventuali credenziali o segreti vengono omessi).

Richiesta

  {
        "@apiVersion": "1.1",
        "name": "{remoteDeviceAdapterName}"       
  }

Risposta

{
  "status": 200,
  "payload": {
    "value": [
      {
        "systemData": {
          "createdAt": "2021-10-06T10:28:04.560Z",
          "lastModifiedAt": "2021-10-06T10:28:04.560Z"
        },
        "name": "{remoteDeviceAdapterName}",
        // Remote device adapter properties, except the credentials
      }
    ]
  }
}

Codici di stato

Condizione Codice stato
Operazione completata 200
Errori utente generici Intervallo 400
Errori server generici Intervallo 500

remoteDeviceAdapterDelete

Elimina una singola scheda dispositivo remota, se presente.

Richiesta

  {
        "@apiVersion": "1.1",
        "name": "{remoteDeviceAdapterName}"
  }

Risposta

  {
    "status": 200,
    "payload": null
  }

Codici di stato

Condizione Codice stato Codice di errore dettagliato
Adattatore dispositivo remoto eliminato correttamente 200 N/D
Scheda dispositivo remota non trovata 204 N/D
Errori utente generici Intervallo 400
Errori server generici Intervallo 500

onvifDeviceDiscover e onvifDeviceGet

I dettagli di queste chiamate sono disponibili nell'articolo sull'individuazione di dispositivi con supporto per ONVIF.

Passaggi successivi

Schema di configurazione del modulo gemello