孫克輝,喻 煒
(中南大學(xué) 物理與電子學(xué)院,湖南 長沙410083)
可視對講系統(tǒng)作為小區(qū)智能化系統(tǒng)的重要子系統(tǒng),已經(jīng)越來越普遍地應(yīng)用于現(xiàn)代商品住宅小區(qū)中,正朝著數(shù)字化、智能化和網(wǎng)絡(luò)化方向發(fā)展。最初的模擬可視對講系統(tǒng),通過同軸電纜傳輸音頻、視頻信號[1],通過單片機總線傳輸控制信號,但是模擬方式難以解決信號損耗、電磁干擾以及接地干擾等難題[2],而數(shù)字可視對講系統(tǒng)可將音視頻及所有控制信號均通過網(wǎng)線數(shù)字化傳輸。目前數(shù)字對講系統(tǒng)大多采用ARM[3,4]核芯片或者ARM+DSP結(jié)構(gòu)作為控制器,但是這種模式集成度不夠高,需要開發(fā)大量視頻壓縮編碼軟件,開發(fā)成本高,周期長。與此同時,目前大多數(shù)對講系統(tǒng)的室內(nèi)機采用的是墻壁式座機,形式上較傳統(tǒng),并且使用不夠方便。本文設(shè)計的對講系統(tǒng)采用基于ASIC架構(gòu)的SOC系統(tǒng)集成芯片的設(shè)計思路,克服了傳統(tǒng)結(jié)構(gòu)的不足,采用分層和模塊化的結(jié)構(gòu)設(shè)計,應(yīng)用臺灣智源公司的GM8126作為門口機主控芯片[5],實現(xiàn)基于TCP/IP協(xié)議的數(shù)字可視對講系統(tǒng)。采用 G.711[6]A 率標(biāo)準(zhǔn)和 H.264[7]格式分別對音、視頻數(shù)據(jù)進行編解碼。室內(nèi)機采用Android智能手機,節(jié)約了硬件成本,方便使用,利用基于802.11g的無線局域網(wǎng)實現(xiàn)數(shù)據(jù)接收與發(fā)送。
可視對講系統(tǒng)總體方案設(shè)計如圖1所示,由門口機、室內(nèi)機、管理機和中間連接作用的交換機和路由器組成,此系統(tǒng)基于TCP/IP協(xié)議在局域網(wǎng)內(nèi)進行所有數(shù)據(jù)傳輸。門口機主要完成對音、視頻數(shù)據(jù)的處理,主要包括以下幾點:①控制采樣速率。②控制圖像傳感器。③采集視頻數(shù)據(jù)并進行H.264壓縮處理。④采集音頻數(shù)據(jù)并根據(jù)G.711 A率壓縮標(biāo)準(zhǔn)對音頻數(shù)據(jù)進行壓縮編碼。⑤對音、視頻數(shù)據(jù)進行傳輸。⑥解壓接收到的音頻數(shù)據(jù)并播放。⑦與單片機通信。室內(nèi)機則主要完成接收音、視頻數(shù)據(jù)并解碼播放;采集音頻數(shù)據(jù)并進行G.711A率壓縮,再將其傳輸給門口機;發(fā)送命令給門口機等功能。管理機主要實現(xiàn)對住戶小區(qū)的信息管理,可以對小區(qū)樓棟的門口機進行管理,具有最高的管理權(quán)限;可以接受住戶、訪客的報警;可實現(xiàn)與住戶的視頻對講。
圖1 可視對講系統(tǒng)框架
臺灣智源科技生產(chǎn)的GM8126被作為門口機主控芯片,是智源科技推出的新一代最高整合度之HD H.264SOC監(jiān)控攝像機IP CAM單芯片,它支持H.264基本檔次、MPEG4和JPEG的硬件編碼,同時集成了圖像處理功能,如ISP(image sensor processor)、去噪聲等功能,內(nèi)置了音頻 AD/DA轉(zhuǎn)換模塊。除此之外,它擁有先進的高整合與低功耗電源管理技術(shù),高性能FA626TE內(nèi)核,主頻高達533MHz,能輕松實現(xiàn)各種智能算法,集成10/100M以太網(wǎng)網(wǎng)絡(luò)模塊,最大處理速度可達45fps@720P,30fps@1080P。
門口機硬件設(shè)計分為4個模塊:音視頻模塊、最小系統(tǒng)模塊、接口模塊和單片機模塊,其硬件結(jié)構(gòu)如圖2所示。
圖2 門口機硬件框架
音、視頻模塊采用1080P高分辨率CMOS圖像傳感器OV2715采集視頻數(shù)據(jù)。其包含了先進的圖像處理功能,如曝光控制、增益控制和白平衡等,最大圖像傳輸速率30fps@1080P,60fps@720P,120fps@VGA。采用駐極體話筒采集音頻信號,設(shè)計LM4895音頻功率放大器驅(qū)動8Ω/0.5W揚聲器,使得播放效果清晰。最小系統(tǒng)模塊包括5V電源及DC-DC轉(zhuǎn)換芯片,提供不同電壓給芯片。8M FLASH用于存儲二進制文件,128MDDR2為內(nèi)存。接口模塊中的RJ45接口為網(wǎng)絡(luò)接口,USB接口用于下載二進制文件到FLASH中,串口0用于系統(tǒng)調(diào)試和打印,而串口1用于與ATMEGA128單片機通信。對于單片機模塊,由于GM8126的I/O口有限,所以設(shè)計ATMEGA128單片機控制3×4按鍵及12864液晶顯示屏,用于訪客輸入房間號等控制信息及信息的更新顯示,再通過串口與GM8126通信傳輸控制信息。
門口機采用智源公司官方提供的arm-Linux-2.6.28系統(tǒng),并且安裝好OV2715圖像傳感器驅(qū)動fisp_ov2715.ko及 圖 像 處 理 驅(qū) 動 videograph.ko、dvr_enc.ko等, 而GM8126內(nèi)置了音頻AD/DA轉(zhuǎn)換器ADDA300,但是同樣需要加載驅(qū)動snd_fi2s_adda300_c0.ko。所以采用多線程編程技術(shù)處理多任務(wù),這里設(shè)計了4個線程,分別是:
(1)enq_thread:采集與壓縮編碼線程。視頻采集與編碼流程如圖3所示,其中通過ioctl調(diào)用SDK中DVR_ENC_SET_CHANNEL_PARAM命令設(shè)置通道參數(shù),設(shè)置的通道參數(shù)包括視頻分辨率為1920×1080(1080p),幀率為30fps,I/P幀間隔為30幀,色彩格式Y(jié)∶U∶V=4∶2∶2,編碼格式為H.264。鑒于大多數(shù)Android智能手機分辨率不能達到1080P,且1080P的視頻數(shù)據(jù)量太大,對帶寬要求高,因此啟用GM8126的Scaler功能將視頻裁剪為320×240的分辨率。GM8126的Scaler功能需要將main-bitstream作為其數(shù)據(jù)源,裁剪之后再進行H.264編碼并將編碼后的數(shù)據(jù)作為sub-bitstream,為實現(xiàn)Scaler功能需要設(shè)置部分內(nèi)存參數(shù)如下:
圖3 視頻采集與編碼流程
再通過ioctl函數(shù)調(diào)用DVR_ENC_CONTROL設(shè)置ENC_START開始對視頻數(shù)據(jù)H.264硬件編碼。
音頻的采集與編碼則相對簡單些,GM8126有2個音頻輸入源:LINE IN和 MIC IN,設(shè)置proc文件系統(tǒng)中asound/adda300_input_mode為0,將 MIC IN作為音頻輸入源,從駐極話筒中采集音頻。音頻采集控制流程類似于視頻采集控制流程,主要設(shè)置采樣率為8000Hz,16bit編碼及單聲道通道。但是GM8126并沒有提供對音頻數(shù)據(jù)的硬件壓縮,因此,本文采用G.711標(biāo)準(zhǔn)中的A率對音頻PCM數(shù)據(jù)進行軟件壓縮編碼。采用的A率壓縮算法為
式中:A——壓縮參數(shù),x——語音信號。采用廣泛使用的13折線 (A=87.6)近似。
(2)rtspd_thread:RTSP (real time streaming proto-col)[8]實時傳輸線程。本文采用RTSP協(xié)議實時傳輸門口機音、視頻,RTSP的實現(xiàn)采用的是移植Live555多媒體流化源碼庫。Live555是目前實現(xiàn)RTSP協(xié)議最短小精悍的開源代碼,能很方便的移植到各種嵌入式系統(tǒng)中。Live555源程序?qū)崿F(xiàn)的是音視頻的點播,在服務(wù)器端需要從相應(yīng)音、視頻文件中讀取信息再進行打包傳輸,而可視對講系統(tǒng)需要音視頻的實時播放,因此需要對Live555源程序做適當(dāng)修改。鑒于GM8126采集的音視頻數(shù)據(jù)都在內(nèi)存中,因此關(guān)鍵是將Live555源程序中從文件讀取改為從內(nèi)存中直接映射至Live555緩存中。
RTSP是一個應(yīng)用層協(xié)議,位于RTP/RTCP(realtime transport protocol/realtime transport control protocol)和RSVP (resource reservation protocol)之上,用來與 RTP、RSVP等底層協(xié)議提供Internet上的整套流式媒體數(shù)據(jù)的傳輸服務(wù)[9]。協(xié)議中請求的命令主要有DESCRIBE、OPTION、PAUSE、PLAY、RECORD、SETUP、TEARDOWN等[10],其連接過程主要分5步驟,如圖4所示。此系統(tǒng)將門口機作為RTSP服務(wù)器端,將室內(nèi)機作為RTSP客戶端??蛻舳撕头?wù)器端在用RTSP命令通信時需要用SDP協(xié)議描述多媒體會話的必要信息,SDP包括以下一些方面:①會話的名稱和目的。②會話存活時間。③包含在會話中的媒體信息,包括:媒體類型、傳輸協(xié)議、媒體格式、多播或遠端 (單播)地址和端口。④使用的帶寬信息。⑤可信賴的接洽信息等。
圖4 RTSP連接過程
(3)recv_thread:接收音頻數(shù)據(jù)線程。對講系統(tǒng)是雙向通話,所以需要接收室內(nèi)機 (Android智能手機)發(fā)送過來的音頻數(shù)據(jù),再將每一幀音頻數(shù)據(jù)通過fwrite函數(shù)寫入到GM8126AD/DA 音頻設(shè)備 “/dev/dsp2”中,實現(xiàn) DA轉(zhuǎn)換后,再輸出到LM4895功率放大器驅(qū)動揚聲器發(fā)聲,實現(xiàn)音頻的播放。
(4)avr_thread:與ATMEGA128單片機串口通信線程。利用GM8126串口1 (“/dev/ttyS1”)與ATMEGA128單片機通信,Linux串口參數(shù)需要設(shè)置結(jié)構(gòu)體struct termios,在此結(jié)構(gòu)中最重要的成員是c_cflag,通過對它的賦值,可設(shè)置波特率、字符大小、數(shù)據(jù)位、停止位、奇偶校驗位等參數(shù)。讀取串口數(shù)據(jù)時需用到read系統(tǒng)調(diào)用,而此函數(shù)會阻塞等待讀取數(shù)據(jù),不利于程序設(shè)計,因此采用select系統(tǒng)調(diào)用檢測I/O設(shè)備,待有數(shù)據(jù)到來時再讀取。本文設(shè)計的可視對講基于IP網(wǎng)絡(luò),因此需要獲取IP地址,而IP地址預(yù)先設(shè)定好與房間號對應(yīng)。所以此線程主要功能為:①接收單片機發(fā)送過來的房間號。②再根據(jù)房間號查找到對應(yīng)的IP地址。③接收室內(nèi)機發(fā)送過來的命令,并發(fā)送給單片機處理,例如 “開鎖”命令。
使用的 Android系統(tǒng)是 Android4.1.2 (MIUI-3.6.21)。為了使室內(nèi)機能實時接收到門口機發(fā)送過來的連接請求,此軟件利用android.app.Service類設(shè)計為Android服務(wù)程序,使得此服務(wù)能長時間在后臺運行,不需要向用戶展示用戶界面,時刻監(jiān)聽著門口機發(fā)送的連接請求。監(jiān)聽到門口機的連接請求之后,啟動鈴聲通知戶主開啟主界面,并啟動設(shè)計的3個線程:Play線程、SendAudio線程、Command線程。
Play線程負(fù)責(zé)和門口機RTSP服務(wù)器端建立RTSP連接,再接收音、視頻數(shù)據(jù),并解碼播放,流程如圖5所示。Android系統(tǒng)自帶了媒體播放器MediaPlayer,MediaPlayer在底層是基于OpenCore(PacketVideo)的庫實現(xiàn)的。但是MediaPlayer支持的媒體格式只局限于OpenCore中所支持的媒體格式 (3GP,MP4),而Android平臺并不能對H.264格式視頻解碼,因此移植FFmpeg-1.2解碼庫中H.264解碼算法[11]。FFmpeg是一個開源、自由的音、視頻流解決方案,支持絕大多數(shù)音、視頻編解碼標(biāo)準(zhǔn)。所以提取了FFmpeg-1.2中解碼H.264的幾個重要文件,例如:
H264.c:實現(xiàn)H.264解碼的核心算法代碼;
Golomb.c:此文件為哥倫布編碼的實現(xiàn);
Cabac.c:實現(xiàn)自適應(yīng)算術(shù)二進制編碼,H.264采用自適應(yīng)算術(shù)二進制編碼作為一種熵編碼方式。
并對其中的數(shù)據(jù)結(jié)構(gòu)和函數(shù)做了適當(dāng)?shù)男薷?,編譯成庫文件 (Android_H264.so)后利用JNI接口調(diào)用InitDecoder()函數(shù)初始化解碼器、調(diào)用DecoderNal()函數(shù)對接收到的一幀H.264視頻數(shù)據(jù)進行解碼、調(diào)用UninitDecoder()釋放使用的資源。
在Android中能夠?qū)崿F(xiàn)音頻功能的接口類有很多[12],本系統(tǒng)的室內(nèi)機將接收到的音頻數(shù)據(jù)經(jīng)G.711A率解碼后則使用Android SDK中直接為PCM數(shù)據(jù)提供支持的接口類—AudioTrack類—播放。
圖5 Play線程設(shè)計流程
SendAudio線程負(fù)責(zé)采集住戶音頻數(shù)據(jù)并發(fā)送給門口機。在Android SDK中提供了音頻采集AudioRecord類,調(diào)用構(gòu)造函數(shù)初始化音頻源為 MediaRecorder.Audio-Source.MIC,采樣頻率為8000Hz,AudioFormat.ENCODING_PCM_16BIT編碼,聲道為CHANNEL_CONFIGURATION_MONO等參數(shù),采集到的音頻數(shù)據(jù)讀取到緩存中,再對這些原始數(shù)據(jù)進行G.711A率編碼,以壓縮數(shù)據(jù)量便于數(shù)據(jù)的網(wǎng)絡(luò)傳輸。
Command線程主要負(fù)責(zé)發(fā)送命令給門口機。鑒于命令數(shù)據(jù)的數(shù)據(jù)量較小,且為使得命令數(shù)據(jù)的可靠傳輸,故使用TCP協(xié)議進行與門口機的通信。
測試時設(shè)置的圖像分辨率為320×240,這適合大多數(shù)智能手機的屏幕分辨率。經(jīng)GM8126H.264硬件編碼后的I幀平均大小為15984.2bytes,P幀平均大小為4190.5 bytes,平均圖像壓縮率為5.50%,音頻數(shù)據(jù)經(jīng)G.711標(biāo)準(zhǔn)壓縮后為原數(shù)據(jù)量的一半。建立連接后Android手機播放音視頻的延時大約為0.6s。傳輸圖像如圖6所示。結(jié)果顯示圖像較清晰,語言效果良好。
圖6 視頻測試效果
本文討論了基于高集成度SOC芯片—GM8126的數(shù)字可視對講系統(tǒng)的設(shè)計方法和具體實現(xiàn)流程,該系統(tǒng)以流行的Android智能手機作為室內(nèi)機,使得開發(fā)成本降低、開發(fā)周期縮短、使用更靈活,克服了模擬系統(tǒng)的固有缺點及傳統(tǒng)數(shù)字系統(tǒng)結(jié)構(gòu)復(fù)雜的不足。實驗測試結(jié)果表明,該方案可行性,音視頻質(zhì)量好,為可視對講系統(tǒng)設(shè)計提供了一種新解決方案,具有廣闊的市場前景。下一步將完善對講功能,進一步提高穩(wěn)定性和兼容性。
[1]Lai C,Huang H,Huang Y,et al.Design and implementation of the DLNA family intercom system for smart homes [J].Computer Journal,2009,52 (8):960-968.
[2]SHI Baosong,SUN Shouhong,ZHANG Wei.Realization of digital audio transmission for intercom system [J].Journal of Changchun University of Science and Technology (Natural Science Edition),2012,35 (1):90-92 (in Chinese). [石寶松,孫守紅,張偉.對講系統(tǒng)中音頻信號數(shù)字化傳輸?shù)膶崿F(xiàn) [J].長春理工大學(xué)學(xué)報 (自然科學(xué)版),2012,35 (1):90-92.]
[3]YU Yaoliang,HE Jiaming,LIU Guojian.The design of visual wireless door bell system based on embedded [J].Journal of Hangzhou Dianzi University,2008,28 (5):69-71 (in Chinese).[俞堯亮,何加銘,劉國建.嵌入式無線可視對講系統(tǒng)研究 [J].杭州電子科技大學(xué)學(xué)報,2008,28 (5):69-71.]
[4]QI Ping,DONG Haifeng.Design and research of multiple video interphone based on Qt [J].Instrument Technique and Sensor,2011 (5):20-23 (in Chinese). [戚平,董海峰.基于Qt的多人可視對講系統(tǒng)的設(shè)計與研究 [J].儀表技術(shù)與傳感器,2011 (5):20-23.]
[5]Grain Media.GM8126datasheet [EB/OL]. [2011-05-03/2013-07-10].www.grain-media.com.
[6]Peri c'Z,Nikoli c'J.An adaptive waveform coding algorithm and its application in speech coding [J].Digital Signal Processing,2012,22 (1):199-209.
[7]Min D,Yueping Z,Loguinov D.A unified traffic model for MPEG-4and H.264video traces [J].IEEE Transactions on Multimedia,2009,11 (5):1010-1023.
[8]Akhlaq M,Sheltami T R.RTSP:An accurate and energy-efficient protocol for clock synchronization in WSNs [J].IEEE Transactions on Instrumentation and Measurement,2013,62(3):578-589.
[9]WANG Xiaoyan.Design and implementation of a highly active streaming media server [J].Computer Engineering &Science,2010,31 (2):118-120 (in Chinese). [王小燕.一種高效點播流媒體服務(wù)器的設(shè)計與實現(xiàn) [J].計算機工程與科學(xué),2010,31 (2):118-120.]
[10]MAO Yanfei,HUANG Zhongdong.Research and design of web DVR system based on real-time streaming protocol [J].Computer Engineering and Design,2011,32 (7):2523-2526(in Chinese).[茅炎菲,黃忠東.基于RTSP協(xié)議網(wǎng)絡(luò)監(jiān)控系統(tǒng)的研究與實現(xiàn) [J].計算機工程與設(shè)計,2011,32(7):2523-2526.]
[11]JING Hongliang.H.264/AVC video decoder design and implement based on Android [D].Harbin:Harbin Institute of Technology,2010 (in Chinese). [井洪亮.基于 Android的H.264/AVC解碼器的設(shè)計與實現(xiàn) [D].哈爾濱:哈爾濱工業(yè)大學(xué),2010.]
[12]Reto M.Professional Android 4application development [M].3th ed.SHE Jianwei,transl.Beijing:Tsinghua University Press,2013 (in Chinese).[Reto M.Android 4高級編程 [M].3版.佘建偉,譯.北京:清華大學(xué)出版社,2013.]