安防視頻云存業(yè)務特點與面臨挑戰(zhàn)
傳統(tǒng)視頻數據因為缺乏元數據索引,因此在無法確定精確的事件發(fā)生時間時,無法快速有效的定位視頻信息,需要大量人力對存量視頻信息進行檢索。由此引入巨大的人力成本,并需要更多時間完成視頻檢索。
此外,傳統(tǒng)安防視頻具有以下特點:
·使用RTMP/RTSP協議實現視頻流收流。
·需要海量、可靠的視頻存儲。
·僅在有事件發(fā)生,并需要了解現實情況時才進行回看。
·回看框架需要確保7*24可用,在需要時可以快速訪問從而實現回看功能。
以上特點意味著:
·需要在云端或本地部署額外的軟/硬件資源,實現視頻流接收,引入額外成本。
·傳統(tǒng)的本地視頻存儲受限于單一副本,存在單點故障導致的視頻丟失風險。固定的本地存儲容量,使得增加攝像頭數量時需要配套考慮存儲設施容量規(guī)劃和部署方案,使得項目周期變長,項目規(guī)劃更加復雜。
·回看框架訪問頻率不高,但7*24可用意味著即使沒有回看需求的時間段內,仍然需要支付對應的系統(tǒng)運行成本。
針對以上困難和特點,我們針對IPC視頻云存成本優(yōu)化場景,開發(fā)了可以植入到IPC內部的視頻切片云存SDK,并利用亞馬遜云科技提供的云上托管服務構建視頻檢索、回看平臺,從而降低回看平臺基礎運行成本,實現回看成本與累積回看時長相關,在不使用回看平臺時,幾乎無需支付平臺運行成本,而當有人訪問時又可以快速提供服務。
解決方案架構與主要功能模塊
系統(tǒng)架構圖:
主要功能模塊:
·IPC C SDK
植入到IPC內部的SDK,用于實現視頻分片和封裝,將可以直接回看的視頻分片存儲到S3存儲桶中。并通過IAM權限管理,實現IPC上傳權限的管理,從而確保各IPC視頻上傳權限相互獨立。
利用SDK直接將視頻上傳至S3存儲桶,從而擺脫本地或云端視頻流轉存所需的資源,實現云存成本與存儲視頻累計時長相關。
·S3視頻存儲桶
用于存儲IPC視頻分片信息,支持使用S3對象標簽和生命周期管理功能,實現視頻分片保存周期管理和視頻存儲成本優(yōu)化。
同時,利用S3每個前綴提供3500 PUT和5500 GET請求的性能,利用前綴命名規(guī)則,實現云存空間性能自動擴展,從而實現使用統(tǒng)一的框架支持從幾個到數以百萬計的IPC設備。
·對視頻抽幀并調用AI接口和DynamoDB元數據存儲
針對傳統(tǒng)IPC視頻存儲難以檢索的情況,引入云上AI服務,實現智能視頻分析,并根據視頻內容,生成相應元數據信息,并保存在DynamoDB之中。用戶可以選擇使用DynamoDB中信息,對視頻內容進行檢索,從而快速定位到所需的視頻片段和對應時間,進而有效提升視頻檢索效率,縮短視頻檢索所需時間。
·AI服務
亞馬遜云科技提供了豐富的AI服務可以用于視頻分析與檢索。目前支持的主要AI服務可以參考以下解決方案:
https://www.amazonaws.cn/solutions/ipc-ai-saas-solution/
由于AI服務部分內容較多,限于篇幅,該解決方案另行刊文作詳細介紹。敬請期待。
·無服務器架構構建回放平臺
為了切實降低回看平臺運行成本,特別是沒有回看請求時的成本,本解決方案采用了云原生的無服務器架構。具有無用戶使用時,成本極低,收到請求時支持秒級快速啟動,自動擴展,統(tǒng)一系統(tǒng)架構支持幾個到數以百萬計的用戶同時訪問。
IPC-C-SDK
用戶可以從Github下載SDK代碼并編譯到自己的IPC之中:
https://github.com/aws-samples/ipc-h264-hls-c-sdk/
IPC-C-SDK內部工作邏輯如下:
IPC-C-SDK從IPC內部視頻、音頻編碼器獲得視頻、音頻流,并通過增加TS、PAT、PMT、PES頭,形成TS格式音視頻流,并存儲于IPC SoC內存緩存區(qū)中。
當內存緩存區(qū)中的音視頻流達到一定閾值后,IPC-C-SDK會自動通過內置S3客戶端,將視頻內容以對象形式推送到S3存儲桶中。
得益于IPC-C-SDK,視頻分片得以直接存儲到S3中,而無需其他音視頻碼流處理設備或資源。從而使得成本得以有效降低到僅需要S3存儲和API調用成本的程度。實現了成本的最優(yōu)化。
IPC-C-SDK使用亞馬遜云科技IAM進行權限管理。支持AK+SK和AK+SK+Token的身份驗證模式。實際生產環(huán)境中,推薦使用Amazon IoT進行設備管理,配合IoT Credential Provider服務,實現物聯網設備證書換臨時IAM身份信息。該方案提供最佳的云上數據安全性,支持按照設備證書ID管理設備權限,從而確保IPC云存視頻的安全性。其參考架構如下:
用戶可以參考以下文檔:
https://docs.aws.amazon.com/iot/latest/developerguide/authorizing-direct-aws.html
S3視頻存儲桶
S3視頻存儲桶提供高達99.999999999%的數據持久性。意味著如果以3秒分片保存到S3,每10000年才會丟失一個3秒的視頻分片。從而確保存儲視頻的安全性。
此外,在視頻云存時,推薦使用以下格式進行存儲:
S3://{桶名稱}/{設備證書ID}/{年}/{月}/{日}/{時}/{分}/{秒}.ts
該格式可以提供以下優(yōu)勢:
·確保數據存儲和訪問安全
利用設備證書ID作為第一級前綴,實現各個IPC設備之間的權限相互獨立與隔離。即每個攝像頭均只能訪問自己證書ID前綴之下的視頻分片。通過IAM角色配置,更加可以實現限制IPC設備僅能夠進行上傳操作,而無法下載視頻分片,從而確保視頻云存安全性。
·性能自動擴展
由于各個IPC分別屬于不同的前綴之下,亞馬遜云科技為每個S3前綴提供每秒3500 PUT和5500 GET請求的性能,因此當IPC攝像頭數量增加時,S3將自動優(yōu)化并提供對應性能的處理能力。從而實現使用統(tǒng)一架構支持從幾個到數以百萬計IPC設備的能力。
視頻抽幀并調用AI接口將結果存儲到DynamoDB中
當視頻分片上傳到S3存儲桶中后,用戶可以選擇使用AI技術對視頻內容進行分析。例如:檢測視頻中出現的人臉和相應位置,并將結果保存到DynamoDB中,供后續(xù)查詢使用。
視頻數據在上傳到S3后,會觸發(fā)S3事件通知。通過云端Lambda函數,可以實現抽取視頻關鍵幀,并轉換為JPEG格式,發(fā)送給AI接口進行分析。
AI分析的結果會以JSON格式,返回給Lambda函數,Lambda函數將分析結果信息存儲到DynamoDB數據庫中,供回看平臺檢索使用。
無服務器架構構建視頻回看平臺
得益于以TS格式保存的視頻分片,云存視頻分片可以實現任意時間段內分片連接成整體視頻進行回看。因此無需在云端進行二次轉碼操作。從而降低系統(tǒng)成本。
無服務器的視頻回看平臺使用開源Video.js框架,提供兩種回看模式:
·近實時回看(延遲6-20秒,取決于網絡和客戶端配置情況)
在近實時回看模式下,客戶端通過API Gateway HTTP API請求m3u8播放列表,Lambda函數檢查S3桶中存儲的分片,并將2分鐘之內,最后上傳的3個視頻分片返回給客戶端。通過滾動更新m3u8返回分片清單,實現近實時的查看視頻內容。
·指定時間段回看
客戶端通過API Gateway HTTP API請求m3u8播放列表,并提供回看時間段的開始、截止時間。Lambda函數檢查S3桶中存儲的分片,并將指定時間段內的視頻分片按照順序添加到m3u8播放列表中返回給客戶端,從而實現制定時間段的視頻回看功能。
指定時間段回看支持通過檢索DynamoDB中存儲的視頻元數據,獲取所需回看的時間段范圍,將結果返回給客戶端進行回看。
您可以通過以下鏈接在亞馬遜云科技的環(huán)境中一鍵部署回看框架。框架中的回看應用帶有示例視頻供您參考。
https://console.aws.amazon.com/cloudformation/home?#/stacks/create/template?stackName=IPC-H264-HLS&templateURL=https://aws-gcr-solutions.s3.amazonaws.com/ipc-c-sdk/v1.0.0/ipc-h264-hls-c-sdk.template