隨著數(shù)字中國的建設,,特別是視頻監(jiān)控設備的國產(chǎn)化和設備研發(fā)制造成本快速下降,視頻監(jiān)控設備快速普及,并被廣泛應用于各類園區(qū),,如景區(qū)、產(chǎn)業(yè)園區(qū),、社區(qū)等,。出于安全和成本等原因,這些監(jiān)控設備分布在各自獨立的智能化專網(wǎng),,處于封閉運行的狀態(tài),。調(diào)閱實時監(jiān)控的方式主要在監(jiān)控指揮中心,通過現(xiàn)場視頻監(jiān)控平臺及大屏完成,。近年手機移動應用快速普及,,催生了遠程實時查看視頻監(jiān)控的需求,比如景區(qū)大門口實時人員狀態(tài),、應急處突管理的現(xiàn)場視頻,、產(chǎn)線生產(chǎn)的實時狀態(tài)、重點實驗室的運行情況等多種多樣的需求,。目前已經(jīng)有很多家庭用級別的網(wǎng)絡監(jiān)控攝像設備及系統(tǒng),,可以滿足簡單場景下遠程監(jiān)控的基礎需求。但是,,受限于成本及攝像機的性能,,無法在園區(qū)內(nèi)大量普及。
本文引用地址:http://www.eepw.com.cn/article/202302/443512.htm
在園區(qū)部署視頻監(jiān)控設備上云的系統(tǒng),,即可以實現(xiàn)遠程監(jiān)控的需求,,通過園區(qū)本地部署的NVR 設備獲取前端的實時碼流,經(jīng)轉碼,、加密,、上云發(fā)布等流程,完成視頻流上云的過程,,在經(jīng)過應用端的下載,、解碼、播放等,,完成園區(qū)視頻監(jiān)控的遠程實時查看,。
1 視頻監(jiān)控上云技術
視頻監(jiān)控上云,如要確保視頻內(nèi)容安全,,需要本地視頻流經(jīng)過轉碼,,然后通過加密算法對視頻內(nèi)容進行加密,,然后再上云傳輸,前端應用下載解密后,,即可進行播放,,完成遠程監(jiān)控的目的。
1.1 視頻轉碼技術
FF MPEG是個開源跨平臺多媒體數(shù)據(jù)解決方案[1-2],,具備強大的編碼,、解碼、轉碼能力,, 支持HTTP,、RTSP、RTMP 等多種協(xié)議,,并且支持不同協(xié)議視頻格式的轉碼,比如RTSP 轉成RTMP 或HLS 等格式,。
開源RTMP 架構SRS 結合開源編解碼庫FF MPEG可以實現(xiàn)視頻直播播放[3],,本系統(tǒng)的遠程視頻監(jiān)控功能類似直播平臺,可以實現(xiàn)一次轉碼分發(fā),,多終端同時觀看的效果,。
1.2 視頻加解密算法
本系統(tǒng)為了確保視頻監(jiān)控的安全,在編解碼節(jié)點增加了加解密算法,。算法在數(shù)據(jù)塊的第28~40 字節(jié)增加干擾數(shù)據(jù)串,,其余數(shù)據(jù)通過簡單4 個字節(jié)1 組,同一4 個字節(jié)的密鑰進行異或操作,,實現(xiàn)視頻數(shù)據(jù)的加解密,。下面就分別就加解密算法進行描述。
1)加密算法
public byte[] ByteEncrypt(byte[] videoBytes)
{
byte[ ] encryptedVideoBytes = new byte[(videoBytes.Length)];
b y t e [ ] _ e n c r y p t e d Vi d e o B y t e s = newbyte[(videoBytes.Length) + 13];// 預留12 個字節(jié)
// 增加的干擾數(shù)據(jù),,示例
byte[] DisValue =new byte[12] { 0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc,0xde, 0xff, 0xaa,0xce, 0xbb, 0xdd };
// 初始化標兵指向數(shù)據(jù)第一個元素
int i = 0;
//加密流程
while (i + 4 < videoBytes.Length)
{
// 加密密鑰設定為 0X4E 0X42 0X49 0X4C(示例),,原始數(shù)據(jù)同密鑰進行異或操作
encryptedVideoBytes[i + 1] = (byte)(videoBytes[i + 2] ^ 0x4E);
encryptedVideoBytes[i + 2] = (byte)(videoBytes[i + 3] ^ 0x42);
encryptedVideoBytes[i + 3] = (byte)(videoBytes[i + 0] ^ 0x49);
encryptedVideoBytes[i + 0] = (byte)(videoBytes[i + 1] ^ 0x4C);
i += 4; // 處理下后續(xù)四個字節(jié)
}
/ / 將12 個字節(jié)的干擾數(shù)據(jù)并入視頻流數(shù)據(jù)塊的
第28 到第40 個字節(jié)
for (int j = 0; j < 28; j++) _encryptedVideoBytes[j]= (byte)(encryptedVideoBytes[j]);
f o r ( i n t j = 0 ; j < 1 2 ; j + + ) _encryptedVideoBytes[j+28] = (byte)(DisValue[j]);
for (int j = 28; j < (videoAsBytes.Length);
j + + ) _encryptedVideoBytes[ j + 12] = (byte)(encryptedVideoBytes[j]);return _encryptedVideoBytes;// 返回最終處理完的數(shù)據(jù)
}
2)解密算法
直接跳過第28 到第40 個字節(jié),其余的數(shù)據(jù)按照四個字節(jié)一組同密鑰進行異或操作復原數(shù)據(jù),。
public byte[] Byte_Dcrypt(byte[] _videoBytes) {
byte[] DcryptedVideoBytes = new byte[(_
videoBytes.Length)];
int i = 0, k = 0 ;
// 解密流程
while (i + 4 < _videoBytes.Length)
{
// 跳過第28 到第40 個字節(jié)的數(shù)據(jù),,其余數(shù)據(jù)按4個字節(jié)一組同密鑰進行異或操作
if (i < 28 || i >= 40)
{
DcryptedVideoBytes[k] = (byte)(_
videoBytes[i + 3] ^ 0x49);
DcryptedVideoBytes[k + 1] = (byte)(_
videoBytes[i] ^ 0x4C);
DcryptedVideoBytes[k + 2] = (byte)(_
videoBytes[i + 1] ^ 0x4E);
DcryptedVideoBytes[k + 3] = (byte)(_
videoBytes[i + 2] ^ 0x42);
k += 4;
}
i += 4;// 處理后續(xù)4 個字節(jié)
}
return DcryptedVideoBytes;// 返回解密后的數(shù)據(jù)
}
2 監(jiān)控上云整體方案
整體方案分為視頻上傳及視頻下載兩個部分,詳見系統(tǒng)圖1,。視頻上傳部分包括前端NVR 實時碼流獲取,,視頻格式轉碼,視頻流數(shù)據(jù)加密及加擾,,傳輸上云幾個模塊,;視頻下載及播放部分包括視頻下載、視頻解碼,、視頻播放幾個功能模塊,,后續(xù)將詳細介紹,。視頻的加解密模塊給視頻的網(wǎng)絡傳輸安全增加了一道安全屏障,確保了信息的安全,。
圖1 基于加密的智慧園區(qū)視頻監(jiān)控遠程監(jiān)控系統(tǒng)架構圖
3 系統(tǒng)關鍵模塊
系統(tǒng)各關鍵模塊密切配合,,圍繞視頻流數(shù)據(jù)的安全可靠處理加工及傳輸?shù)龋瓿蓤@區(qū)視頻監(jiān)控上云及遠程監(jiān)控的目標,。下面將分布介紹各個模塊內(nèi)容,。
3.1 監(jiān)控視頻流獲取
園區(qū)的視頻監(jiān)控設備都匯集到監(jiān)控指揮中心,可以通過NVR獲取其實時的視頻監(jiān)控流,。監(jiān)控攝像機都支持輸出多個碼流,,主碼流以及子碼流,碼流的編碼格式式包括H.264,、H.265 等,,可通過RTSP 協(xié)議獲取其視頻流。系統(tǒng)首先獲取所有視頻監(jiān)控設備的列表明細,,然后在配置頁面,,選取眾多攝像機中需要上云的設備,配置其碼流地址,、編碼格式,、賬號及密碼等信息。
鑒于視頻流同時抓取需要消耗大量的計算資源及網(wǎng)絡帶寬,,該系統(tǒng)視頻流抓取部分,,平時在“待機”狀態(tài),有前端系統(tǒng)請求的時候,,才會啟動視頻流抓取的模塊,,根據(jù)預先設定的碼流配置信息,將前端實時碼流通過NVR傳輸?shù)揭曨l轉碼平臺,。系統(tǒng)平臺支撐多路視頻流數(shù)據(jù)同時抓取,。
3.2 視頻轉碼
本系統(tǒng)要支持多種播放終端上進行遠程查看,包括PC網(wǎng)頁,、微信小程序以及移動APP等,,需選取一個更加通用的協(xié)議作為傳輸標準,所以選擇了更為通用的Webrtc格式流,。原始的視頻流各位RTSP標準,,要轉換成Webrtc格式,需要經(jīng)過兩次轉換來完成,。在視頻轉碼的設計部分,,由兩個節(jié)點完成,首先通過FFMEPG組件在自研任務調(diào)度組件的支配下,,以規(guī)則將視頻流獲取模塊傳輸來各路的RTSP格式的視頻流,,轉換成對應RTMP格式的流,,然后將RTMP格式的流通過SRS 組件,根據(jù)調(diào)度任務規(guī)則,,轉換成對應的Webrtc格式的流,。轉換流程如圖2所示。
圖2 視頻轉碼流程圖
3.3 視頻加密
為了保護隱私安全,,系統(tǒng)采用本文1.2 節(jié)描述的加密算法,,對準備上云傳輸?shù)囊曨l流數(shù)據(jù)包進行加密。采用密鑰為0x424E4C49,,以視頻轉碼節(jié)段生成的各路webrtc數(shù)據(jù)包為單位進行加密,,各數(shù)據(jù)報內(nèi)以4 個字節(jié)1 組同加密密鑰按加密算法進行加密。各單位待傳輸數(shù)據(jù)包加密完成后,,在每個數(shù)據(jù)包的第28 至第40 字節(jié)插入干擾串{{ 0x45, 0X4C, 0x45, 0X4B, 0X54, 0X52,0X4F, 0X4E, 0X49,0X4B, 0X45, 0X52 },,從而完成各個數(shù)據(jù)包的加密工作,準備進入視頻上云分發(fā)階段,。
3.4 視頻上云
視頻上云模塊主要根據(jù)播放端的請求,,將經(jīng)過加密的數(shù)據(jù)包對應傳輸給指定的鏈接,同時用多個線程來維護鏈接的數(shù)據(jù),,確保經(jīng)過加密的數(shù)據(jù)包準確有序地上傳。
3.5 視頻監(jiān)控云服務平臺
服務平臺負責響應前端播放器的碼流播放請求,,根據(jù)請求碼流來分配播放地址,,這里就分兩種情況:一種是已經(jīng)有別的播放終端請求過統(tǒng)一碼流的播放,則直接將現(xiàn)有播放連接分發(fā)給新的請求終端,;另外一種是全新的播放請求,,則需要向前端請求對應的碼流,建立視頻流獲取,、轉碼,、加密的數(shù)據(jù)通路,并將對應的數(shù)據(jù)獲取地址下方給播放器端,。
視頻云平臺服務器還負責維護當前所有的播放鏈接,,針對每條播放鏈接進行權重賦值,增加一個播放請求加1,,減少一個播放請求則減1,。如果在2 min 內(nèi)無持續(xù)的播放請求,則釋放該條轉碼上傳連接,,待下次有需求后重新建立鏈接,。
由于視頻建立鏈接有時間及資源的消耗,為了前端用戶更好的體驗,,系統(tǒng)會根據(jù)前端用戶使用的情況做出是否提前啟動轉碼鏈路的預測,,提前建立視頻流的轉碼上傳鏈路,,待用戶真的產(chǎn)生請求時,即可以完成秒速響應,。
視頻云端服務平臺的主要作用就是完成播放段與轉碼端的匹配,,并建立數(shù)據(jù)交換鏈路,響應終端用戶的需求,,同時達到資源的優(yōu)化配置,,及時釋放無用的資源。
3.6 視頻下載
視頻下載服務模塊,,根據(jù)前端播放器的請求,,從視頻監(jiān)控云服務器獲取下載鏈接地址,并建立下載進程,,將對應的數(shù)據(jù)下載到指定緩沖區(qū),。
3.7 視頻解碼播放
視頻數(shù)據(jù)已經(jīng)經(jīng)過加密,如果直接丟給播放器,,則無法進行播放,,需要對稱執(zhí)行解密操作。播放器從對應的緩沖區(qū)獲取經(jīng)過加密的視頻流數(shù)據(jù),,交給解密模塊,,解密模塊根據(jù)本文1.2 章節(jié)描述的解密算法,首先嚴重干擾字段釋放正確一致,,然后對其余的數(shù)據(jù)按4 個字節(jié)一組,,采用解密密鑰0x424E4C49 進行解密。解密完成的數(shù)據(jù)直接送給播放器進行播放,。從而完成整個解密播放的流程,。
4 系統(tǒng)運行效果
系統(tǒng)上線部署后,轉碼,、加解密,、播放各模塊無縫配合,運行流暢,。每路視頻僅需要128 kbit/s 的網(wǎng)絡帶寬,,20M的帶寬即可支持200 路園區(qū)本地監(jiān)控視頻同時遠程調(diào)取的需求。圖3 為小程序端遠程調(diào)閱的運行效果,,視頻從請求到播放時間1.5 s,,運行流暢,畫面清晰,。
圖3 小程序園區(qū)監(jiān)控運行效果
5 結束語
基于加密算法的園區(qū)視頻監(jiān)控上云系統(tǒng),,給智慧園區(qū)本地視頻監(jiān)控遠程實時調(diào)閱提供了技術手段,在保障遠程視頻監(jiān)控及時高效的同時,還給數(shù)據(jù)安全增加了一套屏障,。具備良好的商業(yè)價值和廣泛的推廣意義,,有了這套系統(tǒng),再配合其他可量化的指標預警系統(tǒng),,即可讓管理方有效掌握生成經(jīng)營的狀況,,第一時間處理各種應急事件,有效促進園區(qū)數(shù)值轉型升級,。
參考文獻:
[1] 吳張順,張珣.基于FFMPEG的視頻編碼存儲研究與實現(xiàn)[J].杭州電子科技大學學報,2006(3) :30-34.
[2] 胡成任,平安,李文莉.基于Android系統(tǒng)的FF MPEG多媒體同步傳輸算法研究[J].計算機技術與發(fā)展, 2011,21(10):85-91.
[3] 胡國強,周兆永,信朝霞.基于SRS的開源直播系統(tǒng)的設計與實現(xiàn)[J].現(xiàn)代電子技術,2016,39(16):36-43.
(本文來源于《電子產(chǎn)品世界》雜志2023年2月期)
更多信息可以來這里獲取==>>電子技術應用-AET<<