Rychlý start: Začínáme s Azure Video Analyzerem
![]()
Další možností je vyhledat si témata v části vytváření aplikací pro videa ve službě.
Tento rychlý start vás provede kroky pro zahájení práce s Analyzátorem videa Azure. V tomto článku se používá virtuální počítač Azure jako zařízení IoT Edge a simulovaný živý video stream.
Po dokončení kroků nastavení budete moct spustit simulovaný stream živého videa prostřednictvím kanálu, který detekuje a hlásí jakýkoli pohyb v tomto streamu. Následující diagram graficky znázorňuje tento kanál.
Požadavky
Účet Azure, který má aktivní předplatné. Vytvořte si účet zdarma, pokud ho ještě nemáte.
Poznámka
Budete potřebovat předplatné Azure, ke kterému máte přístup jak k roli Přispěvatel , tak k roli Správce přístupu uživatelů . Pokud nemáte správná oprávnění, kontaktujte svého správce účtu, abyste vám tato oprávnění udělili.
Visual Studio Codes následujícími rozšířeními:
Tip
Při instalaci rozšíření Azure IoT Tools se může zobrazit výzva k instalaci Dockeru. Tuto výzvu ignorujte.
Nastavení prostředků Azure
Proces nasazení bude trvat přibližně 20 minut. Po dokončení budete mít v předplatném Azure nasazené určité prostředky Azure, mezi které patří:
- Účet Analyzátoru videa – tato cloudová služba slouží k registraci hraničního modulu Analyzátoru videa a k přehrávání nahraných videí a analýz videa.
- Storage účet – pro ukládání nahraných analýz videa a videa.
- Spravovaná identita – spravovaná identita přiřazená uživatelem, která slouží ke správě přístupu k výše uvedenému účtu úložiště.
- Virtuální počítač – virtuální počítač, který bude sloužit jako simulované hraniční zařízení.
- IoT Hub – Slouží jako centrální centrum zpráv pro obousměrnou komunikaci mezi vaší aplikací IoT, IoT Edge moduly a zařízeními, která spravuje.
Nastavíte vývojové prostředí
Získání připojovacího IoT Hub vašeho souboru
- V Azure Portal přejděte na stránku IoT Hub, kterou jste vytvořili v rámci výše uvedeného kroku nastavení.
- V levém navigačním panelu vyhledejte možnost Zásady sdíleného přístupu a klikněte na něj.
- Klikněte na zásadu s názvem iothubowner.
- Zkopírujte primární připojovací řetězec – bude vypadat jako .
HostName=xxx.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX
Připojení na IoT Hub
- Otevřete Visual Studio Code a vyberte Průzkumník > zobrazení. Nebo stiskněte kombinaci kláves Ctrl+Shift+E.
- V levém dolním rohu karty Průzkumník vyberte Azure IoT Hub.
- Výběrem ikony Další možnosti zobrazte místní nabídku. Pak vyberte Set IoT Hub Connection String (Nastavit připojovací řetězec).
- Jakmile se zobrazí vstupní pole, zadejte IoT Hub připojovací řetězec.
- Přibližně za 30 sekund aktualizujte Azure IoT Hub v levé dolní části. Měli byste vidět hraniční zařízení
avasample-iot-edge-device, které by mělo mít nasazené následující moduly:- Hraniční modul Analyzátoru videa (název modulu avaedge)
- Simulátor RTSP (název modulu rtspsim)
Tip
Pokud jste analyzátor videa ručně nasadili do hraničního zařízení (například zařízení ARM64), modul se zobrazí pod zařízením pod Azure IoT Hub. Tento modul můžete vybrat a postupovat podle zbývajících kroků níže.
Příprava na monitorování modulů
Když použijete spustit tento rychlý start, události se budou do IoT Hub. Pokud chcete zobrazit tyto události, postupujte takto:
V Visual Studio Code otevřete kartu Rozšíření (nebo stiskněte Ctrl+Shift+X) a vyhledejte Azure IoT Hub.
Klikněte pravým tlačítkem a vyberte Rozšíření Nastavení.
Vyhledejte a povolte možnost Zobrazit podrobnou zprávu.
Otevřete podokno Průzkumníka v Visual Studio Code a vyhledejte Azure IoT Hub v levém dolním rohu.
Rozbalte uzel Zařízení.
Klikněte pravým tlačítkem na a vyberte Start Monitoring Built-in Event Endpoint (Spustit
avasample-iot-edge-devicemonitorování integrovaného koncového bodu událostí).Poznámka
Můžete být vyzváni k zadání předdefinovaných informací koncového bodu pro IoT Hub. Chcete-li získat tyto informace, v Azure Portal přejděte do IoT Hub a vyhledejte v levém navigačním podokně možnost Předdefinované koncové body . Klikněte na něj a vyhledejte koncový bod kompatibilní s centrem událostí v části koncový bod kompatibilní s centrem událostí. Zkopírujte a použijte text v poli. Koncový bod bude vypadat přibližně takto:
Endpoint=sb://iothub-ns-xxx.servicebus.windows.net/;SharedAccessKeyName=iothubowner;SharedAccessKey=XXX;EntityPath=<IoT Hub name>
Použití volání přímých metod
Streamy živého videa teď můžete analyzovat vyvoláním přímých metod zveřejněných hraničním modulem Analyzátoru videa. Pokud chcete prozkoumat všechny přímé metody poskytované modulem, přečtěte si téma Přímé metody Analyzátoru videa. Schéma přímých metod najdete tady.
Zobrazení výčtu topologií kanálu
Tento krok zobrazí výčet všech topologií kanálu v modulu.
- Klikněte pravým tlačítkem na modul "avaedge" a v místní nabídce vyberte Vyvolat přímou metodu modulu.
- V horní části okna se zobrazí automaticky otevírané okno pro Visual Studio Code úpravy. Do
pipelineTopologyListtextového pole zadejte a stiskněte Enter. - Dále zkopírujte a vložte následující datovou část JSON do textového pole a stiskněte klávesu Enter.
{
"@apiVersion" : "1.1"
}
Během několika sekund se v okně VÝSTUP zobrazí následující odpověď:
[DirectMethod] Invoking Direct Method [pipelineTopologyList] to [avasample-iot-edge-device/avaedge] ...
[DirectMethod] Response from [avasample-iot-edge-device/avaedge]:
{
"status": 200,
"payload": {
"value": []
}
}
Výše uvedená odpověď se očekává, protože nebyly vytvořeny žádné topologie kanálu.
Nastavení topologie kanálu
Pomocí stejného postupu jako výše můžete vyvolat a nastavit topologii kanálu pomocí následujícího pipelineTopologySet json jako datové části. Budete vytvářet topologii kanálu s názvem MotionDetection.
{
"@apiVersion": "1.1",
"name": "MotionDetection",
"properties": {
"description": "Analyzing live video to detect motion and emit events",
"parameters": [
{
"name": "rtspUrl",
"type": "string",
"description": "rtspUrl"
},
{
"name": "rtspUserName",
"type": "string",
"description": "rtspUserName",
"default": "dummyUserName"
},
{
"name": "rtspPassword",
"type": "string",
"description": "rtspPassword",
"default": "dummypw"
}
],
"sources": [
{
"@type": "#Microsoft.VideoAnalyzer.RtspSource",
"name": "rtspSource",
"transport": "tcp",
"endpoint": {
"@type": "#Microsoft.VideoAnalyzer.UnsecuredEndpoint",
"credentials": {
"@type": "#Microsoft.VideoAnalyzer.UsernamePasswordCredentials",
"username": "${rtspUserName}",
"password": "${rtspPassword}"
},
"url": "${rtspUrl}"
}
}
],
"processors": [
{
"@type": "#Microsoft.VideoAnalyzer.MotionDetectionProcessor",
"sensitivity": "medium",
"name": "motionDetection",
"inputs": [
{
"nodeName": "rtspSource",
"outputSelectors": []
}
]
}
],
"sinks": [
{
"hubOutputName": "inferenceOutput",
"@type": "#Microsoft.VideoAnalyzer.IotHubMessageSink",
"name": "iotHubSink",
"inputs": [
{
"nodeName": "motionDetection"
}
]
}
]
}
}
Tato datová část JSON vytvoří topologii, která definuje tři parametry, kde dva z nich mají výchozí hodnoty. Topologie má jeden zdrojový uzel (zdrojRTSP),jeden uzel procesoru( procesor detekce pohybu a jeden uzel jímky (IoT Hub jímka zpráv). Vizuální znázornění topologie je znázorněno výše.
Během několika sekund se v okně VÝSTUP zobrazí následující odpověď.
{
"status": 201,
"payload": {
"systemData": {
"createdAt": "2021-03-21T18:16:46.491Z",
"lastModifiedAt": "2021-03-21T18:16:46.491Z"
},
"name": "MotionDetection",
"properties": {
"description": "Analyzing live video to detect motion and emit events",
"parameters": [
{
"name": "rtspPassword",
"type": "string",
"description": "rtspPassword",
"default": "dummypw"
},
{
"name": "rtspUrl",
"type": "string",
"description": "rtspUrl"
},
{
"name": "rtspUserName",
"type": "string",
"description": "rtspUserName",
"default": "dummyUserName"
}
],
"sources": [
{
"@type": "#Microsoft.VideoAnalyzer.RtspSource",
"name": "rtspSource",
"transport": "tcp",
"endpoint": {
"@type": "#Microsoft.VideoAnalyzer.UnsecuredEndpoint",
"url": "${rtspUrl}",
"credentials": {
"@type": "#Microsoft.VideoAnalyzer.UsernamePasswordCredentials",
"username": "${rtspUserName}",
"password": "${rtspPassword}"
}
}
}
],
"processors": [
{
"@type": "#Microsoft.VideoAnalyzer.MotionDetectionProcessor",
"sensitivity": "medium",
"eventAggregationWindow": "PT1S",
"name": "motionDetection",
"inputs": [
{
"nodeName": "rtspSource",
"outputSelectors": []
}
]
}
],
"sinks": [
{
"@type": "#Microsoft.VideoAnalyzer.IotHubMessageSink",
"hubOutputName": "inferenceOutput",
"name": "iotHubSink",
"inputs": [
{
"nodeName": "motionDetection",
"outputSelectors": []
}
]
}
]
}
}
}
Vrácený stav je 201. Tento stav znamená, že se vytvořila nová topologie.
Vyzkoušejte následující další kroky:
- Znovu
pipelineTopologySetvyvolat. Vrácený stavový kód je 200. Tento kód indikuje, že se stávající topologie úspěšně aktualizovala. - Znovu
pipelineTopologySetvyvolat, ale změňte řetězec popisu. Vrácený stavový kód je 200 a popis se aktualizuje na novou hodnotu. - Vyvolat
pipelineTopologyList, jak je uvedeno v předchozí části. Teď se ve vrácené datové části zobrazí topologie MotionDetection.
Čtení topologie kanálu
Vyvolat pipelineTopologyGet pomocí následující datové části.
{
"@apiVersion" : "1.1",
"name" : "MotionDetection"
}
Během několika sekund se v okně VÝSTUP zobrazí následující odpověď:
{
"status": 200,
"payload": {
"systemData": {
"createdAt": "2021-03-21T18:16:46.491Z",
"lastModifiedAt": "2021-03-21T18:16:46.491Z"
},
"name": "MotionDetection",
"properties": {
"description": "Analyzing live video to detect motion and emit events",
"parameters": [
{
"name": "rtspPassword",
"type": "string",
"description": "rtspPassword",
"default": "dummypw"
},
{
"name": "rtspUrl",
"type": "string",
"description": "rtspUrl"
},
{
"name": "rtspUserName",
"type": "string",
"description": "rtspUserName",
"default": "dummyUserName"
}
],
"sources": [
{
"@type": "#Microsoft.VideoAnalyzer.RtspSource",
"name": "rtspSource",
"transport": "tcp",
"endpoint": {
"@type": "#Microsoft.VideoAnalyzer.UnsecuredEndpoint",
"url": "${rtspUrl}",
"credentials": {
"@type": "#Microsoft.VideoAnalyzer.UsernamePasswordCredentials",
"username": "${rtspUserName}",
"password": "${rtspPassword}"
}
}
}
],
"processors": [
{
"@type": "#Microsoft.VideoAnalyzer.MotionDetectionProcessor",
"sensitivity": "medium",
"eventAggregationWindow": "PT1S",
"name": "motionDetection",
"inputs": [
{
"nodeName": "rtspSource",
"outputSelectors": []
}
]
}
],
"sinks": [
{
"@type": "#Microsoft.VideoAnalyzer.IotHubMessageSink",
"hubOutputName": "inferenceOutput",
"name": "iotHubSink",
"inputs": [
{
"nodeName": "motionDetection",
"outputSelectors": []
}
]
}
]
}
}
}
V datové části odpovědi si všimněte těchto podrobností:
- Stavový kód je 200, což značí úspěch.
- Datová část obsahuje časové razítko a
createdAtlastModifiedAtčasové razítko.
Vytvoření živého kanálu pomocí topologie
Dále vytvořte živý kanál, který odkazuje na výše uvedenou topologii kanálu. Vyvolat livePipelineSet přímou metodu s následující datovou část:
{
"@apiVersion" : "1.1",
"name": "mdpipeline1",
"properties": {
"topologyName": "MotionDetection",
"description": "Sample pipeline description",
"parameters": [
{
"name": "rtspUrl",
"value": "rtsp://rtspsim:554/media/camera-300s.mkv"
},
{
"name": "rtspUserName",
"value": "testuser"
},
{
"name": "rtspPassword",
"value": "testpassword"
}
]
}
}
Všimněte si, že tato datová část:
- Výše uvedená datová část určuje topologii (MotionDetection), kterou bude živý kanál používat.
- Datová část obsahuje hodnotu parametru pro , která v datové části topologie nemá
rtspUrlvýchozí hodnotu. Tato hodnota je odkazem na následující ukázkové video:
Během několika sekund se v okně VÝSTUP zobrazí následující odpověď:
{
"status": 201,
"payload": {
"systemData": {
"createdAt": "2021-03-21T18:27:41.639Z",
"lastModifiedAt": "2021-03-21T18:27:41.639Z"
},
"name": "mdpipeline1",
"properties": {
"state": "Inactive",
"description": "Sample pipeline description",
"topologyName": "MotionDetection",
"parameters": [
{
"name": "rtspPassword",
"value": "testpassword"
},
{
"name": "rtspUrl",
"value": "rtsp://rtspsim:554/media/camera-300s.mkv"
},
{
"name": "rtspUserName",
"value": "testuser"
}
]
}
}
}
V datové části odpovědi si všimněte, že:
- Stavový kód je 201, což značí vytvoření nového živého kanálu.
- Stav je "Neaktivní", což znamená, že se živý kanál vytvořil, ale neaktivoval. Další informace najdete v tématu stavy kanálu.
Vyzkoušejte následující přímé metody jako další kroky:
livePipelineSetZnovu vyvolat se stejnou datovou částí a Všimněte si, že vrácený stavový kód je nyní 200.- Znovu vyvolat,
livePipelineSetale s jiným popisem a poznamenejte si aktualizovaný popis v datové části odpovědi, což značí, že živý kanál byl úspěšně aktualizován. - Vyvolejte
livePipelineSet, ale změňte název na "mdpipeline2" artspUrlna "RTSP://rtspsim:554/Media/lots_015.MKV". V datové části odpovědi si všimněte nově vytvořeného živého kanálu (to znamená stavový kód 201).Poznámka
Jak je vysvětleno v části topologie kanálu, můžete vytvořit několik živých kanálů, abyste mohli analyzovat živé video streamy z mnoha kamer pomocí stejné topologie kanálu. Pokud vytvoříte další živé kanály, je nutné je při čištění odstranit.
Aktivace živého kanálu
V dalším kroku můžete aktivovat živý kanál – což spustí tok (simulované) živé video prostřednictvím kanálu. Vyvolat přímou metodu livePipelineActivate s následující datovou částí:
{
"@apiVersion" : "1.1",
"name" : "mdpipeline1"
}
Během několika sekund se v okně výstup zobrazí následující odpověď.
{
"status": 200,
"payload": null
}
Stavový kód 200 označuje, že se živý kanál úspěšně aktivoval.
Kontroluje stav živého kanálu.
Nyní volejte livePipelineGet přímou metodu s následující datovou částí:
{
"@apiVersion" : "1.1",
"name" : "mdpipeline1"
}
Během několika sekund se v okně výstup zobrazí následující odpověď.
{
"status": 200,
"payload": {
"systemData": {
"createdAt": "2021-03-21T18:27:41.639Z",
"lastModifiedAt": "2021-03-21T18:27:41.639Z"
},
"name": "mdpipeline1",
"properties": {
"state": "Active",
"description": "Sample pipeline description",
"topologyName": "MotionDetection",
"parameters": [
{
"name": "rtspPassword",
"value": "testpassword"
},
{
"name": "rtspUrl",
"value": "rtsp://rtspsim:554/media/camera-300s.mkv"
},
{
"name": "rtspUserName",
"value": "testuser"
}
]
}
}
}
V datové části odpovědi si všimněte následujících údajů:
- Stavový kód je 200, což znamená úspěch.
- Stav je "aktivní", což značí, že živý kanál je nyní aktivní.
Sledovat výsledky
V živém kanálu, který jste vytvořili a aktivovali výše, se používá uzel procesoru pro detekci pohybu k detekci pohybu v příchozím streamu živého videa a odesílá události do IoT Hub jímky. Tyto události se pak předají do vašich IoT Hub jako zprávy, které se teď můžou pozorovat. V okně výstup se zobrazí zprávy s následujícím textem "tělo":
{
"timestamp": 145471641211899,
"inferences": [
{
"type": "motion",
"motion": {
"box": {
"l": 0.514644,
"t": 0.574627,
"w": 0.3375,
"h": 0.096296
}
}
}
]
}
Všimněte si této podrobnosti:
- Část odvození označuje, že typ je pohyb. Poskytuje další data o události pohybu a poskytuje ohraničující rámeček pro oblast videa (v daném časovém razítku), kde byl zjištěn pohyb.
Vyvolat další volání přímé metody k vyčištění
Dále můžete vyvolat přímé metody deaktivace a odstranění živého kanálu (v tomto pořadí).
Deaktivace živého kanálu
Vyvolat livePipelineDeactivate přímou metodu s následující datovou částí:
{
"@apiVersion" : "1.1",
"name" : "mdpipeline1"
}
Během několika sekund se v okně výstup zobrazí následující odpověď:
{
"status": 200,
"payload": null
}
Stavový kód 200 označuje, že živý kanál byl úspěšně deaktivován.
Dále se pokuste vyvolat, livePipelineGet jak je uvedeno výše v tomto článku. Sledujte hodnotu stavu.
Odstranit živý kanál
Vyvolat přímou metodu livePipelineDelete s následující datovou částí
{
"@apiVersion" : "1.1",
"name" : "mdpipeline1"
}
Během několika sekund se v okně výstup zobrazí následující odpověď:
{
"status": 200,
"payload": null
}
Stavový kód 200 označuje, že živý kanál byl úspěšně odstraněn.
Pokud jste vytvořili také kanál s názvem "mdpipeline2", nemůžete odstranit topologii kanálu bez toho, aby tento další kanál odstranil. Znovu volejte metodu Direct livePipelineDelete pomocí následující datové části:
{
"@apiVersion" : "1.1",
"name" : "mdpipeline2"
}
Během několika sekund se v okně výstup zobrazí následující odpověď:
{
"status": 200,
"payload": null
}
Stavový kód 200 označuje, že živý kanál byl úspěšně odstraněn.
Můžete vyvolat livePipelineList pomocí stejné datové části jako pipelineTopologyList . Pozor, aby nedošlo ke výčtu aktivních kanálů.
Odstranění topologie kanálu
Po odstranění všech živých kanálů můžete vyvolat pipelineTopologyDelete přímou metodu s následující datovou částí:
{
"@apiVersion" : "1.1",
"name" : "MotionDetection"
}
Během několika sekund se v okně výstup zobrazí následující odpověď.
{
"status": 200,
"payload": null
}
Stavový kód 200 označuje, že se topologie úspěšně odstranila.
Můžete zkusit vyvolat pipelineTopologyList a sledovat, že modul neobsahuje žádné topologie.
Vyčištění prostředků
Pokud chcete vyzkoušet další rychlá zprovoznění nebo kurzy, uchovujte si prostředky, které jste vytvořili. V opačném případě přejděte do Azure Portal, přejděte do skupin prostředků, vyberte skupinu prostředků, ve které jste tento rychlý start spustili, a odstraňte všechny prostředky.
Další kroky
- Vyzkoušejte si rychlý Start pro nahrávání videí do cloudu, když se zjistí pohyb .
- Vyzkoušejte si rychlý Start pro analýzu živého videa
- Další informace o diagnostických zprávách