{ "@apiVersion": "1.1", "name": "PersonCrossingLineTopology", "properties": { "description": "Analyzing Live Video with Computer Vision for Spatial Analysis", "parameters": [ { "name": "rtspUserName", "type": "String", "description": "rtsp source user name.", "default": "dummyUserName" }, { "name": "rtspPassword", "type": "String", "description": "rtsp source password.", "default": "dummyPassword" }, { "name": "rtspUrl", "type": "String", "description": "rtsp Url" }, { "name": "grpcUrl", "type": "String", "description": "inferencing Url", "default": "tcp://spatialanalysis:50051" }, { "name": "spatialanalysisusername", "type": "String", "description": "spatialanalysis endpoint username", "default": "not-in-use" }, { "name": "spatialanalysispassword", "type": "String", "description": "spatialanalysis endpoint password", "default": "not-in-use" } ], "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.CognitiveServicesVisionProcessor", "name": "computerVisionExtension", "endpoint": { "@type": "#Microsoft.VideoAnalyzer.UnsecuredEndpoint", "url": "${grpcUrl}", "credentials": { "@type": "#Microsoft.VideoAnalyzer.UsernamePasswordCredentials", "username": "${spatialanalysisusername}", "password": "${spatialanalysispassword}" } }, "inputs": [ { "nodeName": "rtspSource", "outputSelectors": [ { "property": "mediaType", "operator": "is", "value": "video" } ] } ], "samplingOptions": { "skipSamplesWithoutAnnotation": "false", "maximumSamplesPerSecond": "15.0" }, "operation": { "@type": "#Microsoft.VideoAnalyzer.SpatialAnalysisPersonLineCrossingOperation", "enableFaceMaskClassifier": "false", "trackerNodeConfiguration": "{\"enable_speed\": true}", "lines": [ { "line": { "@type": "#Microsoft.VideoAnalyzer.NamedLineString", "line": "[[0.46,0.24],[0.59,0.55]]", "name": "line" }, "events": [ { "threshold": "10", "focus": "footprint" } ] } ] } }, { "@type": "#Microsoft.VideoAnalyzer.SignalGateProcessor", "name": "signalGateProcessor", "inputs": [ { "nodeName": "computerVisionExtension" }, { "nodeName": "rtspSource" } ], "activationEvaluationWindow": "PT1S", "activationSignalOffset": "PT0S", "minimumActivationTime": "PT30S", "maximumActivationTime": "PT30S" } ], "sinks": [ { "@type": "#Microsoft.VideoAnalyzer.IotHubMessageSink", "name": "hubSink", "hubOutputName": "inferenceOutput", "inputs": [ { "nodeName": "computerVisionExtension" } ] }, { "@type": "#Microsoft.VideoAnalyzer.VideoSink", "name": "videoSink", "videoName": "personlinecrossing", "inputs": [ { "nodeName": "signalGateProcessor" } ], "videoCreationProperties": { "title": "personlinecrossing", "description": "Sample video using SA custom operation", "segmentLength": "PT30S" }, "localMediaCachePath": "/var/lib/videoanalyzer/tmp/", "localMediaCacheMaximumSizeMiB": "2048" } ] } }