
企業工商數據API用哪種?
通過使用客戶端應用程序(例如移動應用程序或瀏覽器)連接到系統的攝像頭查看視頻流是視頻分析系統的常見要求。此功能通過基于 VST API 的標準化調用流提供支持。VST 微服務支持使用 WebRTC (Web Real-Time Communication,Web 實時通信)協議進行遠程流式傳輸,該協議專為通過互聯網可靠地對等傳輸視頻和其他數據而設計。
本節概述 WebRTC 協議背后的突出概念,并使用 VST API 實現基于 WebRTC 的流式傳輸。WebRTC 是一個功能強大的開源項目,可在兩個對等端(例如 Web 瀏覽器和運行 VST 的 Jetson 設備)之間直接進行實時通信。
典型的 WebRTC 會話涉及幾個不同的實體,如下所示:用戶代理:表示使用 VST API 發起通信的移動、瀏覽器或 Web 應用程序。信號服務器:在 VST 中實現的 Web 服務器參與建立 WebRTC 會話的通信通道。
ICE (交互式連接建立)服務器:VST-WebRTC 堆棧中實現的邏輯模塊,用于確定對等方之間的最佳連接路徑。這是繞過防火墻和 NAT (網絡地址轉換器)所必需的。
STUN (會話遍歷實用程序)服務器:一種有助于發現公共 IP 地址和端口的 ICE 服務器。當對等方使用私有(基于 NAT 的)IP 地址時,這是必要的。這是托管在公有云網絡上的第三方實體。
TURN (使用 NAT 周圍的繼電器進行遍歷)服務器:在直接點對點通信失敗時充當中繼器,并且僅在節點位于不同網絡時才需要。Twilio? 等第三方服務支持此功能。
WebRTC 會議使用控制路徑和數據路徑以啟用會話創建和流式傳輸。控制路徑支持設置和管理同行之間的會話,其階段包括初始化、信號傳遞、ICE 候選交換和建立連接。VST 使用戶代理能夠通過其 API 遠程執行這些操作。數據路徑支持實時媒體數據傳輸以及適應和質量控制,并最終關閉連接。
圖 3 顯示了客戶端和 VST 之間的調用流程,該流程捕獲了用于啟用 WebRTC 會話的控制和數據路徑。
呼叫流始于客戶端使用 api/v1/sensor/listAPI。
通過在 JavaScript 中通過 HTTP 調用 VST API,同時利用大多數瀏覽器支持的 JavaScript 中的 WebRTC 支持,這些概念可應用于向基于瀏覽器的 Web 應用程序添加視頻流功能。類似概念也可應用于構建原生 WebRTC 客戶端應用程序。要使用 JavaScript 設置 WebRTC 流式傳輸,請執行以下步驟:
創建新的 RTCPeerConnection 具有適當配置設置的對象。
當從 VST 接收到答案 SDP 作為啟動 API 響應時,請使用
peerConnection.setRemoteDescription。
結合使用,這些模塊提供了一套功能強大的工具,用于了解人員或物體在物理空間中的移動,用例涵蓋零售倉庫、安全和安保。客戶端應用使用 API 來識別傳感器列表、創建線,以及檢索每個功能的計數和警報。
本節介紹線這些操作的端到端示例。類似的方法可用于啟用 FOV 和 ROI.對于每種情況,請調用您選擇的編程語言或 HTTP 客戶端中的 HTTP API.
第一步,檢索要為其配置線的傳感器名稱。
調用 VST API 以列出所有傳感器。從返回的列表中識別感興趣的傳感器。name 在后續步驟中,傳感器對象的屬性將用作傳感器 ID,以配置和檢索線數量和警報。將 <device-ip>替換為設備的 IP 地址。
http://<device-ip>:30080/vst/api/v1/sensor/list
在此步驟中,配置一條線,以指定您希望對穿越的人員進行計數的線。
請注意,點的坐標位于相機坐標 (圖像平面) 中。左上角為 (00)。
客戶應用(例如隨 NVIDIA Metropolis 微服務提供的參考移動應用)提供了視覺輔助來選擇點,而無需手動確定 (x,y) 位置。圖 4 展示了通過移動應用創建和渲染線的示例。用戶使用應用中的觸摸界面選擇線錨點,以繪制線(綠線)以及方向性(紅色箭頭)。
使用?Id = main_door?傳感器?Id = Amcrest_3?然后,使用您選擇的編程語言調用以下 HTTP API 調用:http://<device-ip>:30080/emdx/api/config/tripwire?sensorId=Amcrest_3
{ "deleteIfPresent": false, "tripwires": [ { "direction": { "entry": { "name": "Inside the room" }, "exit": { "name": "Outside of the room" }, "p1": { "x": 753, "y": 744}, "p2": { "x": 448, "y": 856} }, "id": "main_door", "name": "Main door", "wire": [ { "x": 321, "y": 664 }, { "x": 544, "y": 648 }, { "x": 656, "y": 953 }, { "x": 323, "y": 1067} ] } ], "sensorId": "Amcrest_3"}
可以選擇為給定的線配置警報規則。警報規則是特定條件,滿足這些條件后將生成警報事件。
要配置一條警報規則,以便在有人朝入口方向穿過線(大門)時發出警報,請調用以下 API 請求:http://<device-ip>:30080/emdx/api/config/rule/alerts/tripwire
{
"sensorId": "Amcrest_3",
"rules": [
{
"rule_id": "cd2218f6-e4d2-4ad4-9b15-3396e4336064",
"id": "main_door",
"type": "tripwire",
"rule_type": "increment",
"time_interval": 1,
"count_threshold": 1,
"direction": "entry"
}
]
}
此步驟說明了如何檢索穿越先前定義的線的人數。或者,您還可以檢索根據該線的配置警報規則生成的警報。
可以查詢特定線的計數 ( sensorId, tripwireId ),時間范圍 ( fromTimestamp, toTimestamp ) 并聚合到指定的時間窗口 ( fixedInterval 或者,您可以通過將“DLSS 3”設置為“DLSS 3”來檢索警報和統計信息。alerts query 參數true:http://<device-ip>:30080/emdx/api/metrics/tripwire/histogram?sensorId=Amcrest_3&tripwireId=main_door&fromTimestamp=2020-10-30T20:00:00.000Z&toTimestamp=2020-10-30T20:01:00.000Z&fixedInterval=1000&alerts=true
{
"alerts": [
{
"count": 1,
"description": "1 people entered tripwire",
"duration": 1.000,
"startTimestamp": "2020-10-30T20:00:59.000Z",
"endTimestamp": "2020-10-30T20:01:00.000Z",
"id": "unique-alert-id",
"rule_type": "increment",
"rule_id": "cd2218f6-e4d2-4ad4-9b15-3396e4336064",
"sensorId": "Amcrest_3",
"type": "tripwire",
"direction": "entry",
"directionName": "Inside the room",
"attributes": [..],
}
],
"counts": [
{
"agg_window": "1 sec",
"histogram": [
{
"end": "2020-10-30T20:00:01.000Z",
"start": "2020-10-30T20:00:00.000Z",
"sum_count": 1
}
],
"attributes": [...],
"sensorId": "Amcrest_3",
"type": "exit"
},
{
"agg_window": "1 sec",
"histogram": [
{
"end": "2020-10-30T20:00:01.000Z",
"start": "2020-10-30T20:00:00.000Z",
"sum_count": 0
},
…..
],
"attributes": [.. ],
"sensorId": "Amcrest_3",
"type": "entry"
}
]
}
系統會分別返回每個方向的直方圖。整個時間范圍被劃分為 fixedInterval。每個時間窗口的交叉 start,end 報告為 sum_count。
要檢索給定傳感器的所有警報,請調用以下 API:
http://<device-ip>:30080/emdx/api/alerts?sensorId=Amcrest_3&fromTimestamp=2020-10-30T20:00:00.000Z&toTimestamp=2020-10-31T01:00:00.000Z
API 使客戶端能夠使用 HTTP 協議遠程訪問設備配置和功能。在開發階段,建議通過將 HTTP 請求定向到設備 IP 地址來調用 API.但是,在生產場景中,客戶端通常不知道設備的 IP 地址。
此外,Jetson 設備可能位于防火墻后面,使其無法訪問,或者它們可能使用基于 NAT 的 IP 地址,而這些地址在外部可能無效。IoT 云通過提供一種機制,以安全的方式將請求從網絡分離的客戶端轉發到設備,從而促進產品級遠程 API 調用。
本節介紹客戶端獲取安全令牌的機制,并使用這些令牌通過云創建 HTTP,以轉發到適當的設備。
雖然本節的重點是展示客戶端如何通過云調用設備 API,但請注意,云架構提供了一種安全的“設備聲明”機制,用于通過云授權訪問特定設備。通過云訪問的所有用戶設備都經過身份驗證和授權,用戶只能訪問之前聲明過的設備。
此功能的設計具有高度可定制性,可與原始設計制造商 (ODM) 和原始設備制造商 (OEM) 運營商現有的安全框架和云后端基礎設施無縫集成。
物聯網 (IoT) 云實現參考使用?Amazon Cognito?作為身份提供商 (IdP),但用戶可以自由選擇任何第三方身份提供商。要通過云端點訪問設備 API,請遵循以下概述的身份驗證和授權調用流。
使用 Web 控制臺登錄 URI 頁面,以便使用 Amazon Cognito 進行身份驗證。身份驗證成功后,Amazon Cognito 會返回唯一的授權代碼。使用授權代碼向 Amazon Cognito 發出受時間限制的 ID 令牌。在調用 IoT 云安全 API 時展示此 ID 令牌。
API要訪問物聯網設備 API,請首先向物聯網云安全請求授權令牌。在收到有效請求后,物聯網云安全會發出臨時簽名的授權 CWT 令牌。然后,使用此令牌通過物聯網云傳輸調用設備 API,從而進行驗證并將請求轉發至設備。
請注意,如果用戶無權根據設備聲明執行操作,則會返回未經授權的 HTTP 錯誤代碼。
借助 NVIDIA Metropolis API 和微服務,在邊緣構建功能強大的市場就緒型視覺 AI 應用。API 提供了一種標準化、安全和分布式的方法,用于實現各種 NVIDIA Metropolis 微服務的功能。此版本中包含的參考移動應用展示了一個成熟的最終用戶應用,該應用使用這些 API 構建,具有用戶友好型界面,可捕獲配置、視頻流、分析、警報、云集成和設備聲明。此應用包括源代碼,以及版本文檔移動應用部分中各種模塊的演練。
來源:NVIDIA企業開發者社區
文章轉自微信公眾號@邊緣計算中文社區