999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Linux及OK6410環境下視頻監控系統設計與實現

2019-06-06 04:21:26張海嬌孫文勝
軟件導刊 2019年3期

張海嬌 孫文勝

摘 要:隨著城市建設數字化、智慧化、管理遠程化、生產異地化,安防和智能管理技術擁有越來越廣闊的發展前景。針對監控產品技術升級需求,提出了一種以OK6410嵌入式ARM開發板為硬件平臺,以Linux-3.6.0為軟件平臺的視頻監控系統。描述了整個系統架構以及系統軟硬件設計,重點介紹了V4L2視頻框架設計以及CMOS攝像頭實現圖像捕捉的過程,并創新設計了循環鏈表緩沖池,明顯緩解了輸入輸出同步問題,提高了程序健壯性。實際應用表明,該系統能較好地為多個用戶同時提供實時視頻服務,具有較高的穩定性和可擴展性,并擁有日志記錄功能。

關鍵詞:視頻監控系統;Linux;OK6410;V4L2;緩沖池

DOI:10. 11907/rjdk. 182098

中圖分類號:TP319文獻標識碼:A文章編號:1672-7800(2019)003-0121-05

0 引言

隨著科技的不斷發展和人們安防意識的提升,網絡視頻監控系統得到了廣泛應用 [1]。網絡視頻監控系統主要經歷了3個發展階段:第一階段為已經退出歷史舞臺的模擬監控系統[2];第二階段為目前小范圍使用的PC機插卡式監控系統[3];第三階段為當今普遍使用的嵌入式視頻監控系統[4]。

目前,網絡視頻監控系統逐步向移動化和全數字化演進[5],移動視頻監控[6]、基于IPV的視頻監控[7]、滿足數字化家庭需求的視頻監控[8]均以嵌入式技術為依托。隨著嵌入式處理器性能的不斷提高,嵌入式視頻監控系統應用越來越廣泛。

為在嵌入式芯片上進行多種方式擴展,本系統選用資源容量和圖像處理能力較為強大的OK6410開發板作為硬件平臺,利用嵌入式Linux操作系統內核搭建軟件平臺,為多個用戶同時提供實時視頻服務。系統在V4L2視頻框架[9]中新定義了攝像頭捕捉結構體,創新設計了V412框架操作,實現用戶查看監控視頻中重要畫面的抓圖功能;同時創新設計了適用于本系統的循環鏈表緩沖池,以及采用適當的線程同步機制對緩沖池進行讀寫操作,使系統可以明確分離輸入輸出設備,增強程序健壯性,提高系統模塊化水平;充分利用OK6410的開發資源,加入日志記錄功能,實現系統的調試控制,保障運行穩定性,為日后系統升級擴展提供支持。

1 系統總體設計

本系統采用C/S(客戶/服務)架構[10],通過個人PC上通用的http服務,用戶不需要安裝客戶端即可在網頁上獲取監控服務[11]。以因特網作為通信平臺,傳輸html文件表單和視頻流數據,結合相關傳感和嵌入式技術,有效獲取實時視頻數據,同時利用高效穩定的Linux操作系統內核管理硬件平臺,使系統擁有強大功能。

系統有前端采集、視頻處理、網絡服務 [12] 3大子系統,通過前端采集系統將CMOS攝像頭[13]采集的視頻數據導入視頻處理系統,經過處理的視頻數據更適合存儲和傳輸。當有客戶登錄服務器時,被處理的視頻數據導入網絡服務系統,客戶即可通過網頁查看實時監控視頻。

1.1 系統硬件設計

本監控系統采用基于三星S3C6410處理器ARM 11的飛凌公司OK6410開發板,此開發板具有更高的主頻和豐富的外設,提供LCD 接口、Camera 輸入接口、4路串口、SDIO接口、100M 網卡、USB2.0-OTG接口、USB Host 接口、音頻輸入輸出接口、按鍵接口等硬件資源[14],適用于對性能和處理能力有更高要求的嵌入式系統應用場合。系統主控機硬件由電源模塊、按鍵設備模塊、串口設備模塊、網絡設備模塊、數據存儲單元模塊和視頻監控模塊組成,硬件設計如圖1所示。

1.2 系統軟件設計

系統軟件平臺采用功能強大、穩定安全的Linux操作系統,使用的Linux內核版本為3.6.0。前期在OK6410開發板上完成Linux操作系統的移植、U-BOOT移植、文件系統制作與移植以及交叉編譯環境的搭建[15]。系統軟件設計要滿足以下幾個功能:①通過軟件編程,控制CMOS攝像頭傳感器,實現視頻數據的采集;②完成文件系統搭建以及FLASH和 SD卡存儲設備驅動,使所采集視頻信息可以保存到本地存儲設備;③完成基于Linux的TCP并發服務器搭建[16];④在軟件編程上考慮使用對應的硬件視頻編解碼控制器驅動軟件代碼,通過S3C6410的H.264硬件編碼器[17]和PP硬件多媒體轉換器[18],完成視頻硬件H.264編碼和縮放轉碼功能;⑤因為系統需要使用按鍵作為系統功能控制輸入設備,所以在軟件設計上需要加上對應按鍵驅動。系統軟件功能結構設計如圖2所示。

2 系統功能模塊設計

2.1 V4L2視頻框架設計

V4L2視頻框架只能在Linux操作系統上運行,是針對uvc免驅USB設備的編程框架,主要用于設置攝像頭的頻率、幀率、視頻壓縮格式等圖像參數,完成對USB攝像頭設備圖像數據的采集,在APP編程中主要使用該框架提供的API和驅動命令工作。該框架的工作模式如圖3所示。

針對v4l2_camera.h新定義了描述攝像頭捕捉的結構體CAMERA_CAPABILITY,該結構體定義如下:

typedef struct

{? /* output param */

int cam_fd;

unsigned int width;

unsigned int height;

unsigned long int file_length;

unsigned long int data_size;

int isstreaming;????????????????? // state

void *mem[NB_BUFFER];?????? // 內核視頻緩沖區長度

struct v4l2_capability cap;??????? // 攝像頭查詢驅動能力

struct v4l2_fmtdesc fmtdesc;????? // 攝像頭支持的視頻格式

struct v4l2_format format;??????? // 攝像頭視頻參數

struct v4l2_requestbuffers req;???? // 前端數據緩沖區轉換物理地址

struct v4l2_buffer buf;?????????? // 前端視頻緩沖區

}CAMERA_CAPABILITY;

系統創新設計了v4l2框架操作,在v4l2_camera.c源文件中實現了攝像頭捕捉,相關操作實現如下:

extern int Camera_Init(CAMERA_CAPABILITY *cam)??? // 初始化v4l2框架

extern int Camera_Start(CAMERA_CAPABILITY *cam)?? // 開啟視頻捕捉

extern int Camera_Stop(CAMERA_CAPABILITY *cam)??? // 停止視頻捕捉

extern int Camera_Grab(CAMERA_CAPABILITY *cam

#if CAM_PHOTO

char *photo_name,

int volatile *photo_enable_flag

#endif

)? // 循環捕捉一幀

extern int Camera_Exit(CAMERA_CAPABILITY *cam)??? // 退出視頻捕捉

操作流程如下:

(1)調用Camera_Init(&cam);初始化攝像頭捕捉程序。

(2)調用Camera_Grab(&cam,PHOTONAME,&photo_post);進行一幀圖像的捕獲,其中第二和第三個參數在用戶配置宏CAM_PHOTO非0時有效。PHOTONAME為保存圖片的名字,photo_post為是否拍照的flag標準,非0代表保存當前幀圖片,保存格式默認為BMP圖片文件格式。

(3) 調用Camera_Exit(&cam);退出攝像頭視頻捕捉。

2.2 循環鏈表緩沖池設計

本系統創新設計了循環單向鏈表緩沖池,使用該緩沖池可明確分離輸入輸出設備,提高系統模塊化水平,很簡單地增加輸入或輸出設備數量使之同時工作。循環單向鏈表緩沖池結構如圖4所示。

循環鏈表緩沖池設計方案如下:

在queue.h中新定義了描述循環鏈表節點NODE和緩沖池的結構體MyQueue:

typedef struct signal_loop_chain

{

unsigned int * dataaddr;

unsigned long int len;

struct signal_loop_chain *next;

}NODE;

typedef struct _QUEUE

{

NODE *queue_head;

NODE *queue_end;

int n;

}MyQueue;

在queue.c源文件中定義了功能函數的實現,具體如下:

extern NODE *Create_loop_chain(int n);??? // 循環鏈表緩沖池創建

extern int Quere_Show();? // 打印當前鏈表信息,調試用

extern int Quere_Read_Buf(S3C_HD_JPEG_DECODE_INFO *to

#if WEB_CAP

,WEB_STREAM_CAP *web

#endif

); ? // 讀鏈表某一數據塊

extern int Quere_Write_Buf(CAMERA_CAPABILITY *in);? // 寫鏈表某一空塊

extern int Free_loop_chain(); // 鏈表注銷資源

設計鏈表后,還需要利用存儲空間塊儲存數據,故使用OK6410的硬件cached內存分配器,獲取8塊cached虛擬內存區域,在鏈表初始化時依次插入到鏈表中。

采用循環鏈表緩沖池優化了存儲,同時使用多線程編程,極大優化了系統執行靈活度,提高了系統模塊化程度,但是隨之產生的是線程同步問題。

在Linux線程同步中,有POSIX無名信號量、POSIX有名信號量、線程互斥鎖、線程讀寫鎖、線程條件變量等幾種同步機制[19]。綜合比較這幾種同步機制,本系統采用POSIX無名信號量和線程讀寫鎖作為緩沖池的同步機制,使用POSIX無名信號量用于讀寫緩沖池同步。由于多用戶的網絡數據傳輸模型與單一寫多個同時讀取的同步模型相似,故使用線程讀寫鎖用于多用戶網絡數據流傳輸,從而實現系統穩定的同步機制。

3 系統調試與測試

本系統調試工作主要有:串口調試、攝像頭數據捕捉調試、網絡調試、HTTP服務器調試。

3.1 串口調試

本系統需要串口進行Linux命令和調試信息傳輸。OK6410開發板自帶COM19針串口接口,并在系統軟件設計中留有DEBUG配置宏和config.h配置文件,故只需在電腦上開啟串口軟件,同時在配置文件中打開DEBUG宏,即可在串口中打印系統調試日志信息。

3.2 攝像頭數據捕捉調試

本系統使用羅技C270高清USB攝像頭,該款攝像頭支持USB2.0,最大分辨率為1 024×768,感光元件為CMOS。在使用前打開總線熱插拔功能,注冊USB攝像頭驅動程序以及V4L2驅動。

在設計調試中發現,OK6410開發板的USB Host是1.1接口,Linux在識別USB1.1接口后,強制減緩了V4L2框架的最大傳輸速率,導致V4L2框架識別的YUV格式分辨率只有160×120。為了得到較為正常的分辨率,系統使用了經過壓縮的MJPEG圖像,其分辨率可以達到800×600,基本滿足設計要求。開啟攝像頭捕捉調試宏,通過調試信息查看攝像頭捕捉子系統是否正常工作。經上板測試,該攝像頭捕捉子系統工作正常。

3.3 網絡調試

OK6410開發板帶有RJ-45網絡變壓器,開發板使用192.168.0.232作為自身的IP地址,使用網線將其與路由器相連,然后在電腦上使用PING命令檢測網絡層是否可以建立連接。經上板測試,該開發板可與電腦正常通信。

3.4 HTTP服務器調試

在調試HTTP服務器前,需要將自行開發的幾個HTML文件放入BOA指定的www文件夾中,BOA默認使用index.html作為主頁[20]。調試時使用boa命令打開BOA服務器守護進程,然后利用IP地址即可登陸服務器頁面,如圖5所示。

輸入賬號密碼后,CGI程序將通過數據庫查詢賬號密碼是否符合要求。如果符合要求則跳轉到控制頁面,如圖6所示。

按下“視頻預覽選擇”中的視頻圖標后,將進入視頻實時監控頁面,如圖7所示。

按下“視頻預覽選擇”中的照相機圖標后進入拍照演示頁面,如圖8所示。

4 結語

本系統利用嵌入式系統優點,在OK6410開發板基礎上設計了一種基于Linux操作系統的視頻監控系統,同時創新設計了V412框架操作,實現了攝像頭抓拍功能,并創新定義使用了循環鏈表緩沖池,以及采用POSIX無名信號量和線程讀寫鎖的同步機制,極大優化了系統執行靈活度,提高了軟件模塊化水平。上板調試與測試表明:本系統穩定可靠,圖像實時準確,日志記錄功能方便調試,符合設計預期要求,同時系統可擴展性良好,對安防監控系統設計有借鑒作用。

參考文獻:

[1] NAERING N, VENETIANER PL, LIPTON A. The evolution of video surveillance:an overview[J]. Machine Vision and Application,2008,19(5):279-290.

[2] 馬瑜晨,許全宜. 基于模擬和數字技術相結合的視頻監控系統[J]. 電子技術與軟件工程,2018,63(6):62-63.

[3] RAJESH N, SAROJADEVI H. Emerging trends in video surveillance application[C]. Proceedings of International Conference on Software and Computer Application,2011:125-128.

[4] 錢曉東. 攝像機監控的發展與應用[J]. 中國安防,2013(1):56-60.

[5] 王若涵. 網絡視頻監控系統現狀與發展趨勢研究[J]. 科技與創新,2018(1):79-80.

[6] 薛樹濱. 基于嵌入式Linux的移動視頻監控系統[D]. 濟南:山東大學,2014.

[7] 陶祥亞,仲兆滿. IPv6環境下嵌入式視頻監控系統設計與實驗性研究[J]. 智能建筑與智慧城市,2017(4):44-48.

[8] 王菲. 嵌入式智能家居控制系統的設計[J]. 電子技術與軟件工程,2017(16):193-194.

[9] 郝俊,孟傳良. 基于V4L2的ARM11 USB視頻采集終端的設計與實現[J]. 貴州大學學報:自然科學報,2011,28(4):74-78.

[10] 劉科. 基于C/S的局域網內遠程控制系統的設計與實現[D]. 成都:電子科技大學,2015.

[11] ANTONY J,MATHURIA D S,DATTA T S,et al. Development of intelligent instruments with embedded HTTP servers for control and data acquisition in a cryogenic setup——the hardware, firmware,and software implementation[J]. Review of Scientific Instruments,2015,86(12): 131-132.

[12] WANG Y, PANG Z Y, WANG S, et al. Design and implementation of embedded wireless video monitoring system[J]. Journal of Chongqing University of Technology, 2015, 29(4):67-72.

[13] 劉磊. 基于CMOS圖像傳感器的無線視頻監控系統設計[D]. 上海:上海師范大學,2015.

[14] JIA Y. S3C6410(OK6410開發板介紹) [EB/OL]. https://blog.csdn.net/qq_33265533/article/details/53048380

[15] PAN L,WANG W. Design of the remote video monitoring system platform[J]. Ieri Procedia,2012,2(4):62-68.

[16] 徐成杰. 創建高效的多用戶TCP服務器[J]. 計算機應用,2002,22(2):110-112.

[17] 肇啟龍. 基于網絡和H.264的視頻監控系統設計[J]. 電子科技,2015,28(2):113-118.

[18] 甄聰聰,趙磊. 基于RTSP和H.264的嵌入式網絡視頻監控系統[J]. 科技信息,2014, 10(1):121-128.

[19] 吳宇佳,浦偉,周妍. Linux下多線程數據采集研究與實現[J]. 信息安全與通信保密,2012:90-94.

[20] ZHAO H, XIAO C, ZHUO L, et al. The design of embedded video system based BOA server[C].? International Conference on Computer Science&Service System,2012: 483-486.

(責任編輯:杜能鋼)

主站蜘蛛池模板: 国产精品人人做人人爽人人添| 在线视频亚洲色图| 天堂网国产| 一级毛片在线免费视频| 国产综合色在线视频播放线视| 正在播放久久| 久久久久无码国产精品不卡| 57pao国产成视频免费播放| 欧美亚洲激情| 免费三A级毛片视频| 国产电话自拍伊人| 国产熟女一级毛片| 亚洲自拍另类| 亚洲成人播放| 国产真实乱人视频| 最新亚洲人成无码网站欣赏网| 国产H片无码不卡在线视频| 久久婷婷国产综合尤物精品| 久久久久夜色精品波多野结衣 | 国产91高跟丝袜| 免费在线看黄网址| 丰满人妻久久中文字幕| 亚洲视频色图| 国产亚洲成AⅤ人片在线观看| 国产欧美在线视频免费| 精品国产毛片| 国产无码制服丝袜| 久久特级毛片| 欧美国产日产一区二区| 精品视频一区二区观看| 久久人与动人物A级毛片| 女人18毛片水真多国产| 9999在线视频| 午夜日b视频| 欧美精品v| 日韩无码精品人妻| 国产电话自拍伊人| 午夜福利无码一区二区| 永久免费AⅤ无码网站在线观看| 亚洲一区毛片| 无码区日韩专区免费系列| 国产亚洲精品自在久久不卡 | 国产精品分类视频分类一区| av大片在线无码免费| 国产高清精品在线91| 青草娱乐极品免费视频| 国产h视频在线观看视频| 成人亚洲国产| 国产av无码日韩av无码网站| 国产精品对白刺激| 国产欧美日韩va另类在线播放| 亚洲成a∧人片在线观看无码| 成色7777精品在线| 国产成人精品日本亚洲77美色| 精品一区二区三区无码视频无码| 久久精品国产免费观看频道| 视频一本大道香蕉久在线播放| 麻豆国产在线观看一区二区| 国产精品久久久久久久久| 欧美日韩免费在线视频| 亚洲高清日韩heyzo| 伊人久久大线影院首页| 精品视频一区二区观看| 久久久噜噜噜| 亚洲精品日产精品乱码不卡| 日韩精品高清自在线| 成人韩免费网站| 日韩无码真实干出血视频| 999国产精品永久免费视频精品久久| 国内嫩模私拍精品视频| 免费毛片全部不收费的| 国产在线视频福利资源站| 欧洲高清无码在线| 情侣午夜国产在线一区无码| 久久永久精品免费视频| 曰韩人妻一区二区三区| 亚洲欧美一区二区三区图片| 91色在线观看| av大片在线无码免费| 国产性猛交XXXX免费看| 91青青草视频在线观看的| 国产在线第二页|