文 凱,張 潤,王尚波
(1.重慶郵電大學(xué) 通信新技術(shù)應(yīng)用研究中心,重慶 400065;2.重慶信科設(shè)計有限公司,重慶 400065)
基于Hi3531的NVR軟件平臺的設(shè)計與實現(xiàn)
文 凱1,2,張 潤1,王尚波1
(1.重慶郵電大學(xué) 通信新技術(shù)應(yīng)用研究中心,重慶 400065;2.重慶信科設(shè)計有限公司,重慶 400065)
為了滿足市場對兼容性強和簡單易用的NVR軟件平臺的需求,通過分析和研究Hi3531媒體處理平臺、ONVIF、流媒體、Qt等技術(shù),設(shè)計并提出了一種NVR軟件平臺設(shè)計方案。介紹了NVR系統(tǒng)和軟件架構(gòu)的設(shè)計方法,重點討論了NVR實時預(yù)覽和錄像回放模塊的實現(xiàn)。最后,給出了平臺的運行效果。
NVR;Hi3531;實時預(yù)覽;錄像回放
隨著國民安防意識的增強,以及平安城市建設(shè)步伐的加快,國內(nèi)網(wǎng)絡(luò)視頻監(jiān)控進入迅猛的發(fā)展時期。但是市面上,由于存在各廠家設(shè)備的兼容性差和傳輸距離短等問題,嚴重影響網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的普及,標準化和網(wǎng)絡(luò)化的NVR軟件平臺已成為研究熱點。
Hi3531平臺由華為海思公司制造,具有8路D1或5路1 080p的解碼能力,同時提供視頻處理功能,能滿足多數(shù)視頻監(jiān)控系統(tǒng)的需求[1]。本NVR系統(tǒng)采用Hi3531平臺,結(jié)合Web、流媒體技術(shù)、ONVIF和Qt等主要技術(shù),實現(xiàn)了一個具有兼容性好、實用性強的NVR軟件平臺。
1.1 系統(tǒng)架構(gòu)概述
NVR以海思Hi3531為媒體處理平臺,采用ONVIF作為信息交互協(xié)議。NVR系統(tǒng)設(shè)計原理如圖1所示,NVR首先通過ONVIF獲得IPC的媒體URL,流媒體客戶端通過此URL向IPC請求視頻數(shù)據(jù),然后將請求到的數(shù)據(jù)經(jīng)Hi3531解碼模塊之后顯示。在本地客戶端呈現(xiàn)遠程設(shè)備管理、系統(tǒng)管理和錄像回放等功能。NVR同時響應(yīng)遠程Web客戶端的請求,并通過網(wǎng)絡(luò)向遠端的PC用戶轉(zhuǎn)發(fā)IPC的音視頻數(shù)據(jù)和網(wǎng)絡(luò)控制消息,實現(xiàn)遠程實時預(yù)覽、遠程錄像、遠程報警、遠程回放及遠程云臺控制等功能。
圖1 NVR系統(tǒng)設(shè)計原理
1.2 軟件架構(gòu)設(shè)計
NVR系統(tǒng)軟件架構(gòu)如圖2所示。
圖2 NVR系統(tǒng)軟件架構(gòu)
下面簡要介紹NVR的主要模塊:
1)協(xié)議服務(wù)模塊
本模塊用于實現(xiàn)協(xié)議通信服務(wù),由ONVIF協(xié)議和Web服務(wù)器組成。ONVIF協(xié)議描述網(wǎng)絡(luò)視頻的接口、數(shù)據(jù)類型和數(shù)據(jù)交互的模式[2],Web服務(wù)器為網(wǎng)頁瀏覽提供服務(wù)。
2)邏輯處理模塊
該模塊負責(zé)完成系統(tǒng)的邏輯功能,主要包括錄像回放、實時預(yù)覽、系統(tǒng)管理和遠程設(shè)備管理等。本模塊的主要任務(wù)是實現(xiàn)實時預(yù)覽和錄像回放,因為在協(xié)議服務(wù)模塊中實現(xiàn)了其他邏輯業(yè)務(wù),比如遠程設(shè)備管理[3]。
視頻解碼模塊主要是通過解碼引擎處理接收到的音視頻數(shù)據(jù)。為了實現(xiàn)圖像數(shù)據(jù)的預(yù)覽、編碼或抓怕,將解析后的數(shù)據(jù)發(fā)往視頻處理子系統(tǒng) (Video Processing Sub System,VPSS)進行處理,VPSS可對圖像進行圖像增強、銳化、去噪等處理,并同源輸出多路不同分辨率的圖像數(shù)據(jù),最后把數(shù)據(jù)送到顯示設(shè)備上顯示。
錄像回放模塊主要是請求視頻流,按照錄像策略,將視頻數(shù)據(jù)生成某種特定的格式寫入硬盤,并能通過通道號、日期實現(xiàn)快速錄像查詢。
3)客戶端
系統(tǒng)采用C/S和B/S相結(jié)合的架構(gòu),客戶端分為Web客戶端和本地客戶端,用于將系統(tǒng)功能以界面的方式呈現(xiàn)給用戶,客戶端通過SOAP協(xié)議實現(xiàn)與協(xié)議服務(wù)模塊之間的通信。Web客戶端用戶只需輸入服務(wù)器的IP就能訪問服務(wù)器,下載并安裝視頻插件,通過C/S的安全登錄認證,就能登錄服務(wù)器并訪問設(shè)備。本地客戶端由Qt開發(fā),具有可移植性強,開發(fā)周期短、模塊程度高、支持2D/3D圖形渲染等特點[4]。
4)操作系統(tǒng)
操作系統(tǒng)層采用Linux 3.0.8內(nèi)核,其專門用于海思系列多媒體Soc。該系統(tǒng)具有精簡的內(nèi)核,媒體處理層驅(qū)動在啟動時通過模塊的方式動態(tài)加載,因而應(yīng)用程序具有更高的靈活性。
NVR邏輯處理主要完成系統(tǒng)管理、實時預(yù)覽、錄像回放和遠程設(shè)備管理等功能,本節(jié)重點討論實時預(yù)覽模塊和錄像回放模塊。
2.1 實時預(yù)覽模塊
實時預(yù)覽是NVR最重要的功能之一,該模塊涉及ONVIF、流媒體和解碼等技術(shù)。ONVIF主要用于發(fā)現(xiàn)設(shè)備,獲得設(shè)備IP地址、設(shè)備能力、碼流令牌等。流媒體則根據(jù)碼流令牌獲得碼流的URI,通過URI請求碼流。視頻解碼其是對碼流解壓縮的過程,為了滿足實時性要求,NVR采用的是Hi3531的硬件解碼器。該芯片具有高達5路1 080p實時多協(xié)議解碼能力,保證了系統(tǒng)的流暢性和實時性。
1)獲得碼流令牌
碼流分為主碼流和子碼流,通過不同的令牌標記。要獲得碼流令牌,需要完成以下步驟:首先,當(dāng)攝像頭接入監(jiān)控網(wǎng)絡(luò)中時,會多播包含設(shè)備類型、作用域和IP的hello報文。其次,NVR收到報文后,多播包含設(shè)備類型和作用域的probe報文。然后,所有在網(wǎng)攝像頭解析報文,提取設(shè)備信息查看是否匹配,如果匹配成功,則返回包含設(shè)備類型、作用域和IP的match報文。最后,將設(shè)備增加到NVR的設(shè)備列表中,有了攝像頭的IP地址就能獲得設(shè)備的能力,得到設(shè)備的媒體服務(wù)信息地址mediauri,獲得攝像頭的所有配置文件(profiles)信息,進而獲得碼流令牌profiletoken,格式如:videosource_192_168_1_108_0_000。通過ONVIF獲得碼流令牌,極大的提高了平臺的兼容性。
2)請求碼流
通過碼流令牌,構(gòu)造流媒體地址URI,格式如:rtsp://192.168.1.134:554/cam/realmonitor?profile=videosource_192_168_1_109_0_000&streamname=108。由于Live555容易擴展,采用它完成RTSP傳輸和接收功能,降低了平臺的開發(fā)難度。通過流媒體地址URI與IPC流媒體服務(wù)器建立連接,創(chuàng)建RTP/RTCP會話,并持續(xù)接收媒體流數(shù)據(jù),發(fā)往解碼引擎。
3)視頻解碼
視頻解碼器對碼流進行解碼,之后對圖像進行處理,如去噪、銳化和圖像增強等[5]。視頻解碼過程如圖3所示。
2.2 錄像回放模塊
錄像回放模塊是NVR最重要的功能之一,主要包括存儲和回放兩部分。
2.2.1 錄像存儲
1)存儲策略
在錄像存儲的過程中,會頻繁讀寫和刪除文件。頻繁刪除文件會造成大量碎片,因而嚴重影響文件的讀寫速度,造成硬盤的空間利用率低。早期的解決方法是把錄像文件都保存在同一個文件中,處理方式簡單,可以避免碎片。但是由于視頻數(shù)據(jù)連續(xù)存儲,無法實現(xiàn)隨機的錄像回放,會嚴重影響錄像查詢的時間。并且沒有記錄視頻幀的時間戳信息,無法實現(xiàn)同步[6]。
為解決這些問題,本文根據(jù)硬盤存儲容量,將整個硬盤空間預(yù)先分割成若干固定大小的數(shù)據(jù)文件和索引文件,盡量確保同一通道的錄像文件在硬盤存儲地址的連續(xù)性,以減少碎片。并且一個錄像文件只存放相同通道的視頻數(shù)據(jù),便于錄像查詢。當(dāng)硬盤的剩余空間小于某一特定值時,覆蓋最早的錄像文件。如果錄像文件大小超出鎖設(shè)定大小時,在新的錄像文件中繼續(xù)錄像。
2)文件結(jié)構(gòu)
在存儲放視頻幀的時候,分別將視頻數(shù)據(jù)寫入數(shù)據(jù)文件,索引信息寫入索引文件。錄像存儲所涉及的文件包括硬盤掛載信息文件mountinfo、管理文件recordtotalinfo.index、數(shù)據(jù)文件recorddata.data和索引文件recordindex.index,下面將對每個文件的組織和功能進行分析:
(1)mountinfo文件主要記錄硬盤掛載的時間。
(2)recordtotalinfo.index文件用于管理整個分區(qū),它記錄了分區(qū)中所有數(shù)據(jù)文件和索引文件的信息。
(3)recordindex.index索引文件主要存放若干片段和索引文件狀態(tài)信息。片段由幀接收到的時間、幀在數(shù)據(jù)文件的位置、片段大小和錄像類型組成,索引文件狀態(tài)信息包括URL、第一個片段的開始時間、最后一個片段的開始時間、包的大小、數(shù)據(jù)文件中已存放幀的大小、片段的總大小、狀態(tài)標志、片段的總數(shù)量、每個數(shù)據(jù)頭后關(guān)鍵幀的數(shù)量以及數(shù)據(jù)頭的數(shù)量。
(4)recorddata.data數(shù)據(jù)文件用于存放視頻幀,包括關(guān)鍵幀和非關(guān)鍵幀,由片段頭部、幀頭部和數(shù)據(jù)3部分組成。片段頭部由數(shù)據(jù)段的開始時間、幀率、寬度、高度、幀數(shù)、每幀的長度,幀頭部包括幀的類型、數(shù)據(jù)長度和時間戳。
3)存儲實現(xiàn)
啟動一個錄像任務(wù),分配一塊錄像緩沖區(qū)recordbuffer,Rtsp客戶端向IPC請求視頻數(shù)據(jù),接收到一幀數(shù)據(jù)時,判斷該幀是否需要進行錄像存儲,如果需要則將視頻數(shù)據(jù)存儲到分配好的recordbuffer中。啟動錄像存儲線程,判斷緩沖區(qū)是否已滿,如果是則把緩沖區(qū)中的所有數(shù)據(jù)寫入數(shù)據(jù)文件,把緩沖區(qū)的片段和和索引文件狀態(tài)信息寫入索引文件中,否則繼續(xù)接收一下幀。
在錄像存儲實現(xiàn)中,采用recordbuffer緩存機制,即在視頻流寫到數(shù)據(jù)文件的過程中,引入了recordbuffer。利用這一機制,降低了讀寫硬盤的頻率,提高了系統(tǒng)性能。在數(shù)據(jù)文件寫滿時,可先將視頻流存放在緩存中,然后再打開空余的數(shù)據(jù)文件繼續(xù)寫入,防止在切換數(shù)據(jù)文件時視頻流的丟失,保證視頻流的完整性[6]。
此外,將緩存區(qū)的內(nèi)容寫入數(shù)據(jù)文件前,需先從對應(yīng)索引文件狀態(tài)消息中獲得數(shù)據(jù)文件的大小和數(shù)據(jù)文件已存放幀的大小,與緩沖區(qū)的大小進行判斷,設(shè)置數(shù)據(jù)文件的狀態(tài)標志(已滿、空閑和正在使用)。索引文件的狀態(tài)信息中記錄了最早的錄像時間,當(dāng)所有的數(shù)據(jù)文件中錄滿之后,可以覆蓋最早的數(shù)據(jù)文件,提高了錄像的連續(xù)性和硬盤空間的利用率[6]。
2.2.2 錄像回放
1)查詢錄像
當(dāng)查詢某通道某特定時刻的視頻錄像時,會啟動一個查詢線程。首先,遍歷系統(tǒng)中的所有分區(qū),判斷分區(qū)的掛載時間是否滿足查詢時間的要求。其次,遍歷硬盤的所有索引文件,找到與待查詢通道相同的URL索引文件。最后,遍歷索引文件,判斷索引文件狀態(tài)信息中第一個片段的起始時間和最后一個片段的起始時間是否在查詢時間范圍內(nèi),如果是,則將相應(yīng)的片段保存到單向錄像查詢鏈表中。錄像查詢流程圖如圖4所示。
圖4 錄像查詢流程圖
2)播放視頻錄像
首先,根據(jù)開始播放時間,在錄像查詢鏈表找到對應(yīng)的錄像片段;其次,根據(jù)錄像片段的開始位置,確定數(shù)據(jù)幀在數(shù)據(jù)文件的起始位置;然后,讀取數(shù)據(jù)信息,包括數(shù)據(jù)長度、幀率、時間戳、寬度、高度、時間。最后,將數(shù)據(jù)送到解碼通道,播放錄像文件。
Web客戶端運行效果如圖5所示。Web客戶端分實時預(yù)覽、錄像查詢、告警設(shè)置和系統(tǒng)配置4部分。實時預(yù)覽界面由設(shè)備列表、視頻顯示區(qū)、分屏區(qū)和云臺控制區(qū)組成,視頻顯示區(qū)可最多顯示16路視頻。云臺控制區(qū)用于操作云臺,如旋轉(zhuǎn)、變倍和變焦等。錄像查詢主要是查詢和播放Web服務(wù)器的錄像文件。報警設(shè)置用于配置告警信息,如:告警時間段、錄像時長、抓圖等。系統(tǒng)配置用于用戶管理、網(wǎng)絡(luò)設(shè)置、錄像配置等[7]。
圖5 視頻監(jiān)控客戶端的運行效果圖(截圖)
目前,本NVR軟件平臺已經(jīng)商用,兼容性、實時性、穩(wěn)定性和操作性都等到了廣泛認可。文中給出了軟件平臺的架構(gòu),以及視頻解碼器和錄像回放實現(xiàn)的基本方法,對安防領(lǐng)域的開發(fā)者具有一定參考價值。隨著安防領(lǐng)域的迅猛發(fā)展,本文提出的軟件平臺設(shè)計方法具有一定的應(yīng)用價值。
[1]深圳海思半導(dǎo)體有限公司. Hi3531/Hi3532媒體處理軟件開發(fā)參考[Z].深圳:深圳海思半導(dǎo)體有限公司,2012.
[2] ONVIF Core specification version 2.0[S]. 2010.
[3]徐飛明.基于ONVIF協(xié)議的NVR軟件平臺的設(shè)計與開發(fā)[D].杭州:浙江大學(xué),2012.
[4]HUANG Y, LI J, XU F, et al. Intelligent fault diagnosis system in large industrial networks[C]//Proc. IEEE International Conference on Apperceiving Computing and Intelligence Analysis. Chengdu: IEEE Press, 2008:319-323.
[5]深圳海思半導(dǎo)體有限公司. Hi3531 H.264編解碼處理器簡介[Z].深圳:深圳海思半導(dǎo)體有限公司, 2012.
[6]司小海,馬躍.數(shù)字視頻系統(tǒng)錄像與回放技術(shù)的研究[EB/OL].[2014-04-24].http://www.paper.edu.cn/html/releasepaper/2012/11/363/.
[7] 郭聳,洪炳镕,陳鳳東.基于嵌入式Linux和Web服務(wù)器的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)[J].哈爾濱商業(yè)大學(xué)學(xué)報:自然科學(xué)版, 2005, 21(6):736-738.
責(zé)任編輯:李 薇
Design and Implementation of NVR Software Platform Based on Hi3531
WEN Kai1,2, ZHANG Run1,WANG Shangbo1
(1.ResearchCentreforApplicationofNewCommunicationTechnologies,ChongqingUniversityofPostsandTelecommunications,Chongqing400065,China;2.ChongqingInformationTechnologyDesigningCo.,Ltd.,Chongqing400065,China)
In order to meet the market demand for compatibility and facility of the NVR software platforms, through the method of analyzing and researching Hi3531 media processing platform, ONVIF, streaming media, Qt technology, et al, a design of a NVR software platform is put forward. The architecture of NVR system and software are explained. The realization of NVR video decoding and video playback module are emphasized. Finally, the result of the platform is given.
NVR; Hi3531; live preview; playback
TN946
A
10.16280/j.videoe.2015.01.016
2014-05-31
【本文獻信息】文凱,張潤,王尚波.基于Hi3531的NVR軟件平臺的設(shè)計與實現(xiàn)[J].電視技術(shù),2015,39(1).