



摘要:在打擊違法犯罪、維護社會公共安全、促進社會和諧穩定方面,視頻監控系統起到了至關重要的作用。因此,設計了一種基于Linux平臺的無線網絡視頻監控系統。系統采用V4L2架構對攝像頭進行圖像采集,移植x264編碼器對采集的圖像進行編碼壓縮,使用Live555框架對編碼數據進行流化處理,最后通過RTSP實時流傳輸協議將視頻流發送出去。監控端需要安裝特定的軟件,用來接收和解碼視頻流,這樣就可以監測攝像頭采集的圖像。整個系統實現了無線網絡視頻監控的基本功能。
關鍵詞:無線網絡視頻監控;V4L2;x264;Live555
一、前言
隨著人們生活質量的不斷提高,人身和財產安全變成了大眾關注的焦點。視頻監控系統也隨之出現在人們能接觸到的方方面面,比如出現在十字街口,為了確保交通安全;出現在學校,為了防止校園霸凌;出現在居民社區,為了維護社會公共安全[1]。因此,視頻監控系統在促進社會和諧穩定和打擊違法犯罪等方面發揮著不可替代的保障作用,它的地位也越來越重要,人們對它的需求也越來越高。針對這個趨勢,本文設計了一種基于Linux平臺的無線網絡視頻監控系統。系統采用V4L2架構對攝像頭進行圖像采集,移植x264編碼器對采集的圖像進行編碼壓縮,使用Live555框架對編碼數據進行流化處理,最后通過RTSP實時流傳輸協議將視頻流發送出去。監控端需要安裝特定的軟件,用來接收和解碼視頻流,這樣就可以監測攝像頭采集的圖像。基本實現了無線網絡視頻監控的功能。
二、系統總體設計方案
系統總體設計方案包括無線網絡視頻監控系統的硬件設計和無線網絡視頻監控系統的軟件設計,如圖1。
對于硬件部分:主控芯片是系統的核心,控制著各個電路模塊的正常運轉。所以,主控芯片的選擇決定著系統的性能指標。本文采用北京君正公司的X1000型號芯片,它的工作主頻相對較高,功耗相對較低,同時還擁有豐富的總線接口,比較適合系統的使用。首先搭建以主控芯片為主,電源、時鐘、復位和調試等基本電路模塊為輔的最小系統。最小系統的成功建立可以確保硬件平臺運行的穩定。然后根據系統的需要,添加攝像頭電路,負責圖像采集功能。
對于軟件部分:本文采用Linux系統軟件開發平臺。它的可移植性和擴展性都相對較好,如果后續有硬件電路的更新,軟件修改的代碼量相對較小。電腦端需要安裝Linux操作系統,提供交叉編譯環境。硬件開發板采用u-boot-2016.09(系統引導加載程序)和kernel-4.4.93(系統內核框架)的代碼版本。將u-boot和kernel的代碼,根據主控芯片的性能指標進行移植和裁剪。經過充分的調試,確保硬件開發板可以穩定的運行。圖像采集端使用V4L2架構,負責采集攝像頭的圖像數據。圖像數據首先被送到x264編碼器進行編碼壓縮,然后被送到Live555模塊進行流化處理,最后經過RTSP實時流傳輸協議,通過WIFI模塊將視頻流發送出去,完成系統中數據流從采集、處理到發送的全過程。監控端通過安裝內置RTSP協議的軟件,就可以監測攝像頭采集到的圖像。
三、硬件設計
(一)主控芯片
本文主控芯片采用北京君正公司的X1000型號處理器。它的工作主頻在1GHz,可以使軟件模塊將視頻數據處理得相對較快,為視頻實時傳輸提供硬件基礎;它內置有低功耗內存,避免內存電路的設計,可以極大縮短系統的研發時間和成本;它的功耗小于200mW,通過電源電路的設計,可以實現用鋰電池供電,拓展了使用范圍;它還具有豐富的總線接口,可以擴展攝像頭電路、Wi-Fi電路和存儲等其他電路。
(二)攝像頭電路
本文攝像頭采用Omni Vision公司的OV9712模組,如圖2。它是1/4英寸CMOS圖像傳感器,分辨率是1280×800,每秒鐘可以采集30幀圖像,有曝光控制、白平衡和缺陷像素消除等功能[2]。它的性能指標比較適合在無線網絡視頻監控系統中使用。
按圖2電路圖連接好。根據上電時序,依次將VDD_IO(I/O電源),VDD_A(模擬電源),VDD_D(數字電源)和PWDN(電源開關)給電,軟件通過SIOC和SIOD(i2c總線接口)設置采集圖像的分辨率,對比度和白平衡等相關參數,同時給輸入時鐘MCLK合適的工作頻率,測量輸出時鐘PCLK,行時鐘同步信號HREF和幀時鐘同步信號VSYNC波形是否正確。最后,用V4L2模塊將D0-D7的8位圖像數據讀取,并且保存成文件,通過專門顯示原始圖像的軟件打開,驗證是否是攝像頭拍攝的圖像,同時作為系統的原始數據。
(三)WIFI電路
本文Wi-Fi采用正點原子公司的ATK-MW8266D模塊,如圖3。它的傳輸速率是54Mbps,為視頻實時傳輸提供硬件基礎。
按圖3電路圖,將電源VDD,地GND,重啟RST,數據接收RXD和數據發送TXD與主控芯片連接好。通過電源電路給VDD提供3.3V電壓,WIFI模塊就可以正常工作。產商將WIFI相關操作封裝成AT命令,方便使用。只需要根據AT文檔提供的相關指令,就可以實現WIFI模塊的基本功能,比如配置網絡參數,收發數據等。配置成功后,可以在監控端安裝網絡封包分析軟件Wireshark,驗證來自圖像采集端發送數據的正確性。為視頻數據的正確傳輸,提供硬件基礎。
(四)存儲電路
本文存儲芯片采用Giga Device公司的GD25LQ128C型號芯片,它是SPI串行總線接口的閃存芯片,如圖4。它的引腳數相對較少,僅有8個,簡化了電路的設計;芯片尺寸相對較小,減少了存儲電路的面積,在一定程度上,節約了研發成本。芯片支持四線的QPI收發模式,傳輸速率在240Mbit/s,為視頻實時傳輸提供硬件基礎。
將存儲芯片與主控芯片按圖4電路圖連接好。通過電源電路給VDD提供1.8V電壓,時鐘電路給CLK提供合適的工作時鐘,以及CS片選信號配置好,存儲芯片就可以正常工作。通過使用標準的數據讀寫和擦除指令,就可以在輸入和輸出接口引腳,進行數據的傳輸。利用存儲芯片的燒寫器將芯片里的數據讀取出來,和軟件編程寫入的數據進行對比,驗證軟件對存儲芯片數據讀寫的正確性。為視頻數據的正確存儲,提供硬件基礎。
四、軟件設計
(一)V4L2模塊
V4L2(Video for linux2)作為無線網絡視頻監控系統中的視頻采集驅動程序框架。根據攝像頭的工作原理,實現V4L2提供的底層結構體接口v4l2_subdev, videobuf2和video_device等[3]。讀取攝像頭圖像數據時,可以使用V4L2應用層接口,簡要操作流程如下:
1.通過系統I/O函數open,打開攝像頭設備節點。
2.通過結構體v4l2_pix_format,設置采集圖像數據存儲類型和采集圖像分辨率等參數。
3.通過ioctl函數中VIDIOC_STREAMON參數,開啟攝像頭的圖像采集。
4.通過結構體v4l2_requestbuffers,來對采集圖像數據進行讀取。ioctl函數中VIDIOC_QBUF參數可以從采集圖像數據的隊列中取出buf,進行圖像的后續操作;ioctl函數中VIDIOC_DQBUF參數可以將讀取后的buf,重新放回采集圖像數據的隊列中。循環往復,可以得到攝像頭連續的圖像數據,供后續模塊使用。
5.通過ioctl函數中VIDIOC_STREAMOFF參數,停止攝像頭的圖像采集。
6.通過系統I/O函數close,關閉攝像頭設備節點。
(二)x264模塊
如果直接將攝像頭采集的圖像數據進行傳輸,圖片相對較大,對傳輸帶寬要求很苛刻。但是,如果提前將圖像數據進行編碼壓縮,傳輸的數據就會相對較小。所以,引入x264,它是一個開源的H.264/MPEG-4 AVC視頻編碼函數庫,編碼速度相對較快,視頻數據的壓縮比也相對較高[4]。即使在網絡帶寬很差的情況下,依然可以正常傳輸圖像數據。簡要操作流程如下。
1.通過x264_param_default函數,給編碼器的參數設置初值。
2.通過x264_param_parse()函數,解析自定義配置的命令行編碼器的相關參數。
3.通過x264_encoder_open函數,開啟編碼器,將編碼器的初值,寫入編碼器。
4.通過x264_encoder_encode函數,將V4L2采集的圖像數據,經過數據存儲類型轉換,送到編碼器處理。編碼器可以輸出每幀編碼后的數據,供后續模塊繼續處理。
5.通過x264_encoder_close函數,關閉編碼器,并且打印相關統計信息。
(三)Live555模塊
Live555的源代碼架構設計簡潔,支持多種視頻編碼格式的流化、接收和處理[5]。簡要操作流程如下:
初始時,首先創建socket,綁定本地IP地址,將網絡端口設置為8554,監聽連接請求事件。一旦播放端有socket連接請求時,第一時間響應并且創建RTSP連接,并且將實例化的句柄加入哈希表中,供后續操作繼續使用。Live555流媒體服務器將x264編碼后的視頻數據進行流化處理,根據RTP協議把視頻編碼數據打包成RTP包,自適應調節模塊來完成對視頻數據發送速率的動態調節。當收到播放端發送的DESCRIBE請求時,就會獲取到對應的流媒體信息描述發送給播放端;當收到播放端發送的SETUP請求時,就會建立新的數據Sink;當收到播放端發送的PLAY請求時,使用Sink獲得RTP包。Sink不斷地向Source請求視頻數據,Source取得視頻數據后就調用回調函數,把視頻數據給Sink處理,Sink就將視頻數據源源不斷的發送給播放端。
五、結語
本文闡述了一種基于Linux平臺的無線網絡視頻監控系統的設計方法。詳細地介紹了系統的設計:首先是硬件設計部分,分別從各個芯片的選型,到硬件電路的搭建和調試,確保硬件平臺可以穩定的運行;然后是軟件設計部分,視頻數據是V4L2架構采集攝像頭的圖像數據,先被送到x264編碼器進行編碼壓縮,接著被送到Live555框架進行流化處理,最后通過RTSP實時流傳輸協議發送出去。監控端需要安裝VLC視頻播放軟件,就可以監測攝像頭采集的圖像。本系統采用Linux開發平臺,它的可移植性和擴展性都相對較好。
參考文獻
[1]王英吉,周鳳新.基于社區警務的公安視頻監控系統建設研究[J].遼寧警察學院學報,2022,24(02):68-71.
[2]張寶龍,李丹,王靖云,等.基于OV9712的串行器解串器視頻編碼方案[J].液晶與顯示,2015,30(06):965-971.
[3]陳二微.基于Linux V4L2子系統的ISP及Camera驅動接口標準化方法及應用[J].計算機與網絡,2021,47(12):26-27.
[4]王哲誠,葛萬成,吳曄.x264視頻編碼器中參數設置對編碼效率影響的研究[J].信息通信,2018(02):40-42.