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