版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 本科學(xué)生畢業(yè)論文(設(shè)計)</p><p> 2014年 5 月 8 日</p><p> 題目(中 文):基于Linux、QT的視頻監(jiān)控系統(tǒng)的設(shè)計與實(shí)現(xiàn)</p><p> (英 文):Design and implementation of video</p><p> monitoring syste
2、m based on Linux and QT</p><p> 姓 名XXXX</p><p> 學(xué) 號XXXXXXXXXXXX</p><p> 院 (系)XXXXXXXX</p><p> 專業(yè)、年級XXXXXXXXXX</p><p> 指導(dǎo)教師XXXX</p><p
3、> 畢業(yè)論文(設(shè)計)任務(wù)書</p><p> 2013 年 11 月 30 日</p><p> 畢業(yè)論文(設(shè)計)任務(wù)書</p><p> 注:本任務(wù)書一式三份,由指導(dǎo)教師填寫,經(jīng)教研室審批后一份下達(dá)給學(xué)生,一份交指導(dǎo)教師,一份留系里存檔。</p><p> 本科畢業(yè)論文(設(shè)計)開題報告書</p><p&
4、gt; 注:此表由學(xué)生本人填寫,一式三份,一份留系里存檔,指導(dǎo)老師和本人各保存一份</p><p> 畢業(yè)論文(設(shè)計)中期檢查表</p><p> 注:此表用于指導(dǎo)教師在學(xué)生畢業(yè)論文(設(shè)計)初稿完成后對學(xué)生執(zhí)行任務(wù)書情況進(jìn)行中期檢查時用,由指導(dǎo)教師填寫。</p><p> 畢業(yè)設(shè)計(論文)指導(dǎo)過程記錄表</p><p> 注:本表與
5、畢業(yè)論文一起裝訂存檔。</p><p> 本科畢業(yè)論文(設(shè)計)評審表</p><p> 說明:評定成績分為優(yōu)秀、良好、中等、及格、不及格五個等級,實(shí)評總分90—100分記為優(yōu)秀,80—89分記為良好,70—79分記為中等,60—69分記為及格,60分以下記為不及格。</p><p> 說明:評定成績分為優(yōu)秀、良好、中等、及格、不及格五個等級,實(shí)評總分90—10
6、0分記為優(yōu)秀,80—89分記為良好,70—79分記為中等,60—69分記為及格,60分以下記為不及格。</p><p> 本科畢業(yè)論文(設(shè)計)答辯記錄表</p><p><b> 目 錄</b></p><p><b> 緒論1</b></p><p> 1 基于Linux、QT的視頻監(jiān)
7、控系統(tǒng)概述4</p><p> 1.1 視頻監(jiān)控系統(tǒng)的組成4</p><p> 1.2 開發(fā)環(huán)境簡介4</p><p> 1.2.1 Linux環(huán)境簡介4</p><p> 1.2.2 QT技術(shù)簡介4</p><p> 1.2.3 V4L2編程技術(shù)簡介5</p><p>
8、 2 系統(tǒng)總體設(shè)計概述7</p><p> 2.1 分析系統(tǒng)需求7</p><p> 2.2 系統(tǒng)的軟件結(jié)構(gòu)及整體框架7</p><p> 2.2.1 整體結(jié)構(gòu)框圖7</p><p> 2.2.2 模塊的功能分析8</p><p> 3 系統(tǒng)中各模塊功能的具體實(shí)現(xiàn)9</p><
9、p> 3.1 服務(wù)器:數(shù)據(jù)采集部分9</p><p> 3.1.1 模塊功能描述9</p><p> 3.1.2 技術(shù)概要9</p><p> 3.1.3 邏輯概要及流程圖10</p><p> 3.2 服務(wù)器:數(shù)據(jù)處理17</p><p> 3.2.1 模塊功能描述17</p>
10、;<p> 3.2.2 技術(shù)概要17</p><p> 3.2.3 邏輯概要及程序流程圖17</p><p> 3.3 客戶端:數(shù)據(jù)獲取19</p><p> 3.3.1 模塊功能描述19</p><p> 3.3.2 技術(shù)概要19</p><p> 3.3.3 邏輯概要及流程圖1
11、9</p><p> 3.4 客戶端:QT視頻渲染21</p><p> 3.4.1 模塊功能描述21</p><p> 3.4.2 技術(shù)概要22</p><p> 3.4.3 邏輯概要及流程圖22</p><p> 4 視頻監(jiān)控系統(tǒng)測試23</p><p> 4.1 系統(tǒng)
12、測試目標(biāo)23</p><p> 4.2 系統(tǒng)測試過程23</p><p> 4.3 系統(tǒng)測試結(jié)果25</p><p><b> 結(jié)論26</b></p><p><b> 參考文獻(xiàn)27</b></p><p><b> 致 謝28</b
13、></p><p><b> 插圖索引</b></p><p> 圖1 視頻監(jiān)控系統(tǒng)結(jié)構(gòu)圖7</p><p> 圖2 服務(wù)器(server)端視頻數(shù)據(jù)采集流程10</p><p> 圖3 打開USB攝像頭設(shè)備流程圖11</p><p> 圖4 查詢視頻設(shè)備信息流程圖12&l
14、t;/p><p> 圖5 設(shè)置視頻采集方式流程圖13</p><p> 圖6 申請緩沖區(qū)流程圖14</p><p> 圖7 緩沖區(qū)設(shè)置流程圖15</p><p> 圖8 視頻數(shù)據(jù)處理流程圖16</p><p> 圖9 服務(wù)器端數(shù)據(jù)處理流程圖18</p><p> 圖10 服務(wù)器
15、端數(shù)據(jù)幀封裝結(jié)構(gòu)圖19</p><p> 圖11 服務(wù)器與客戶端TCP網(wǎng)絡(luò)編程流程圖20</p><p> 圖12 客戶端的數(shù)據(jù)分割流程圖21</p><p> 圖13 客戶端視頻渲染模塊流程圖22</p><p> 圖14 啟動系統(tǒng)效果圖(左:客戶端,右:服務(wù)端)24</p><p> 圖15 客
16、戶端準(zhǔn)備連接時效果圖(左:客戶端,右:服務(wù)端)24</p><p> 圖16 系統(tǒng)網(wǎng)絡(luò)連接后效果圖(左:客戶端,右:服務(wù)端)25</p><p> 基于Linux、QT的視頻監(jiān)控系統(tǒng)的設(shè)計與實(shí)現(xiàn)</p><p><b> 摘 要</b></p><p> 隨著社會的網(wǎng)絡(luò)技術(shù)的不斷更新,計算機(jī)多媒體應(yīng)用技術(shù)及
17、網(wǎng)絡(luò)技術(shù)方面的發(fā)展之迅速是有目共睹的,在銀行,商場監(jiān)控,城市交通管理,酒店等安全保衛(wèi)方面,視頻監(jiān)控系統(tǒng)的市場需求量大幅度上升,市場上出現(xiàn)了多種圖像采集和傳輸?shù)漠a(chǎn)品,視頻監(jiān)控系統(tǒng)的發(fā)展趨勢必然是數(shù)字化,網(wǎng)絡(luò)化,即采用嵌入式網(wǎng)絡(luò)攝像機(jī),利用嵌入式監(jiān)控設(shè)備體積小巧,性能穩(wěn)定,通訊便利等特點(diǎn)。</p><p> 在我國現(xiàn)階段,流媒體技術(shù)以及嵌入式網(wǎng)絡(luò)視頻監(jiān)控技術(shù)的研發(fā)還不夠成熟,大多是針對那些大,中型工程所開發(fā)的視頻監(jiān)
18、控系統(tǒng)。但是對于小型的場所來說,成本太高,視頻監(jiān)控系統(tǒng)的功能復(fù)雜。因此我們可以設(shè)計一種低成本的,簡便的,新型的視頻監(jiān)控系統(tǒng)針對上述用戶群。這是一項(xiàng)非常有意義的工程。</p><p> 視頻監(jiān)控系統(tǒng)的設(shè)計論文主要介紹了整個系統(tǒng)的開發(fā)流程,運(yùn)用模塊化分析設(shè)計的方法,采用各個模塊程序流程圖對整個系統(tǒng)的設(shè)計以及實(shí)現(xiàn)進(jìn)行詳細(xì)的說明,全文共分為緒論、系統(tǒng)的總體設(shè)計、各模塊的具體功能實(shí)現(xiàn)、視頻監(jiān)控系統(tǒng)的測試以及結(jié)論這五個部分
19、。利用v4l2進(jìn)行數(shù)據(jù)采集,基于TCP編程和多線程編程對數(shù)據(jù)進(jìn)行處理,QT技術(shù)來實(shí)現(xiàn)客戶端程序。視頻數(shù)據(jù)的發(fā)送是采用HTTP協(xié)議,Linux系統(tǒng)下C語言編程實(shí)現(xiàn)的。</p><p> 【關(guān)鍵詞】:Linux QT技術(shù) v4l2編程 http協(xié)議</p><p> Design and implementation of video monitoring system based
20、on Linux and QT</p><p><b> Abstract</b></p><p> Along with the social network technology unceasing renewal, computer multimedia application technology and network technology aspect
21、s of the rapid development of is be obvious to all.in banks, shopping malls monitoring, urban traffic management, security and other aspects of the hotel. Market demand for video surveillance systemincreased significantl
22、y. Appeared on the market a variety of image acquisition and transmission products, the development trend of video surveillance system must be digit</p><p> At the present stage of our country, research and
23、 development of streaming media technology and the embedded network video monitoring technology is not mature enough, mostly in those big, video monitoring system and medium engineering development. But for a small place
24、, the cost is too high, the video monitoring system with complex functions. Therefore, we according to the user group, can design a simple, low cost, video monitoring system model. This is a very meaningful project.</
25、p><p> This paper mainly introduces the system development process, the use of the design method of modularization analysis, the program flow chart of each module of the system design and implementation are de
26、scribed in detail, the full text is divided into introduction, the overall design of the system, each module of the specific function realization of video monitoring system, and the conclusion of this test the five part.
27、 Data collection by v4l2, TCP and multi thread programming for data processing</p><p> 【Key words】 Linux QT Technology v4l2 Programming http Protocol</p><p><b> 緒論</b></p&
28、gt;<p> Linux是一個基于Unix的操作系統(tǒng),它也是Unix家族的一元,與Unix不同的是,它可以運(yùn)行在不同的硬件平臺上,它于1991年誕生于芬蘭的一個大學(xué)生Linus Torvalds手中,不過當(dāng)時還只是一個雛形,為了不讓自己的這個羽翼未滿的操作系統(tǒng)夭折,Linus將自己的作品Linux通過Internet發(fā)布,從此大量的一批知名的、不知名的編程人員以及電腦黑客加入到Linux系統(tǒng)的開發(fā)過程中來,Linux
29、就這樣的逐漸成長起來了[1]。到目前為止,Linux的內(nèi)核已經(jīng)發(fā)展到了3.14,并在次基礎(chǔ)上發(fā)展了數(shù)十種發(fā)行版,其中有經(jīng)過長期發(fā)展洗禮的Redhat(Fedora),也有發(fā)展迅猛使用方便的Ubuntu。</p><p> 在流媒體技術(shù)的發(fā)展中,視頻技術(shù)的發(fā)展越來越迅速,大量應(yīng)用于安防與教育事業(yè),比如在遠(yuǎn)程視頻教育、在線遠(yuǎn)程視頻會議、醫(yī)療、各種場所的視頻監(jiān)控以及危險區(qū)域的探測等方面。Linux操作系統(tǒng)在發(fā)展的過程
30、具備了很好的網(wǎng)絡(luò)性能。Linux系統(tǒng)下提供了非常豐富的開源軟件和視頻支持,支持各種硬件平臺,因此Linux平臺成為了視頻采集的最佳平臺。Linux系統(tǒng)上的軟件開發(fā)具有高可靠性、低成本、高度自動化、高可配置性、及低耗費(fèi)等一些優(yōu)點(diǎn),同時能夠很好的完成多任務(wù)和實(shí)時性的設(shè)計需求。</p><p> 我國資深嵌入式系統(tǒng)專家——沈緒榜院士曾預(yù)言:“未來十年將會產(chǎn)生針頭大小,具有超過一億次運(yùn)算能力的嵌入式智能芯片”。這些將為
31、我們的開發(fā)提供了相當(dāng)大的創(chuàng)造空間。中國應(yīng)當(dāng)注意發(fā)展這一智力密集型產(chǎn)業(yè)”。</p><p> 綜上所述,嵌入式Linux操作系統(tǒng)在廣泛和深入的應(yīng)用于各個領(lǐng)域,應(yīng)用的技術(shù)也越來越復(fù)雜。針對基于網(wǎng)絡(luò)傳輸?shù)囊曨l監(jiān)控系統(tǒng)的實(shí)際需求與應(yīng)用,結(jié)合視頻的圖像采集技術(shù)與編碼技術(shù),嵌入式Linux操作系統(tǒng)和網(wǎng)絡(luò)編程技術(shù)等多方面的新興技術(shù),設(shè)計的一套Linux網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng),用來進(jìn)行視頻數(shù)據(jù)的采集、視頻數(shù)據(jù)的壓縮編碼與解碼以及視頻
32、的網(wǎng)絡(luò)傳輸,該系統(tǒng)基于Linux操作系統(tǒng)進(jìn)行開發(fā)的,從USB攝像頭捕捉視頻數(shù)據(jù),QT實(shí)現(xiàn)客戶端和服務(wù)器端,即可查看遠(yuǎn)程視頻影像。</p><p><b> 論文的目的及意義:</b></p><p> 視頻監(jiān)控系統(tǒng)的設(shè)計主要說明視頻監(jiān)控系統(tǒng)的詳細(xì)設(shè)計與實(shí)現(xiàn)。介紹了系統(tǒng)中各個模塊的設(shè)計與模塊功能的實(shí)現(xiàn)以及應(yīng)用的相關(guān)技術(shù)。在論文中,我將會對每一個模塊的設(shè)計以及實(shí)現(xiàn)方法
33、給出簡單的文字說明以及設(shè)計的流程圖。</p><p> 我寫這篇論文的主要是學(xué)習(xí)熟悉基于TCP/IP網(wǎng)絡(luò)的遠(yuǎn)程視頻監(jiān)控系統(tǒng)的基本知識和相關(guān)的多媒體開發(fā)技術(shù)。隨著4G通訊時代的到來,我們更可以將視頻監(jiān)控客戶端發(fā)展到移動終端,這將使我們更加方便。</p><p> 項(xiàng)目背景及未來發(fā)展應(yīng)用方向:</p><p> 縱觀視頻監(jiān)控的研究進(jìn)展,從閉路電視系統(tǒng)構(gòu)建的模擬系統(tǒng)
34、、經(jīng)歷了數(shù)字信號控制的模擬視頻監(jiān)控系統(tǒng)、過渡到數(shù)字硬盤錄像設(shè)備為核心的視頻監(jiān)控系統(tǒng)和當(dāng)代的數(shù)字網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)這幾大重要階段。</p><p> 數(shù)字網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)與其它監(jiān)控系統(tǒng)的優(yōu)點(diǎn):</p><p><b> a、布控區(qū)域廣闊</b></p><p> 數(shù)字網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)是可以超越地域的限制的,可以延伸整個需要布控區(qū)域,這是因?yàn)樗?/p>
35、將網(wǎng)絡(luò)視頻信號采集終端直接連入網(wǎng)絡(luò),并且能夠解除信號的衰減和纜線長度的局限性,而且網(wǎng)絡(luò)是不受距離長短的影響。</p><p> b、系統(tǒng)具有幾乎無限的無縫擴(kuò)展能力</p><p> 需要增加設(shè)備時只要將IP地址進(jìn)行擴(kuò)充操作就行了,因?yàn)樗械腎P地址都在系統(tǒng)中進(jìn)行了標(biāo)識。</p><p> c、可組成非常復(fù)雜的監(jiān)控網(wǎng)絡(luò)</p><p>
36、 監(jiān)控系統(tǒng)是以基于網(wǎng)絡(luò)視頻信號采集終端為核心,在組網(wǎng)方式上與基于PC平臺的監(jiān)控和傳統(tǒng)的模擬監(jiān)控方式有了質(zhì)的飛躍,視頻信號采集終端輸出已完成了從模擬到數(shù)字的轉(zhuǎn)換并壓縮,在網(wǎng)絡(luò)上傳輸時采用統(tǒng)一的協(xié)議,能夠?qū)崿F(xiàn)跨路由器、跨網(wǎng)關(guān)等的遠(yuǎn)程視頻傳輸。</p><p> d、性能穩(wěn)定可靠,無需專人管理</p><p> 視頻監(jiān)控系統(tǒng)中采集視頻信號的終端應(yīng)用了嵌入式Linux技術(shù),主要采用嵌入式多任務(wù)
37、實(shí)時操作系統(tǒng),又能夠?qū)⒕W(wǎng)絡(luò)功能和視頻壓縮功能集中到一個極小體積的設(shè)備內(nèi),同時可以直接連入廣域網(wǎng)絡(luò)或者局域網(wǎng)絡(luò),即插即看,系統(tǒng)的穩(wěn)定性、可靠性、實(shí)時性得到了極大的提升,能夠運(yùn)用于無人值守的環(huán)境中。</p><p> e、我們可以從視頻監(jiān)控中心同時觀看多個USB網(wǎng)絡(luò)攝像頭視頻,但是對網(wǎng)絡(luò)帶寬是有一定的要求。</p><p> 目前視頻監(jiān)控系統(tǒng)應(yīng)用主要有以下應(yīng)用領(lǐng)域:</p>
38、<p> ·食品監(jiān)督系統(tǒng)主要是對食品的原料,和衛(wèi)生的隨時檢查等;</p><p> ·教育系統(tǒng)、電力系統(tǒng)、部隊(duì)系統(tǒng)、石化系統(tǒng)等的視頻監(jiān)控與安全檢測等;</p><p> ·在銀行系統(tǒng)、鐵路系統(tǒng)、醫(yī)療系統(tǒng)等的視頻監(jiān)控與安全檢測;</p><p> ·稅務(wù)系統(tǒng)主要是報稅服務(wù)大廳監(jiān)控;</p><
39、;p> ·鋼鐵系統(tǒng)主要是安全生產(chǎn)管理監(jiān)控系統(tǒng);</p><p><b> 未來應(yīng)用領(lǐng)域:</b></p><p> 在不久的將來視頻監(jiān)控會出現(xiàn)在農(nóng)村及每個實(shí)體經(jīng)濟(jì)的商人手中。</p><p> 對農(nóng)村和農(nóng)民而言:農(nóng)產(chǎn)品是主要經(jīng)濟(jì)來源,農(nóng)產(chǎn)品的收成直接決定著農(nóng)民的收入,主要監(jiān)控糧食的生成,同時還可以做一些其他溫度和濕度的感
40、光性能,增加農(nóng)產(chǎn)品的收成同時幫助農(nóng)民致富。</p><p> 未來的實(shí)體經(jīng)濟(jì)來說,視頻監(jiān)控也是很重要的。隨著科技的發(fā)展,工廠模式已經(jīng)走上了現(xiàn)代化之路,那管理上也應(yīng)該得以更近。用視頻管理,用視頻收集資料,這樣不僅提高了處理速度,同時也可以收集到更多的數(shù)據(jù)參數(shù)以供以后的自身發(fā)展做參考。</p><p> 視頻監(jiān)控的智能化是趨勢,也是近年的熱點(diǎn),大環(huán)境給了我們視頻智能化的大好空間,那就得好好
41、利用。</p><p> 基于Linux、QT的視頻監(jiān)控系統(tǒng)概述</p><p> 該系統(tǒng)的開發(fā)是在Linux操作系統(tǒng)上進(jìn)行,采用了QT編程技術(shù)、Socket網(wǎng)絡(luò)編程技術(shù)、TCP/IP網(wǎng)絡(luò)協(xié)議以及Unix系統(tǒng)高級編程技術(shù)而實(shí)現(xiàn)的。</p><p><b> 視頻監(jiān)控系統(tǒng)的組成</b></p><p> 視頻監(jiān)控系
42、統(tǒng)大致可分為三大模塊:視頻數(shù)據(jù)信號的采集部分、網(wǎng)絡(luò)傳輸部分以及遠(yuǎn)程客戶端視頻的渲染部分。</p><p><b> 開發(fā)環(huán)境簡介</b></p><p><b> Linux環(huán)境簡介</b></p><p> 該系統(tǒng)是在Linux環(huán)境上開發(fā)的,Linux是Unix這個大家族中的一員。Linux操作系統(tǒng)是一個基于POS
43、IX和Unix的多CPU、支持多線程、多任務(wù)和的多用戶操作系統(tǒng);能夠運(yùn)行主要的應(yīng)用程序、網(wǎng)絡(luò)協(xié)議和Unix工具軟件;它同時支持32位硬件和64位硬件平臺;Linux繼承了Unix的以網(wǎng)絡(luò)為核心的設(shè)計思想,是一個性能穩(wěn)定的多用戶、實(shí)時的網(wǎng)絡(luò)操作系統(tǒng)[2]。</p><p> 我這次使用的Linux的桌面系統(tǒng)Ubuntu12.04 32位操作系統(tǒng)。Linux系統(tǒng)可以運(yùn)行在不同的硬件平臺,這個對于我們這些軟件開發(fā)者來
44、說無疑是件非常好的事,可以進(jìn)行各種平臺的系統(tǒng)移植。最典型的有安卓系統(tǒng),其內(nèi)核也是Linux系統(tǒng)內(nèi)核。在Linux環(huán)境開發(fā)視頻監(jiān)控系統(tǒng)的好處就在于以后能夠很好的移植到移動終端。</p><p><b> QT技術(shù)簡介</b></p><p> QT是Nokia公司開發(fā)的一個集成開發(fā)環(huán)境,它封裝有自己的一套庫,以至于能實(shí)現(xiàn)跨平臺編程。QT是一個非常好的C++圖形用戶界
45、面UI設(shè)計應(yīng)用程序框架。它給應(yīng)用程序開發(fā)者提供了一套功能齊全的進(jìn)行藝術(shù)級的圖形用戶界面程序設(shè)計所需的功能[3]。Qt很容易擴(kuò)展,并且 允許真正地組件編程?;旧螿t和X Window上的GTK,Openwin,Motif等圖形界面庫和 Windows 平臺上的ATL,CL,OWL,VMFC是非常類似的[4]。</p><p> QT模塊化程度非常高是因?yàn)樗蟹浅:玫姆庋b機(jī)制,而且具有非常好的可重用性,這將非常方
46、便了應(yīng)用程序開發(fā)用戶進(jìn)行軟件開發(fā)。QT提供了一種安全類型來替代callback,稱為信號和槽(signals/slots)。這些都使得不同模塊之間的協(xié)同工作變得非常簡單。</p><p> QT提供了基于模版的date/timefile、directory management、serialization、I/O device、collections、類,而且還包括了多達(dá)250個以上的C++類。甚至還包括了正則
47、表達(dá)式的處理功能。支持2D/3D/圖形渲染,支持OpenGL。而且有大量的開發(fā)文檔。</p><p> V4L2編程技術(shù)簡介</p><p> V4L2編程主要是針對于uvc免驅(qū)USB設(shè)備的設(shè)計的一個軟件編程框架,主要是用于采集USB攝像頭的視頻信息等。V4L2有以下編程模式:</p><p> a. 設(shè)置采集方式:</p><p>
48、 打開視頻設(shè)備后,可以設(shè)置該視頻設(shè)備的屬性,例如放縮、裁剪等。這一步是可選的。在Linux編程中實(shí)現(xiàn)對設(shè)備的I/O通道進(jìn)行統(tǒng)一管理一般通過調(diào)用系統(tǒng)的ioctl()函數(shù)。</p><p> extern int ioctl(int __fd, unsigned long int __request, …) __THROW;</p><p> __fd:USB視頻設(shè)備的設(shè)備ID號
49、,例如調(diào)用了系統(tǒng)open()函數(shù)來打開視頻通道后返回的videoFd</p><p> __request:具體的命令標(biāo)識符。</p><p><b> b. 一般操作流程</b></p><p><b> 1) 打開設(shè)備文件</b></p><p> int fd = open(“/dev
50、/video0”, O_RDWR);</p><p> 2) 查詢并獲取到USB視頻設(shè)備的設(shè)備屬性,可以查看到該設(shè)備具有的一些功能,例如USB視頻設(shè)備是否具有視頻輸入輸出的功能,或者音頻輸入輸出的功能等。</p><p> VIDIOC_QUERYCAP,struct v4l2_capability </p><p> v4l2_std_id std; <
51、;/p><p><b> do{</b></p><p> ret= ioctl(fd, VIDIOC_QUERYSTD, &std); </p><p> }while (ret == -1 && errno == EAGAIN); </p><p> switch(std){</p&
52、gt;<p> case V4L2_STD_NTSC: </p><p><b> //…… </b></p><p> case V4L2_STD_PAL: </p><p><b> //……</b></p><p><b> }</b></p
53、><p> 3) 選擇USB視頻設(shè)備的視頻輸入,有些視頻設(shè)備可以有多個視頻輸入。</p><p> VIDOC_S_INPUT,struct v4l2_input</p><p> 4) 設(shè)置視頻采集的的視頻幀格式和視頻制式,視頻制式包括幀的格式,NTSC,PAL,包括寬度(width)和高度(height)等。</p><p> VID
54、IOC_S_STD,VIDIOC_S_FMT,struct v4l2_std_id,struct v4l2_format</p><p> 5) 向驅(qū)動申請緩沖,一般不超過5個。</p><p> struct v4l2_requestbuffers</p><p><b> 6) 申請物理內(nèi)存</b></p><p&
55、gt; 從內(nèi)核申請到幀緩沖空間,并將其映射到用戶空間去,然后可以直接對采集到的視頻數(shù)據(jù)幀進(jìn)行操作了,不必再去進(jìn)行復(fù)制緩沖區(qū)內(nèi)容了。</p><p> 將從內(nèi)核中申請下來的緩存進(jìn)行入隊(duì)列操作,存放采集到的視頻幀數(shù)據(jù)。</p><p> VIDIOC_QBUF,struct v4l2_buffer</p><p> 7) 開始視頻的采集</p>&
56、lt;p> enum v4l2_buf_type type</p><p> type = V4L2_BUF_TYPE_VIDEO_CAPTURE; </p><p> if (ioctl (fd, VIDIOC_STREAMON, &type) < 0) </p><p><b> { </b></p
57、><p> printf("VIDIOC_STREAMON error\n"); </p><p> // return -1; </p><p><b> }</b></p><p> 8) 進(jìn)行出隊(duì)列操作從而獲取已采集數(shù)據(jù)到的視頻幀緩沖數(shù)據(jù),取得原始采集數(shù)據(jù)。VIDIOC_DQBUF</
58、p><p> 將緩沖區(qū)重新入隊(duì)列尾,這樣可以循環(huán)采集</p><p> VIDIOC_QBUF</p><p> 9) 停止視頻采集。</p><p> VIDIOC_STREAMOFF</p><p> 10) 關(guān)閉視頻設(shè)備。</p><p><b> close(fd)&l
59、t;/b></p><p><b> 系統(tǒng)總體設(shè)計概述</b></p><p><b> 分析系統(tǒng)需求</b></p><p> 視頻監(jiān)控系統(tǒng)主要由服務(wù)端程序和客戶端程序構(gòu)成。服務(wù)器(server)端是基于Linux系統(tǒng)環(huán)境下的網(wǎng)絡(luò)服務(wù)器程序。服務(wù)端中視頻數(shù)據(jù)的采集部分利用v4l2(video for Linu
60、x II)對網(wǎng)絡(luò)攝像頭(USB攝像頭)進(jìn)行控制和訪問并且獲取由攝像頭捕獲到的視頻數(shù)據(jù),然后由huffman編碼進(jìn)行壓縮,然后再通過網(wǎng)絡(luò)服務(wù)將獲取到的視頻數(shù)據(jù)進(jìn)行封裝成http數(shù)據(jù)幀并利用http協(xié)議發(fā)送到客戶端。</p><p> 由于視頻監(jiān)控系統(tǒng)的服務(wù)器(server)端視頻數(shù)據(jù)是通過http協(xié)議發(fā)送的,所以此系統(tǒng)客戶端沒有平臺限制,只要支持HTTP1.0以上的平臺就可以訪問系統(tǒng)的服務(wù)。而且,系統(tǒng)的服務(wù)還可以
61、直接通過web瀏覽器訪問(對firefox、Google Chrome瀏覽器支持最佳)。為了提高傳輸效率我們還需要進(jìn)行客戶端的軟件開發(fā),由于對客戶端沒有平臺要求,即實(shí)現(xiàn)跨平臺,所以在Windows、Linux、android等平臺都可以實(shí)現(xiàn)。視頻監(jiān)控系統(tǒng)的設(shè)計主要以Linux為例用QT實(shí)現(xiàn)一個簡易的客戶端軟件,同時還可以用瀏覽器訪問,既同時實(shí)現(xiàn)了C/S架構(gòu)與B/S架構(gòu)的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)。</p><p>
62、; 系統(tǒng)的軟件結(jié)構(gòu)及整體框架</p><p><b> 整體結(jié)構(gòu)框圖</b></p><p> 視頻監(jiān)控系統(tǒng)總體結(jié)構(gòu)圖如圖1所示</p><p><b> 視頻監(jiān)控系統(tǒng)結(jié)構(gòu)圖</b></p><p> 上圖所示,為視屏監(jiān)控系統(tǒng)的結(jié)構(gòu)總圖,其主要作用是為后續(xù)的軟件模塊設(shè)計及程序代碼的編寫打了
63、個初略的框架,這也是視頻監(jiān)控系統(tǒng)設(shè)計的指明燈。從圖中可以看出主要的流程,以及邏輯關(guān)系。在當(dāng)今社會互聯(lián)網(wǎng)、移動互聯(lián)網(wǎng)發(fā)展非常迅速,網(wǎng)絡(luò)遠(yuǎn)程視頻監(jiān)控是必然趨勢,TCP/IP和socket的創(chuàng)建使視頻可以融入到互聯(lián)網(wǎng)中。4G時代的到來,使得我們可以將實(shí)時視頻監(jiān)控發(fā)展到移動終端上,這將更加方便我們的日常生活。</p><p><b> 模塊的功能分析</b></p><p>
64、; 服務(wù)器(server)端負(fù)責(zé)視頻數(shù)據(jù)的采集,采集可以通過v4l2編程實(shí)現(xiàn),有詳細(xì)的API開發(fā)文檔,以及v4l2編程的相關(guān)資料可以參考。</p><p> 客戶端(client)主要負(fù)責(zé)的是將接收到的視頻數(shù)據(jù)通過QT編程將其渲染出來。主要用到了QT中的信號(signal)和槽(slot)機(jī)制、以及繪圖事件,QT是利用C++編程,而且它封裝了一套自己的庫可以實(shí)現(xiàn)跨平臺,這也就解決了前面提到的客戶端的跨平臺特性
65、。</p><p> 還有連接Server與Cclient的就是采用Socket網(wǎng)絡(luò)服務(wù)器的搭建,這主要采用的是Linux環(huán)境網(wǎng)絡(luò)編程。該網(wǎng)絡(luò)的搭建主要是利用基于TCP/IP協(xié)議的HTTP協(xié)議,將服務(wù)器(server)端采集到的視頻數(shù)據(jù)封裝成http數(shù)據(jù)幀的形式,然后利用http協(xié)議將視頻數(shù)據(jù)幀發(fā)送到客戶端(client)。由于是實(shí)時傳輸,所以還用到多線程,使得每個客戶端(client)相互獨(dú)立,各個線程都將執(zhí)
66、行一個死循環(huán),源源不斷的給客戶端發(fā)送視頻數(shù)據(jù)。</p><p> 系統(tǒng)中各模塊功能的具體實(shí)現(xiàn)</p><p> 服務(wù)器:數(shù)據(jù)采集部分</p><p><b> 模塊功能描述</b></p><p> 視頻數(shù)據(jù)的采集是視頻監(jiān)控系統(tǒng)中相當(dāng)重要的,沒有視頻數(shù)據(jù)的采集就不可能有后面視頻的編碼、視頻的解碼、視頻數(shù)據(jù)的網(wǎng)絡(luò)傳
67、輸,也就是說沒有視頻數(shù)據(jù)采集就沒有監(jiān)控的傳播。這一模塊需要查看、配置設(shè)備的屬性并從設(shè)備中獲取圖像數(shù)據(jù)。</p><p> 根據(jù)獲取到的設(shè)備信息,利用v4l2(vidoo for Linux II)通過函數(shù)ioctl()對USB攝像頭進(jìn)行配置,打開設(shè)備,開啟視頻流功能,然后開始進(jìn)行視頻數(shù)據(jù)采集,采集到數(shù)據(jù)后將數(shù)據(jù)保存,采集完畢以后關(guān)閉設(shè)備功能,最后關(guān)閉視頻設(shè)備,退出整個程序。</p><p&g
68、t;<b> 技術(shù)概要</b></p><p> 當(dāng)前模塊需要涉及到對設(shè)備的I/O進(jìn)行相關(guān)的操作,主要通過v4l2(video for Linux II)框架對視頻設(shè)備進(jìn)行設(shè)置和控制。主要用到了以下幾個宏定義:</p><p> VIDIOC_REQBUFS:分配內(nèi)存。</p><p> VIDIOC_QUERYBUF:將分配出來的數(shù)據(jù)
69、緩存區(qū)映射到物理地址。</p><p> VIDIOC_S_FMT:讀取當(dāng)前驅(qū)動的視頻捕獲格式。</p><p> VIDIOC_ENUM_FMT:獲取USB視頻設(shè)備驅(qū)動所支持的視頻格式。</p><p> VIDIOC_QUERYCAP:查詢驅(qū)動功能。</p><p> VIDIOC_G_FMT:設(shè)置當(dāng)前驅(qū)動的視頻捕獲格式。<
70、/p><p> VIDIOC_TRY_FMT:檢驗(yàn)視頻設(shè)備驅(qū)動的顯示格式是否正確。</p><p> VIDIOC_CROPCAP:查詢驅(qū)動的修剪能力。</p><p> VIDIOC_S_CROP:設(shè)置視頻信號的邊框。</p><p> VIDIOC_G_CROP:讀取視頻信號的邊框。</p><p> VID
71、IOC_QBUF:把視頻數(shù)據(jù)從緩存中取出來。</p><p> VIDIOC_DQBUF:把視頻數(shù)據(jù)放回隊(duì)列。</p><p> VIDIOC_STREAMON:開始視頻數(shù)據(jù)顯示函數(shù)。</p><p> VIDIOC_STREAMOFF:結(jié)束視頻顯示函數(shù)。</p><p> VIDIOC_QUERYSTD:查看USB視頻設(shè)備支持的標(biāo)準(zhǔn)
72、(例如: NTSC(歐洲標(biāo)準(zhǔn))、PAL(亞洲標(biāo)準(zhǔn)))。</p><p> 其中還可以通過查閱v4l2編程技術(shù)提供的API文檔,熟悉一些結(jié)構(gòu)體屬性的賦值以及一些控制標(biāo)記具有的實(shí)際意義。</p><p><b> 邏輯概要及流程圖</b></p><p> 這一節(jié)主要介紹了服務(wù)器(server)端的如何采集視頻數(shù)據(jù)。圖2是視頻采集流程圖,描述
73、了服務(wù)器(server)端視頻數(shù)據(jù)采集的主要編程步驟。</p><p> 服務(wù)器(server)端視頻數(shù)據(jù)采集流程</p><p> 下面將對沒一個步驟進(jìn)行詳細(xì)的介紹:</p><p> 打開視頻video設(shè)備:</p><p> 打開USB視頻設(shè)備(視頻監(jiān)控系統(tǒng)的設(shè)計中指的是我們的USB攝像頭)。我們利用Linux系統(tǒng)提供的接口函數(shù)
74、open來對設(shè)備進(jìn)行打開的操作。下圖(圖3)對這一過程進(jìn)行了詳細(xì)的描述。FD是USB攝像頭設(shè)備文件描述符,簡單的來說,F(xiàn)D只是一個int型(即整數(shù)),在調(diào)用Linux系統(tǒng)編程中的open()函數(shù)時的返回值。起到的是一個索引的作用,其進(jìn)程通過查找文件描述符表項(xiàng)從而找到該FD所指向的文件。在Linux系統(tǒng)中,一切設(shè)備皆文件,所以不管是打開的文件還是打開設(shè)備都是通過此表中的文件描述符來引用的。</p><p> 打開
75、USB攝像頭設(shè)備流程圖</p><p> 2) 獲取視頻設(shè)備信息(查詢視頻設(shè)備信息):</p><p> 查詢USB攝像頭設(shè)備驅(qū)動的相關(guān)信息以及和視頻數(shù)據(jù)采集相關(guān)的參數(shù),根據(jù)查詢到的設(shè)備信息初步判斷設(shè)備類型以及將要處理的數(shù)據(jù)類型。利用ioctl()函數(shù)以及v4l2提供的兩個結(jié)構(gòu)體v4l2_capbility和v4l2_format來保存獲取到的USB攝像頭設(shè)備驅(qū)動信息和數(shù)據(jù)幀信息。詳細(xì)
76、流程如下圖(圖4)所示。VIDIOC_G_FMT、VIDIOC_S_FMT等需要通過查閱v4l2提供的API來理解具體意義。</p><p> 查詢視頻設(shè)備信息流程圖</p><p> 3) 設(shè)置USB攝像頭采集方式:</p><p> 設(shè)置USB攝像頭(視頻設(shè)備)的視頻采集方式,例如視頻數(shù)據(jù)幀的采集速率(即每秒鐘采集到的視頻幀數(shù)量)、采集圖像的分辨率等一些參
77、數(shù)的設(shè)置。用到v4l2中的v4l2_streamparm和v4l2_format兩個結(jié)構(gòu)體以及VIDIOC_S_PARM和VIDIOC_S_FMT兩個宏,相關(guān)用法的介紹請?jiān)敿?xì)查閱v4l2框架的API文檔。具體實(shí)現(xiàn)方法參照下圖(圖5)。</p><p> 設(shè)置視頻采集方式流程圖</p><p> 4) 向驅(qū)動申請緩存</p><p> 向內(nèi)核驅(qū)動申請幾塊緩沖區(qū)(
78、此緩沖區(qū)是由內(nèi)核管理的,所以需要向內(nèi)核申請),用來存放USB攝像頭設(shè)備采集的視頻數(shù)據(jù)。從內(nèi)核中申請緩存用到v4l2編程中的結(jié)構(gòu)體v4l2_requestbuffer和宏定義VIDIOC_REQBUFS。具體的實(shí)現(xiàn)方法參照下圖(圖6)。</p><p><b> 申請緩沖區(qū)流程圖</b></p><p> 5) 設(shè)置緩沖區(qū)屬性</p><p>
79、; 緩存申請到了后,對申請到的緩存進(jìn)行必要的設(shè)置。其實(shí)緩沖區(qū)的設(shè)置是很重要的,因?yàn)榫彺娴淖饔迷趥鬏敂?shù)據(jù)上占有舉足輕重的地位,他是CPU和內(nèi)存的中間產(chǎn)物,緩存指的是臨時文件交換區(qū),電腦經(jīng)常把常用的文件從存儲器里提取出來存放到臨時緩存里面。還要設(shè)置緩存的訪問方式以及使用內(nèi)存映射的訪問方式,對緩存進(jìn)行映射,并建立緩存隊(duì)列。具體設(shè)置方法如下圖(圖7)所示。</p><p><b> 緩沖區(qū)設(shè)置流程圖<
80、/b></p><p> 6) 視頻圖像采集到的數(shù)據(jù)處理</p><p> 設(shè)置視頻設(shè)備屬性時,需要用到這兩個宏定義VIDIOC_STREAMON和VIDIOC_STREAMOFF。通過對視頻設(shè)備進(jìn)行設(shè)置VIDIOC_STREAMON和VIDIOC_STREAMOFF來控制視頻設(shè)備的開始和停止采集數(shù)據(jù),在設(shè)置開始和停止中間通過對緩存的輪換讀取來獲得視頻設(shè)備采集到的視頻數(shù)據(jù)并對其進(jìn)
81、行數(shù)據(jù)處理(這里說的數(shù)據(jù)處理主要書對圖像進(jìn)行壓縮(也就是進(jìn)行huffman編碼)和傳輸兩個部分,具體的處理方式在后面做詳細(xì)介紹)。獲得視頻設(shè)備采集到的數(shù)據(jù)需要調(diào)用VIDIOC_QBUF和VIDIOC_DQBUF兩個宏定義來控制對緩沖隊(duì)列進(jìn)行進(jìn)/出隊(duì)操作。詳見下圖(圖8)。</p><p><b> 視頻數(shù)據(jù)處理流程圖</b></p><p><b> 服
82、務(wù)器:數(shù)據(jù)處理</b></p><p><b> 模塊功能描述</b></p><p> 完成圖像壓縮、編碼、封裝。在此需要設(shè)計web服務(wù)器端程序,有的是用QT界面設(shè)計編程來建立的,并且建立web服務(wù)器以供客戶端進(jìn)行訪問。</p><p> 對從攝像頭設(shè)備采集到的視頻數(shù)據(jù)進(jìn)行一次huffman編碼,把圖片轉(zhuǎn)換成jpeg或者jp
83、g格式的。這個步驟也可以在客戶端完成,但是考慮到瀏覽器不支持這項(xiàng)操作。為了實(shí)現(xiàn)C/S架構(gòu)的同時,也支持B/S架構(gòu),我們就在服務(wù)器端進(jìn)行這些數(shù)據(jù)的處理。</p><p> 建立一個基于TCP/IP協(xié)議的web服務(wù)器,當(dāng)有客戶端進(jìn)行連接服務(wù)器時采用HTTP協(xié)議的網(wǎng)絡(luò)發(fā)送經(jīng)過處理后的視頻數(shù)據(jù)幀,這些數(shù)據(jù)已經(jīng)經(jīng)過HTTP協(xié)議進(jìn)行了封裝。</p><p><b> 技術(shù)概要</b
84、></p><p> 這一模塊主要涉及到對原始圖像數(shù)據(jù)進(jìn)行的壓縮編碼以及基于C語言的網(wǎng)絡(luò)和多線程的編程。</p><p> 關(guān)于視頻的壓縮編碼部分在視頻監(jiān)控系統(tǒng)的設(shè)計中只是簡單的調(diào)用現(xiàn)有接口(API),不做需要深入的研究。視頻監(jiān)控系統(tǒng)通過對基于C語言的socket網(wǎng)絡(luò)編程和多線程編程熟悉,可以參考《UNIX環(huán)境高級編程》中的網(wǎng)絡(luò)編程部分,就可以實(shí)現(xiàn)網(wǎng)絡(luò)服務(wù)器的功能以及多任務(wù)的處理
85、功能。</p><p> 邏輯概要及程序流程圖</p><p> 這一模塊的作用實(shí)際上是上一個模塊中提到的“數(shù)據(jù)處理”部分。由于視頻設(shè)備采集到的每一幀視頻數(shù)據(jù)經(jīng)過了huffman編碼以后都會變成一張完整的圖片,所以我們在下面發(fā)送視頻數(shù)據(jù)的傳輸部分需要做一個簡單的數(shù)據(jù)封裝,下面分別給出了程序流程圖(圖9)和數(shù)據(jù)封裝格式(圖10)。</p><p> 在這個模塊中
86、功能的實(shí)現(xiàn)是可以參照一下圖示進(jìn)行程序的編寫,這里已經(jīng)給出了模塊的設(shè)計框架。</p><p> 服務(wù)器端數(shù)據(jù)處理流程圖</p><p> 服務(wù)器端數(shù)據(jù)幀封裝結(jié)構(gòu)圖</p><p><b> 客戶端:數(shù)據(jù)獲取</b></p><p><b> 模塊功能描述</b></p><
87、p> 客戶端獲取視頻數(shù)據(jù),主要利用socket連接方式獲取??蛻舳耸紫认蚍?wù)器端發(fā)送視頻數(shù)據(jù)請求,根據(jù)服務(wù)器端的響應(yīng)信息,從而可以接收視頻數(shù)據(jù)。客戶端與服務(wù)器端需要建立網(wǎng)絡(luò)連接必須要進(jìn)行了“三次握手”,才連接成功,然后視頻監(jiān)控系統(tǒng)的客戶端向服務(wù)器端發(fā)送視頻數(shù)據(jù)。</p><p> 客戶端與服務(wù)器建立TCP連接,向服務(wù)器發(fā)送了http請求,接收服務(wù)器返回的響應(yīng)信息,并且根據(jù)響應(yīng)信息按照一定的格式進(jìn)行數(shù)據(jù)的
88、接收,接收到數(shù)據(jù)后還要根據(jù)服務(wù)器端數(shù)據(jù)幀的封裝結(jié)構(gòu),將有效數(shù)據(jù)(既視頻數(shù)據(jù)幀)提取出來,然后就能夠?qū)⑻崛〕鰜淼囊曨l數(shù)據(jù)渲染出來。</p><p><b> 技術(shù)概要</b></p><p> 客戶端獲取數(shù)據(jù)模塊主要涉及到基于TCP/IP協(xié)議的客戶端編程,關(guān)于客戶端編程的方法比較靈活,在編程語言框架的選擇方面也比較廣泛,其實(shí)有多種編程語言都可以實(shí)現(xiàn)客戶端程序的編寫,
89、我選用的是用QT編程來實(shí)現(xiàn),以此為例來實(shí)現(xiàn)客戶端程序的編寫。</p><p><b> 邏輯概要及流程圖</b></p><p> 這一模塊主要涉及到TCP客戶端編程和對從服務(wù)器接收到的數(shù)據(jù)進(jìn)行分割處理,TCP客戶端的編程比較程序化,有統(tǒng)一的編程步驟和一般流程,數(shù)據(jù)分割需要根據(jù)服務(wù)端數(shù)據(jù)發(fā)送情況(即數(shù)據(jù)的封裝結(jié)構(gòu))來確定。下面給出TCP網(wǎng)絡(luò)編程流程(圖11)和數(shù)據(jù)
90、分割步驟(圖12)。</p><p> TCP客戶端編程利用的是服務(wù)器socket()來連接,這里是個難點(diǎn),在測試的時候出現(xiàn)了一些小錯誤。提示錯誤是:bind error 綁定出錯。</p><p> 服務(wù)器與客戶端TCP網(wǎng)絡(luò)編程流程圖</p><p> 客戶端的數(shù)據(jù)分割流程圖</p><p> 客戶端:QT視頻渲染</p>
91、;<p><b> 模塊功能描述</b></p><p> 我們在客戶端看到的視頻圖像其實(shí)是一張一張單獨(dú)的圖片連續(xù)不斷的刷新所形成的,視頻監(jiān)控系統(tǒng)中主要是通過QT中的安全機(jī)制——信號(signals)和槽(slots)以及QT控件的繪圖事件來刷新圖片的。所以這一模塊中主要是將上一模塊所接收到的視頻幀數(shù)據(jù)通過QT中的繪圖事件(PaintEvent)將圖片刷新加載到控件上,從而
92、形成了連續(xù)的視頻圖像,實(shí)現(xiàn)了視頻渲染的功能,經(jīng)過后續(xù)的一些測試,發(fā)現(xiàn)這一過程將會消耗大量的CPU資源。</p><p><b> 技術(shù)概要</b></p><p> 這一模塊主要涉及到了QT的編程和繪圖事件的使用,包括了對一些控件的控制和線程的控制。由于循環(huán)顯示圖像時候會阻塞圖形界面,所以此時應(yīng)該用一個單獨(dú)的線程來完成刷新圖像的工作。對于QT相關(guān)一些知識請?jiān)敿?xì)參考
93、QT官方提供的API文檔。</p><p><b> 邏輯概要及流程圖</b></p><p> 視頻圖像的刷新流程,這一模塊主要用到信號和槽的機(jī)制來實(shí)現(xiàn)的??蛻舳艘曨l渲染模塊流程可參考下圖(圖13)。</p><p> 客戶端視頻渲染模塊流程圖</p><p><b> 視頻監(jiān)控系統(tǒng)測試</b&
94、gt;</p><p><b> 系統(tǒng)測試目標(biāo)</b></p><p> 軟件測試是一門充滿了智慧和挑戰(zhàn)性的科學(xué),它涉及到了工具技術(shù)的使用、方法論、過程論等諸多技術(shù)領(lǐng)域。測試的目的就是為了找出并且解決程序開發(fā)過程中存在的Bug。軟件測試的最終目標(biāo),就是為了更早地、更快地將軟件程序或軟件產(chǎn)品中所存在的各種缺陷找出來,并告訴軟件開發(fā)人員,讓他們更好地完善軟件系統(tǒng)。最終
95、能夠及時的發(fā)布出一個高質(zhì)量,高性能的軟件產(chǎn)品,更好地滿足客戶的所提出的軟件需求。</p><p> 測試分為黑盒測試與白盒測試,其主要區(qū)別是:黑盒測試只需對其功能、性能等進(jìn)行測試就行了而不需要深入去了解程序的具體實(shí)現(xiàn)代碼與軟件的功能實(shí)現(xiàn)過程;而白盒測試則需要了解程序代碼的編寫以及實(shí)現(xiàn)的過程,通過對底層代碼的了解從而找出程序的不足指出以及Bug。</p><p> 對于視頻監(jiān)控系統(tǒng)我們分
96、別進(jìn)行黑盒測試與白盒測試。</p><p><b> 系統(tǒng)測試過程</b></p><p> 視頻監(jiān)控系統(tǒng)的測試將分別對服務(wù)端和客戶端進(jìn)行,我們可以下執(zhí)行步驟。</p><p> 連接好USB攝像頭,在Linux終端運(yùn)行服務(wù)端程序,獲取攝像頭設(shè)備的數(shù)據(jù),如果攝像頭有不匹配或者連接問題,則會報錯。</p><p>
97、 如上一步正常則運(yùn)行客戶端程序,也就是采用QT設(shè)計的圖形化界面,其實(shí)在沒有開啟服務(wù)端程序時,也可以開啟客戶端,但是不能獲取到視頻數(shù)據(jù)。</p><p> 在客戶端輸入服務(wù)端的IP地址(如本地攝像頭IP為127.0.0.1),設(shè)置想要查看的窗口,按照自己的要求進(jìn)行監(jiān)控,還可以通過界面上shoot,通過服務(wù)端可以設(shè)計客戶端相關(guān)信息在圖形化界面上顯示出來,以便用戶查看。</p><p> 用
98、戶可以同時安裝多個USB攝像頭,通過客戶端查看各個USB攝像頭拍攝到的視頻。</p><p> 系統(tǒng)調(diào)試及運(yùn)行是的效果圖如下圖(圖14、圖15、圖16)所示。</p><p> 啟動系統(tǒng)效果圖(左:客戶端,右:服務(wù)端)</p><p> 客戶端準(zhǔn)備連接時效果圖(左:客戶端,右:服務(wù)端)</p><p> 系統(tǒng)網(wǎng)絡(luò)連接后效果圖(左:客戶
99、端,右:服務(wù)端)</p><p><b> 系統(tǒng)測試結(jié)果</b></p><p> 測試結(jié)果:功能基本實(shí)現(xiàn),目前未發(fā)現(xiàn)Bug。</p><p><b> 結(jié)論</b></p><p> 在視頻監(jiān)控系統(tǒng)課題的所設(shè)計和實(shí)現(xiàn)中,充分利用了Linux操作系統(tǒng)作為嵌入式操作系統(tǒng)的諸多優(yōu)勢,嵌入式Lin
100、ux系統(tǒng)下的視頻網(wǎng)絡(luò)監(jiān)控系統(tǒng)是計算機(jī)軟硬件、電工電子裝置以及網(wǎng)絡(luò)通信等多方面的有機(jī)結(jié)合而形成的,它主要以網(wǎng)絡(luò)化、交互性、智能化為特征,結(jié)構(gòu)較為復(fù)雜。如果采用OSI七層模型的內(nèi)容和形式,把相應(yīng)的控制模塊硬件、視頻數(shù)據(jù)采集、視頻數(shù)據(jù)的編碼、視頻數(shù)據(jù)的解碼和視頻監(jiān)控軟件以及開發(fā)環(huán)境的搭建等進(jìn)行有機(jī)結(jié)合,可以形成一個統(tǒng)一完整的系統(tǒng)框架。在Linux 操作系統(tǒng)中調(diào)用v4l2編程中的API接口和底層設(shè)備驅(qū)動程序來完成視頻捕獲操作。v4L2 是Lin
101、ux 操作系統(tǒng)中的內(nèi)核驅(qū)動,主要是關(guān)于視頻的開發(fā)。它為Linux操作系統(tǒng)中的各種視頻設(shè)備提供了統(tǒng)一的API編程接口,應(yīng)用程序可以通過這些接口函數(shù)進(jìn)行操縱各種不同的設(shè)備。結(jié)合了QT技術(shù)構(gòu)建了具有圖形化界面支持的嵌入式系統(tǒng)開發(fā)平臺,這種系統(tǒng)結(jié)構(gòu)模式是目前在PC上進(jìn)行視頻監(jiān)控系統(tǒng)開發(fā)的熱點(diǎn)。</p><p> 對未來視頻監(jiān)控的展望:未來的視頻監(jiān)控系統(tǒng)應(yīng)該更加趨向智能化、人性化、同時能夠自行的對異常情況分析判斷。另外在
102、不久的未來,視頻監(jiān)控系統(tǒng)還可具有安防互動功能,與各種傳感器,控制器鏈接,實(shí)現(xiàn)自動目標(biāo)跟蹤等功能。而且隨著4G通信技術(shù)的發(fā)展和成熟,視頻監(jiān)控系統(tǒng)的成本也應(yīng)該進(jìn)一步降低,并且能夠?qū)⑵湟浦驳揭苿咏K端,以適應(yīng)更廣泛領(lǐng)域的需要。</p><p> 由于我還是個初學(xué)者,雖然最終能夠?qū)崿F(xiàn)了一些功能,但是對中間相關(guān)的一些模塊開發(fā),比如驅(qū)動等等還不是很熟悉,還有待進(jìn)一步學(xué)習(xí)和掌握。論文的撰寫還有很多不足,還望老師多多指正。<
103、;/p><p><b> 參考文獻(xiàn)</b></p><p> 凌進(jìn).網(wǎng)絡(luò)視頻監(jiān)控技術(shù)的應(yīng)用和發(fā)展[D].北京:北京郵電大學(xué).2007.6,7:38.</p><p> 倪繼利.Linux內(nèi)核分析及編程[M].北京:電子工業(yè)出版社,2006.1,4:315.</p><p> 戴麗.基于Video4Linux的USB攝
104、像頭圖像采集實(shí)現(xiàn)[J].合肥工業(yè)大學(xué).2006,2:31.</p><p> 劉斌.基于嵌入式系統(tǒng)的視頻采集模塊的設(shè)計[D].西安電子科技大學(xué),2006,53:38.</p><p> 許海燕,付炎.嵌入式系統(tǒng)技術(shù)與應(yīng)用[M] .機(jī)械工業(yè)出版社,2002.</p><p> 鄒思軼.嵌入式Linux 設(shè)計與應(yīng)用[M] .清華大學(xué)出版社,2002.</p&
105、gt;<p> 劉富強(qiáng).數(shù)字視頻監(jiān)控系統(tǒng)開發(fā)及應(yīng)用[M ] .北京:機(jī)械工業(yè)出版社,2003.</p><p> 王英杰,陳祥獻(xiàn),耿晨歌.嵌入式網(wǎng)絡(luò)化多媒體視頻監(jiān)控系統(tǒng)的設(shè)計與實(shí)現(xiàn)[J ]</p><p> 薩默菲爾德(英),布蘭切特(加)[C.GUI.QT.4編程(第二版)] [電子書]</p><p> Linux窗口程序設(shè)計-QT4精彩實(shí)
106、例分析-PTF [電子書]</p><p><b> 致 謝</b></p><p> 我們大學(xué)的學(xué)習(xí)今天已經(jīng)畫了一個完美的句號,感謝大學(xué)四年以來,各位老師對我的諄諄教誨,感謝**,感謝大家有緣能在生命中重要的四年,我的朋友,同學(xué),老師,在這四年來給我的支持與關(guān)懷。</p><p> 為順利完成此次設(shè)計,我傾注了大量的時間和精力,最終取
107、得了成功。當(dāng)然,這份成功的取得是與老師和同學(xué)的熱心幫助也是分不開的。在畢業(yè)課題設(shè)計過程當(dāng)中,**老師給予了我悉心的分析和技術(shù)上的指導(dǎo),同時也提供了許多寶貴的想法和建議。于此,謹(jǐn)向他們致以最誠摯的謝意。</p><p> 首先,感恩父母在這二十幾年以來對我的養(yǎng)育和照撫、體貼和關(guān)懷。正是在他們的慈愛與呵護(hù)下,我才能快樂地成長、勇敢地追求自己的夢想。</p><p> 其次,感謝這么多年以來
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于linux、qt的視頻監(jiān)控系統(tǒng)的設(shè)計與實(shí)現(xiàn)--畢業(yè)論文
- 基于QT+Linux的實(shí)驗(yàn)室視頻監(jiān)控系統(tǒng)設(shè)計與實(shí)現(xiàn).pdf
- 基于嵌入式linux視頻監(jiān)控系統(tǒng)畢業(yè)論文
- 基于嵌入式linux視頻監(jiān)控系統(tǒng)畢業(yè)論文
- 基于ARM-Linux的視頻監(jiān)控系統(tǒng)設(shè)計與實(shí)現(xiàn).pdf
- 畢業(yè)論文 基于labview的視頻監(jiān)控系統(tǒng)的設(shè)計
- 視頻監(jiān)控系統(tǒng)畢業(yè)論文設(shè)計
- 基于Linux的移動遠(yuǎn)程視頻監(jiān)控系統(tǒng)的設(shè)計與實(shí)現(xiàn).pdf
- 視頻監(jiān)控系統(tǒng)設(shè)計 畢業(yè)論文
- 基于linux和android的遠(yuǎn)程監(jiān)控系統(tǒng)——畢業(yè)論文
- 基于LINUX的視頻監(jiān)控系統(tǒng)設(shè)計.pdf
- 基于嵌入式Linux的視頻監(jiān)控系統(tǒng)的設(shè)計與實(shí)現(xiàn).pdf
- 視頻監(jiān)控系統(tǒng)設(shè)計畢業(yè)論文
- 基于linux和android的遠(yuǎn)程監(jiān)控系統(tǒng)——畢業(yè)論文
- 基于Linux環(huán)境的視頻監(jiān)控前端設(shè)計及系統(tǒng)實(shí)現(xiàn).pdf
- 畢業(yè)論文——無線視頻監(jiān)控系統(tǒng)設(shè)計
- 視頻監(jiān)控系統(tǒng)畢業(yè)論文設(shè)計1
- 基于嵌入式Linux的智能視頻監(jiān)控系統(tǒng)的設(shè)計與實(shí)現(xiàn).pdf
- 畢業(yè)設(shè)計(論文)-基于嵌入式linux的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的研究與設(shè)計- (1)
- linux操作系統(tǒng)下基于qt的bt下載軟件的設(shè)計與實(shí)現(xiàn)論文
評論
0/150
提交評論