
企業(yè)工商數(shù)據(jù)API用哪種?
通過使用客戶端應(yīng)用程序(例如移動應(yīng)用程序或瀏覽器)連接到系統(tǒng)的攝像頭查看視頻流是視頻分析系統(tǒng)的常見要求。此功能通過基于 VST API 的標(biāo)準(zhǔn)化調(diào)用流提供支持。VST 微服務(wù)支持使用 WebRTC (Web Real-Time Communication,Web 實時通信)協(xié)議進(jìn)行遠(yuǎn)程流式傳輸,該協(xié)議專為通過互聯(lián)網(wǎng)可靠地對等傳輸視頻和其他數(shù)據(jù)而設(shè)計。
本節(jié)概述 WebRTC 協(xié)議背后的突出概念,并使用 VST API 實現(xiàn)基于 WebRTC 的流式傳輸。WebRTC 是一個功能強大的開源項目,可在兩個對等端(例如 Web 瀏覽器和運行 VST 的 Jetson 設(shè)備)之間直接進(jìn)行實時通信。
典型的 WebRTC 會話涉及幾個不同的實體,如下所示:用戶代理:表示使用 VST API 發(fā)起通信的移動、瀏覽器或 Web 應(yīng)用程序。信號服務(wù)器:在 VST 中實現(xiàn)的 Web 服務(wù)器參與建立 WebRTC 會話的通信通道。
ICE (交互式連接建立)服務(wù)器:VST-WebRTC 堆棧中實現(xiàn)的邏輯模塊,用于確定對等方之間的最佳連接路徑。這是繞過防火墻和 NAT (網(wǎng)絡(luò)地址轉(zhuǎn)換器)所必需的。
STUN (會話遍歷實用程序)服務(wù)器:一種有助于發(fā)現(xiàn)公共 IP 地址和端口的 ICE 服務(wù)器。當(dāng)對等方使用私有(基于 NAT 的)IP 地址時,這是必要的。這是托管在公有云網(wǎng)絡(luò)上的第三方實體。
TURN (使用 NAT 周圍的繼電器進(jìn)行遍歷)服務(wù)器:在直接點對點通信失敗時充當(dāng)中繼器,并且僅在節(jié)點位于不同網(wǎng)絡(luò)時才需要。Twilio? 等第三方服務(wù)支持此功能。
WebRTC 會議使用控制路徑和數(shù)據(jù)路徑以啟用會話創(chuàng)建和流式傳輸。控制路徑支持設(shè)置和管理同行之間的會話,其階段包括初始化、信號傳遞、ICE 候選交換和建立連接。VST 使用戶代理能夠通過其 API 遠(yuǎn)程執(zhí)行這些操作。數(shù)據(jù)路徑支持實時媒體數(shù)據(jù)傳輸以及適應(yīng)和質(zhì)量控制,并最終關(guān)閉連接。
圖 3 顯示了客戶端和 VST 之間的調(diào)用流程,該流程捕獲了用于啟用 WebRTC 會話的控制和數(shù)據(jù)路徑。
呼叫流始于客戶端使用 api/v1/sensor/listAPI。
通過在 JavaScript 中通過 HTTP 調(diào)用 VST API,同時利用大多數(shù)瀏覽器支持的 JavaScript 中的 WebRTC 支持,這些概念可應(yīng)用于向基于瀏覽器的 Web 應(yīng)用程序添加視頻流功能。類似概念也可應(yīng)用于構(gòu)建原生 WebRTC 客戶端應(yīng)用程序。要使用 JavaScript 設(shè)置 WebRTC 流式傳輸,請執(zhí)行以下步驟:
創(chuàng)建新的 RTCPeerConnection 具有適當(dāng)配置設(shè)置的對象。
當(dāng)從 VST 接收到答案 SDP 作為啟動 API 響應(yīng)時,請使用
peerConnection.setRemoteDescription。
結(jié)合使用,這些模塊提供了一套功能強大的工具,用于了解人員或物體在物理空間中的移動,用例涵蓋零售倉庫、安全和安保。客戶端應(yīng)用使用 API 來識別傳感器列表、創(chuàng)建線,以及檢索每個功能的計數(shù)和警報。
本節(jié)介紹線這些操作的端到端示例。類似的方法可用于啟用 FOV 和 ROI.對于每種情況,請調(diào)用您選擇的編程語言或 HTTP 客戶端中的 HTTP API.
第一步,檢索要為其配置線的傳感器名稱。
調(diào)用 VST API 以列出所有傳感器。從返回的列表中識別感興趣的傳感器。name 在后續(xù)步驟中,傳感器對象的屬性將用作傳感器 ID,以配置和檢索線數(shù)量和警報。將 <device-ip>替換為設(shè)備的 IP 地址。
http://<device-ip>:30080/vst/api/v1/sensor/list
在此步驟中,配置一條線,以指定您希望對穿越的人員進(jìn)行計數(shù)的線。
請注意,點的坐標(biāo)位于相機坐標(biāo) (圖像平面) 中。左上角為 (00)。
客戶應(yīng)用(例如隨 NVIDIA Metropolis 微服務(wù)提供的參考移動應(yīng)用)提供了視覺輔助來選擇點,而無需手動確定 (x,y) 位置。圖 4 展示了通過移動應(yīng)用創(chuàng)建和渲染線的示例。用戶使用應(yīng)用中的觸摸界面選擇線錨點,以繪制線(綠線)以及方向性(紅色箭頭)。
使用?Id = main_door?傳感器?Id = Amcrest_3?然后,使用您選擇的編程語言調(diào)用以下 HTTP API 調(diào)用: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"}
可以選擇為給定的線配置警報規(guī)則。警報規(guī)則是特定條件,滿足這些條件后將生成警報事件。
要配置一條警報規(guī)則,以便在有人朝入口方向穿過線(大門)時發(fā)出警報,請調(diào)用以下 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"
}
]
}
此步驟說明了如何檢索穿越先前定義的線的人數(shù)。或者,您還可以檢索根據(jù)該線的配置警報規(guī)則生成的警報。
可以查詢特定線的計數(shù) ( sensorId, tripwireId ),時間范圍 ( fromTimestamp, toTimestamp ) 并聚合到指定的時間窗口 ( fixedInterval 或者,您可以通過將“DLSS 3”設(shè)置為“DLSS 3”來檢索警報和統(tǒng)計信息。alerts query 參數(shù)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"
}
]
}
系統(tǒng)會分別返回每個方向的直方圖。整個時間范圍被劃分為 fixedInterval。每個時間窗口的交叉 start,end 報告為 sum_count。
要檢索給定傳感器的所有警報,請調(diào)用以下 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 協(xié)議遠(yuǎn)程訪問設(shè)備配置和功能。在開發(fā)階段,建議通過將 HTTP 請求定向到設(shè)備 IP 地址來調(diào)用 API.但是,在生產(chǎn)場景中,客戶端通常不知道設(shè)備的 IP 地址。
此外,Jetson 設(shè)備可能位于防火墻后面,使其無法訪問,或者它們可能使用基于 NAT 的 IP 地址,而這些地址在外部可能無效。IoT 云通過提供一種機制,以安全的方式將請求從網(wǎng)絡(luò)分離的客戶端轉(zhuǎn)發(fā)到設(shè)備,從而促進(jìn)產(chǎn)品級遠(yuǎn)程 API 調(diào)用。
本節(jié)介紹客戶端獲取安全令牌的機制,并使用這些令牌通過云創(chuàng)建 HTTP,以轉(zhuǎn)發(fā)到適當(dāng)?shù)脑O(shè)備。
雖然本節(jié)的重點是展示客戶端如何通過云調(diào)用設(shè)備 API,但請注意,云架構(gòu)提供了一種安全的“設(shè)備聲明”機制,用于通過云授權(quán)訪問特定設(shè)備。通過云訪問的所有用戶設(shè)備都經(jīng)過身份驗證和授權(quán),用戶只能訪問之前聲明過的設(shè)備。
此功能的設(shè)計具有高度可定制性,可與原始設(shè)計制造商 (ODM) 和原始設(shè)備制造商 (OEM) 運營商現(xiàn)有的安全框架和云后端基礎(chǔ)設(shè)施無縫集成。
物聯(lián)網(wǎng) (IoT) 云實現(xiàn)參考使用?Amazon Cognito?作為身份提供商 (IdP),但用戶可以自由選擇任何第三方身份提供商。要通過云端點訪問設(shè)備 API,請遵循以下概述的身份驗證和授權(quán)調(diào)用流。
使用 Web 控制臺登錄 URI 頁面,以便使用 Amazon Cognito 進(jìn)行身份驗證。身份驗證成功后,Amazon Cognito 會返回唯一的授權(quán)代碼。使用授權(quán)代碼向 Amazon Cognito 發(fā)出受時間限制的 ID 令牌。在調(diào)用 IoT 云安全 API 時展示此 ID 令牌。
API要訪問物聯(lián)網(wǎng)設(shè)備 API,請首先向物聯(lián)網(wǎng)云安全請求授權(quán)令牌。在收到有效請求后,物聯(lián)網(wǎng)云安全會發(fā)出臨時簽名的授權(quán) CWT 令牌。然后,使用此令牌通過物聯(lián)網(wǎng)云傳輸調(diào)用設(shè)備 API,從而進(jìn)行驗證并將請求轉(zhuǎn)發(fā)至設(shè)備。
請注意,如果用戶無權(quán)根據(jù)設(shè)備聲明執(zhí)行操作,則會返回未經(jīng)授權(quán)的 HTTP 錯誤代碼。
借助 NVIDIA Metropolis API 和微服務(wù),在邊緣構(gòu)建功能強大的市場就緒型視覺 AI 應(yīng)用。API 提供了一種標(biāo)準(zhǔn)化、安全和分布式的方法,用于實現(xiàn)各種 NVIDIA Metropolis 微服務(wù)的功能。此版本中包含的參考移動應(yīng)用展示了一個成熟的最終用戶應(yīng)用,該應(yīng)用使用這些 API 構(gòu)建,具有用戶友好型界面,可捕獲配置、視頻流、分析、警報、云集成和設(shè)備聲明。此應(yīng)用包括源代碼,以及版本文檔移動應(yīng)用部分中各種模塊的演練。
來源:NVIDIA企業(yè)開發(fā)者社區(qū)
文章轉(zhuǎn)自微信公眾號@邊緣計算中文社區(qū)
企業(yè)工商數(shù)據(jù)API用哪種?
2024年創(chuàng)建社交媒體帖子的最佳圖像工具API
2024年小型企業(yè)的7個最佳短信應(yīng)用API
用gin寫簡單的crud后端API接口
最新LangChain+GLM4開發(fā)AI應(yīng)用程序系列(一):快速入門篇
深度解析:臨床試驗數(shù)據(jù)庫CT.gov與API接口指南
2024年您產(chǎn)品必備的10大AI API推薦
GraphRAG:基于PolarDB+通義千問api+LangChain的知識圖譜定制實踐
使用Node.js、Express和MySQL構(gòu)建REST API