劉浩,何巖
(1.武漢郵電科學(xué)研究院 湖北 武漢 430074;2.烽火通信科技股份有限公司 湖北 武漢 430074)
基于海思平臺的NVR拼接預(yù)覽方案的設(shè)計(jì)與實(shí)現(xiàn)
劉浩1,何巖2
(1.武漢郵電科學(xué)研究院 湖北 武漢 430074;2.烽火通信科技股份有限公司 湖北 武漢 430074)
隨著數(shù)字化、網(wǎng)絡(luò)化進(jìn)程的不斷提高,安防產(chǎn)業(yè)的快速發(fā)展,NVR作為新一代視頻監(jiān)控的代表產(chǎn)品已經(jīng)逐漸取代DVR的地位。但隨著NVR接入前端IPC設(shè)備數(shù)量和質(zhì)量的不斷提高,保證客戶端在低帶寬環(huán)境下多通道預(yù)覽的實(shí)時性是具有重要價(jià)值的。本文以海思3535平臺為基礎(chǔ),提出并設(shè)計(jì)了一種視頻拼接預(yù)覽方案,將需要網(wǎng)傳的多通道碼流拼接編碼成單通道碼流供客戶端使用。經(jīng)過驗(yàn)證測試,該方案成功將16個D1碼流拼接編碼成1個D1碼流,并在客戶端顯示,有效的降低了客戶端多通道畫面預(yù)覽所需的碼流帶寬,保證了在低帶寬環(huán)境下客戶端預(yù)覽的實(shí)時性。
NVR;視頻拼接;低帶寬實(shí)時預(yù)覽;海思平臺
隨著數(shù)字化、網(wǎng)絡(luò)化進(jìn)程的不斷發(fā)展,以及市場對視頻監(jiān)控系統(tǒng)的網(wǎng)絡(luò)化功能及網(wǎng)絡(luò)適應(yīng)性要求的不斷提高,NVR(Network Video Recorder即網(wǎng)絡(luò)視頻錄像機(jī))作為下一代視頻監(jiān)控的代表產(chǎn)品已經(jīng)逐漸取代DVR(digital Video Recorder即數(shù)字視頻錄像機(jī))的位置,在視頻監(jiān)控領(lǐng)域扮演著越來越重要的角色[1]。全網(wǎng)絡(luò)化時代的視頻監(jiān)控行業(yè)正逐步表現(xiàn)出IT行業(yè)的特征,作為網(wǎng)絡(luò)化監(jiān)控的核心產(chǎn)品NVR,已經(jīng)從本質(zhì)上變成了IT產(chǎn)品。NVR最主要的功能是通過網(wǎng)絡(luò)接收前端IPC(網(wǎng)絡(luò)攝像機(jī))、DVS(視頻編碼器)等設(shè)備傳輸?shù)臄?shù)字視頻碼流,在本地端進(jìn)行預(yù)覽、存儲和管理,同時也可以通過客戶端如IE客戶端、手機(jī)客戶端經(jīng)由局域網(wǎng)或互聯(lián)網(wǎng)進(jìn)行多通道視頻預(yù)覽和控制[2]。
由于前端IPC性能和NVR本身性能的日漸強(qiáng)大,接入的前端設(shè)備的數(shù)量和質(zhì)量都有極大提升。在低帶寬、網(wǎng)絡(luò)狀況較差的環(huán)境下,需要通過網(wǎng)絡(luò)傳輸?shù)目蛻舳舜a流就可能會出現(xiàn)延時和丟幀,極大的降低了用戶體驗(yàn)。本文以海思公司生產(chǎn)的hi3535芯片為基礎(chǔ),采用嵌入式開發(fā)方式,提出并設(shè)計(jì)一種視頻拼接預(yù)覽方案供客戶端使用。在多畫面同時預(yù)覽時,在犧牲一部分視頻質(zhì)量的條件下,將客戶端需要預(yù)覽的各通道視頻碼流拼接為1路視頻碼流,來保證網(wǎng)絡(luò)客戶端預(yù)覽的實(shí)時性。
由于嵌入式單板的資源有限,功能簡單,不能在它上面運(yùn)行開發(fā)和調(diào)試工具[3]。因此采用“交叉編譯調(diào)試”的方式進(jìn)行開發(fā)和調(diào)試,如圖1所示,對于本系統(tǒng)來說,交叉編譯就是在PC機(jī)的Linux服務(wù)器系統(tǒng)上編譯生成能在NVR嵌入式單板上運(yùn)行的代碼。
在Linux服務(wù)器上安裝uclibc交叉編譯工具。
圖1 Hi3535 Linux開發(fā)環(huán)境Fig.1 Linux development environment of Hi3535
1)解壓并展開Hi3535_SDK_V1.0.4.0包
在Linux服務(wù)器上,使用命令:tar-zxf Hi3535_SDK_V 1.0.4.0.tgz,解壓縮該文件,可以得到一個Hi3535_SDK_V 1.0.4.0目錄。在該目錄下運(yùn)行./sdk.unpack會展開SDK包打包壓縮存放的內(nèi)容。
2)安裝uclibc交叉編譯器
進(jìn)入/osdrv/toolchain/arm-hisiv100nptl-linux目錄,運(yùn)行./cross.install后,打開Linux中的/etc/profile配置文件,在文件末尾增加如下字段:export PATH=”/home/lh/by/toolchains/armlinux/bin:${PATH}”,最后重新啟動Linux服務(wù)器。
交叉編譯器安裝完成之后,進(jìn)行Bootloader和linux內(nèi)核的移植,完成根文件系統(tǒng)和NFS文件系統(tǒng)的建立,最后對系統(tǒng)環(huán)境進(jìn)行配置之后,使linux系統(tǒng)能夠順利在hi3535平臺上運(yùn)行。
本系統(tǒng)中硬件開發(fā)平臺和軟件平臺分別是基于hi3535和linux3.08。圖2為NVR軟件系統(tǒng)方案框圖。系統(tǒng)以模塊化的設(shè)計(jì)思想,將系統(tǒng)各個部分獨(dú)立起來封裝起來,滿足軟件系統(tǒng)中低耦合的要求[4-6]。從圖中可以看出,基于ONVIF標(biāo)準(zhǔn)的視頻接口采用HTTP協(xié)議使前端IPC和NVR進(jìn)行通信;NVR嵌入式服務(wù)器用來實(shí)現(xiàn)IE客戶端和手機(jī)客戶端與本地NVR設(shè)備之間的通信,滿足C/S通信模式的需求;系統(tǒng)邏輯管理層負(fù)責(zé)一些軟件上的邏輯處理,并完成各模塊間交互和事件處理;NVR功能實(shí)現(xiàn)層負(fù)責(zé)具體功能的實(shí)現(xiàn),如預(yù)覽、回放、備份等。
NVR功能實(shí)現(xiàn)層可以對從前端IPC獲得的音視頻數(shù)據(jù)進(jìn)行存儲,視頻編解碼、預(yù)處理、輸出等處理,客戶端預(yù)覽所需要的正是經(jīng)過hi3535芯片處理之后的音視頻數(shù)據(jù)。所以我們的重點(diǎn)放在NVR功能實(shí)現(xiàn)層上面。
圖2 NVR軟件系統(tǒng)方案Fig.2 Software system program of NVR
2.1 方案可行性分析
在普通預(yù)覽場景下,客戶端看到的每一路窗口畫面都是通過NVR將對應(yīng)IPC的網(wǎng)絡(luò)數(shù)據(jù)包轉(zhuǎn)發(fā)到客戶端,然后每一路窗口數(shù)據(jù)包在客戶端解碼之后拼接成的一幅預(yù)覽畫面[7]。假設(shè)在客戶端需要同時預(yù)覽16路通道,每一路通道傳輸碼率為512K的D1(704*576)子碼流,那么客戶端需要8M的總?cè)肟趲挕?6路D1的原始像素拼接,將獲得2816*2304像素圖像,但絕大多數(shù)終端的顯示器最多只有1920*1080像素,所以拼接前會對D1的畫面進(jìn)行縮小然后再拼接到符合終端顯示器的像素大小,多余的像素實(shí)際上也浪費(fèi)了。
采用拼接預(yù)覽方案,是將需要網(wǎng)絡(luò)傳輸?shù)念A(yù)覽畫面在本地NVR內(nèi)進(jìn)行尺寸縮小和拼接,再將拼接好的視頻以D1的大小發(fā)送。此時不論有多少個預(yù)覽通道,發(fā)送的遠(yuǎn)程預(yù)覽帶寬都只有一個D1的帶寬。
2.2 開發(fā)平臺簡介
Hi3535是針對多路高清或多路D1 NVR產(chǎn)品應(yīng)用開發(fā)的專業(yè)SOC芯片。內(nèi)置高性能A9處理器和具有高達(dá)5路1080P解碼能力的多協(xié)議視頻解碼引擎,集成了具備多項(xiàng)復(fù)雜圖像處理算法的高性能視頻/圖像處理引擎,結(jié)合雙路高清顯示輸出能力,為客戶產(chǎn)品提供優(yōu)質(zhì)的圖像質(zhì)量。Hi3535芯片邏輯框圖如圖3所示。
Hi3535提供的媒體處理軟件平臺MPP(Media Process Platform),可支持應(yīng)用軟件快速開發(fā)。該平臺對應(yīng)用軟件屏蔽了芯片相關(guān)的復(fù)雜的底層處理,并對應(yīng)用軟件直接提供MPI(MPP Program Interface)接口完成相應(yīng)功能。主要分為視頻輸入(VI)、視頻處理(VPSS)、視頻編碼(VENC)、視頻解碼(VDEC)、視頻輸出(VO)等模塊。
圖3 Hi3535芯片邏輯框圖Fig.3 Chip logic diagram of Hi3535
2.3 拼接預(yù)覽方案的實(shí)現(xiàn)
我們可以根據(jù)具體情況,決定是否使用碼流拼接功能。如在局域網(wǎng)內(nèi)的帶寬狀況良好,為保證視頻的質(zhì)量,我們可以選擇不開啟碼流拼接;若在互聯(lián)網(wǎng)上傳輸,則可以開啟碼流拼接。在視頻編碼模塊,我們使用H.264視頻壓縮算法,它通過采用現(xiàn)有的基本算法和結(jié)構(gòu),通過精心優(yōu)化計(jì)算流程和方法來取得更好視頻編碼性能[8]。具體實(shí)現(xiàn)方案如圖4所示。
圖4 拼接預(yù)覽流程圖Fig.4 Flow chart of stitching preview
綁定,即通過數(shù)據(jù)接收者綁定數(shù)據(jù)源來建立兩者之間的關(guān)聯(lián)關(guān)系(只允許數(shù)據(jù)接收者綁定數(shù)據(jù)源)。綁定后,數(shù)據(jù)源生成的數(shù)據(jù)將自動發(fā)送給接收者。
虛擬VO設(shè)備,虛擬VO設(shè)備是軟件上的概念,沒有實(shí)際對應(yīng)的物理設(shè)備,虛擬設(shè)備和標(biāo)清設(shè)備相同,標(biāo)清設(shè)備的通道通過hi3535自帶的VGS(Video Graphics Sub-System,即視頻圖形子系統(tǒng))模塊實(shí)現(xiàn)縮放,并疊加為一整幅圖像。
在本地NVR獲取到各個IPC傳輸過來的已編碼的數(shù)據(jù)后,我們可以選擇使用或者不使用碼流拼接。
若不使用拼接碼流,則直接通過網(wǎng)絡(luò)線程將每個IPC需要在客戶端進(jìn)行預(yù)覽的碼流發(fā)送到NVR嵌入式服務(wù)器,再網(wǎng)傳到客戶端,最終在客戶端對每個碼流進(jìn)行逐一解碼,以達(dá)到多畫面預(yù)覽的效果。
若使用拼接碼流,我們的系統(tǒng)綁定關(guān)系式是虛擬VO綁定VDEC,VENC綁定虛擬VO。首先將每個IPC的碼流在NVR本地端通過VDEC模塊進(jìn)行解碼,將解碼后的數(shù)據(jù)通過綁定直接輸出到虛擬VO設(shè)備上,再利用虛擬VO設(shè)備完成多路圖像的縮小并拼接到一個圖像畫面的大小,最后對拼接后的圖像經(jīng)由VENC模塊進(jìn)行編碼。這樣就將需要在客戶端預(yù)覽的所用通道圖像拼接成了一個通道圖像。這時,我們就可以將拼接碼流通過嵌入式服務(wù)器網(wǎng)絡(luò)傳輸?shù)娇蛻舳恕?/p>
在視頻解碼模塊VDEC,采用按幀發(fā)送,用戶每次發(fā)送完整一幀碼流到解碼器,每調(diào)用一次發(fā)送接口,解碼器就認(rèn)為該幀碼流已經(jīng)結(jié)束,開始解碼圖像,流程如下:
1)設(shè)置解碼通道屬性并創(chuàng)建視頻解碼通道HI_MPI_VDE C_CreateChn;
2)解碼器開始接收用戶發(fā)送過來的視頻數(shù)據(jù)碼流HI_M PI_VDEC_StartRecvStream;
3)設(shè)置解碼通道參數(shù),包括圖像解碼模式、圖像輸出順序、圖像數(shù)據(jù)格式、圖像壓縮模式等 HI_MPI_VDEC_Set ChnParam
4)根據(jù)相應(yīng)需要,設(shè)置協(xié)議相關(guān)的內(nèi)存分配通道參數(shù)HI_MPI_VDEC_SetProtocolParam;
5)向視頻解碼通道發(fā)送從前端IPC過來的碼流數(shù)據(jù)HI_MPI_VDEC_SendStream。
在視頻編碼模塊VENC,采用固定比特率CBR,保證碼率統(tǒng)計(jì)時間內(nèi)編碼碼率的平穩(wěn)性,穩(wěn)定性可以通過創(chuàng)建編碼通道時的碼率統(tǒng)計(jì)時間和碼率的波動等級確定,流程如下:
1)根據(jù)需要設(shè)置編碼通道屬性并創(chuàng)建編碼通道,HI_MP I_VENC_CreateChn;
2)開啟編碼通道,接收虛擬VO設(shè)備縮小拼接之后的圖像HI_MPI_VENC_StartRecvPic;
3)將編碼通道作為數(shù)據(jù)接收者綁定到虛擬VO設(shè)備HI_ MPI_SYS_Bind。
經(jīng)過上述方案的設(shè)計(jì),使用交叉編譯器將NVR功能實(shí)現(xiàn)層模塊編譯成動態(tài)庫的形式嵌入到系統(tǒng)的軟件平臺上,供上層程序調(diào)用。在對其它系統(tǒng)模塊也進(jìn)行相應(yīng)的調(diào)整之后,需要預(yù)覽的拼接碼流可以在客戶端界面顯示出來。
在NVR本地端接入16個基于ONVIF協(xié)議的IPC,其主碼流為分辨率720P(1280*720)、幀率30fps、碼率3.5M;子碼流為分辨率D1(704*576)、幀率30fps、碼率512K。然后在IE客戶端進(jìn)行16畫面預(yù)覽,選用子碼流,分別使用和不使用拼接碼流,顯示效果分別如圖5和圖6所示。從兩個圖中對比可以看出,圖5顯示的是16個通道拼接成1個通道的預(yù)覽畫面;而圖6顯示的畫面是NVR將16個IPC的子碼流轉(zhuǎn)發(fā)到IE客戶端而顯示的。
圖5 使用拼接功能客戶端Fig.5 The client used stitching function
圖6 未使用拼接功能客戶端Fig.6 The client did not use stitching function
在上述對比試驗(yàn)的情況下,我們分別查看IE客戶端所在PC的Windows任務(wù)管理器里面的聯(lián)網(wǎng)狀態(tài)。在百兆網(wǎng)卡下,使用拼接碼流的網(wǎng)絡(luò)應(yīng)用使用率為0.8%;在未使用拼接碼流的網(wǎng)絡(luò)應(yīng)用使用率為8%??梢悦黠@看出,使用拼接碼流的確有效的降低了16畫面預(yù)覽所需的帶寬流量,保證了在低帶寬環(huán)境下的多畫面實(shí)時預(yù)覽。
方案的實(shí)質(zhì)是將本應(yīng)該在客戶端進(jìn)行的圖像縮小功能放在本地NVR嵌入式設(shè)備上來實(shí)現(xiàn),并將縮小后的視頻圖像經(jīng)過拼接、編碼到目標(biāo)尺寸,用以達(dá)到多通道預(yù)覽時降低碼流帶寬的目的。但由于NVR本身的編/解碼能力是有限的,使用拼接功能時可能會影響到系統(tǒng)以有功能的性能,所以需要根據(jù)實(shí)際使用情況進(jìn)行權(quán)衡和選擇,當(dāng)然也需要對NVR系統(tǒng)進(jìn)行更好的軟件優(yōu)化??傊?,在低帶寬環(huán)境下,此拼接預(yù)覽方案對于保證客戶端多畫面預(yù)覽的實(shí)時性是有效的,具備實(shí)用價(jià)值。
[1]西剎子.安防天下-智能網(wǎng)絡(luò)視頻監(jiān)控技術(shù)詳解與實(shí)踐[M].北京:清華大學(xué),2010.
[2]徐飛明.基于ONVIF協(xié)議的NVR軟件平臺的設(shè)計(jì)與開發(fā)[D].浙江大學(xué),2012.
[3]鄭靈翔.嵌入式Linux系統(tǒng)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2008.
[4]劉崢嶸.嵌入式Linux應(yīng)用開發(fā)詳解[M].北京:機(jī)械工業(yè)出版社,2004.
[5]趙俊生.嵌入式Linux系統(tǒng)圖形界面顯示方法的實(shí)現(xiàn)[J].工業(yè)儀表與自動化裝置,2014(2):53-55.ZHAO Jun-sheng.Implementation of embedded Linux system graphical interface display method[J].Industrial Instrumentation&Automation,2014(2):53-55.
[6]高凱武,任傳勝.基于嵌入式Linux網(wǎng)頁服務(wù)器的大壩安全監(jiān)測數(shù)據(jù)采集[J].工業(yè)儀表與自動化裝置,2013(6):95-98.GAO Kai-wu,REN CHUAN-sheng.Dam safety monitoring data collected based on embedded Linux web server[J].Industrial Instrumentation&Automation,2013(6):95-98.
[7]高洋.基于海思Hi3510芯片的音視頻服務(wù)器軟件設(shè)計(jì)與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2012.
[8]Gary J.Sullivan,Pankaj N.Topiwala,Ajay Luthra,The H.264/AVC advanced video coding Standard:Overview and Introduction to the Fidelity Range Extensions[S].2003.
Design and implementation of NVR stitching preview project based on Hisilicon platform
LIU Hao1,HE Yan2
(1.Wuhan Research Institute of Post and Telecommunications,Wuhan 430074,China;2.Fiberhome Telecommunication Technologies Co.,Ltd.,Wuhan 430074,China)
With the continuous improvement of the digital and the networking,and the rapid development of security industry.As the representative of a new generation of video monitoring products,NVR has gradually replaced the status of the DVR.However,with the continuous improvement of the quantity and quality of front-end IPC devices accessed by NVR,in order to meet real-time for Multi-channel previews on client in the networks with low bandwidth,it has an important value.This document was based on hi3535 platform,it put forward and designed a solution of video stitching preview,Stitched and coded the multi-route flows which need transferred over the network into one route flows for the client.Through the verification testing,this project successfully stitched and coded sixteen D1 streams into a D1 stream,and displayed on the client.It effectively reduces the network bandwidth that need by Multi-channel previewing on client,ensures the real-time for client preview in low bandwidth environment.
NVR;video stitching;real-time preview in low bandwidth;hisilicon platform
TN915
A
1674-6236(2015)10-0039-04
2014-09-15 稿件編號:201409125
劉 浩(1989—),男,湖北孝感人,碩士,軟件研發(fā)工程師。研究方向:通信與信息系統(tǒng)。