版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PAGE1PAGE監(jiān)控廣告一體機設計與制造監(jiān)控廣告一體機設計與制造摘要在如今網絡信息化快速發(fā)展的時代里,市場需求而產生了一種網絡終端多媒體信息發(fā)布及顯示系統(tǒng),即多媒體廣告機。它具有字幕顯示、圖片播放、音視頻播放等功能。和平日里的傳統(tǒng)廣告方式相比,這種多媒體廣告機的內容更新比較方便,內容發(fā)布的種類和信息也可以比較多,視覺和聽覺的感官比較強。有以上這些特點,它節(jié)省了人力物力,讓廣告的投放觸手可及,可以使商家的利益最大化更容易實現(xiàn)。所以隨著社會在進步,多媒體廣告機的需求也正在變得越來越多。另一方面得益于國內政策的扶持,并且隨著民生安全意識的提高,安防監(jiān)控的市場變得越來越大,市場推動技術,現(xiàn)在國內外的安防監(jiān)控行業(yè)在迅速發(fā)展,我國浙江的??荡笕A在安防領域已經做到世界領先。本文研究的主要內容是利用Linux嵌入式系統(tǒng)設計的優(yōu)良性能,使用一些Ubuntu下Linux系統(tǒng)支持的開源軟件及工具包,包括Mplayer視頻播放器,QtCreator,??低晹z像頭及對應SDK等,底層利用C語言編程,從軟件層面出發(fā),實現(xiàn)多媒體廣告機的各項功能。本文的創(chuàng)新點在于,利用監(jiān)控系統(tǒng)的功能,將另一處的監(jiān)控畫面實時投屏顯示到多媒體廣告機。多媒體廣告機依舊可以實現(xiàn)視頻播放,圖片播放,文字滾動播放,時間顯示等功能。本論文也是為監(jiān)控廣告一體機系統(tǒng)進行一次方案的解決嘗試,為大家提供思路。關鍵詞:多媒體廣告機,Linux,嵌入式系統(tǒng),QT,視頻監(jiān)控Nowadays,withtherapiddevelopmentofInternetinformation,amultimediainformationpublishinganddisplayingsystemofnetworkterminal,namelymultimediaadvertisingmachine,hasemergedunderthemarketdemand.Ithassubtitledisplay,pictureplayback,audioandvideoplaybackandotherfunctions.Comparedwiththetraditionaladvertisingmethods,themultimediaadvertisingmachineismoreconvenienttoupdatethecontent,releasemorekindsofcontentandinformation,andhasstrongervisualandauditorysenses.Withthesecharacteristics,itsavesnumerousmanpowerandmaterialresources,makesadvertisingaccessible,andmakesbusinessinterestscanbemaximizedmoreeasily.Therefore,withtheprogressofsociety,thedemandformultimediaadvertisingmachineisbecomingmoreandmoreintense.Thankstothesupportofdomesticpolicies,andwiththeimprovementofpeople'slivelihoodandsafetyawareness,thesecuritymonitoringmarkethasbecomemoreandmorepowerful.Themarketdemandhaspromotedthedevelopmentoftechnology,andnowthesecuritymonitoringindustryisdevelopingrapidlyathomeandabroad.China'sHaikangDahuainZhejiangProvincehasbecomeaworldleaderinthefieldofsecurity.Securitymonitoringhasbeenusedinallwalksoflife,includingshops,streets,schools,unitsandhomes.Therefore,thevideosurveillancemoduleofthisprojectisbasedonHaikang’sproductsforsecondarydevelopment.TakingadvantageoftheexcellentperformanceofLinuxembeddedsystemdesignandundersupportedbyLinuxsystemofUbuntu,thispaperusessomeopensourcesoftwareandtoolkits,includingMplayervideoplayer,ffmpeg,Qtcreator,Haikangweivideodeviceandcorrespondingsdk,etc.ThebottomlayerisprogrammedinClanguage,whichcombinescameraequipment,advertisingmachineandserverintoonesystem.Therefore,ordinaryuserscannotonlymonitorandmanagetheLAN'scameraequipmentinrealtime,manageandreleaseadvertisingresources,butalsodisplaythemonitoringtothemultimediaadvertisingmachineinrealtime,whichisalsotheinnovationofthispaper.InUniversitycanteensandcompanycanteens,thereareadvertisingmachineswithlargescreensandmonitoringprojectionscreensdisplayingtheinternalhealthandsafetyofthecanteens.Usingthesescreensseparatelywillcausethewasteofresourcesandinconvenienceofspace.Therefore,thedesignofthissystemcannotonlyreleaseandmanagesomeadvertisingresourcesinabetterwaybutalsoplaysomevideosforwatching.Whenneeded,itcanbeswitchedtothemonitoringchannel,whichisconvenientforstudentstowatchtheinternalsituationofthecanteen.Accordingly,itisconducivetosavingthecostofreleasingresourcesandfacilitatingmanagement,whichhaspracticalsignificanceindailylifeandbecomesthemaininnovationinthisproject.Keywords:Multimediaadvertisingmachine,Linux,Embeddedsystem,QT,
目錄1 緒論 11.1課題的來源及意義 11.2國內外的發(fā)展現(xiàn)狀 11.3研究的主要內容 21.4論文的組織框架 32 系統(tǒng)平臺介紹 42.1硬件平臺環(huán)境 42.1.1廣告機端 42.1.2攝像頭端 42.2軟件平臺環(huán)境 42.2.1VMwork系統(tǒng)平臺 42.2.2QtCreator 52.2.3攝像頭SDK 52.2.4MPlayer視頻播放器 52.2.5交叉編譯環(huán)境 62.2.6SQLite數(shù)據(jù)庫 63 監(jiān)控廣告一體機的框架設計 73.1系統(tǒng)的整體框架 73.2系統(tǒng)模塊的功能劃分 83.2.1服務器端功能劃分 83.2.2攝像頭端功能劃分 93.2.3廣告機端功能劃分 94 監(jiān)控廣告一體機的設計與實現(xiàn) 124.1攝像頭端 124.1.1實時監(jiān)控模塊的設計 124.1.2實時監(jiān)控模塊實現(xiàn) 134.2服務器端 144.2.1服務器端顯示模塊的設計與實現(xiàn) 144.2.2服務器端數(shù)據(jù)庫模塊的設計與實現(xiàn) 184.2.3服務器端網絡通訊模塊的設計與實現(xiàn) 194.2.4服務器端文件發(fā)送模塊的設計與實現(xiàn) 224.2.5服務器端屬性設置模塊的設計與實現(xiàn) 234.2.6服務器端文件管理模塊的設計與實現(xiàn) 244.3廣告機端 264.3.1廣告機端圖片顯示模塊的設計與實現(xiàn) 264.3.2廣告機端文本顯示模塊的設計與實現(xiàn) 274.3.3廣告機端時間顯示模塊的設計與實現(xiàn) 284.3.4廣告機端視頻顯示模塊的設計與實現(xiàn) 284.3.5廣告機端網絡通訊模塊的設計與實現(xiàn) 305 系統(tǒng)的測試與分析 325.1圖片顯示模塊的測試 325.2視頻顯示模塊的測試 335.3文字顯示模塊的測試 335.4智能監(jiān)控模塊的測試 34總結與展望 36參考文獻 38致謝 40PAGEPAGE40緒論課題的來源及意義該項目是來源于作者生活中自己的想法,自擬的命題。如今,是數(shù)據(jù)爆炸的時代,廣告投放的需求越來越高,我們在社會的每個角落都可以看到廣告。它主要分為兩種形式。第一種是線上廣告,各種大網站或者終端服務平臺通過廣告平臺投放廣告。第二種是線下廣告,譬如多媒體廣告機,用來屏幕播放視頻廣告,電影、圖片、顯示文字信息等,又或者是海報,傳單等[1]。每種廣告方式都有自己的優(yōu)缺點。但是由于多媒體廣告機的內容更新比較方便,內容發(fā)布的種類和信息也可以比較多,所以推廣的程度也比較大。廣告的發(fā)布系統(tǒng)是數(shù)字多媒體信息發(fā)布系統(tǒng)的在傳媒領域的具體應用,因而本文會對多媒體信息管理、數(shù)字標牌等應用具有一定的借鑒意義與應用價值[2-4]。
另一方面,近年來,全球安防監(jiān)控行業(yè)一直體現(xiàn)出快速的發(fā)展趨勢,得益于國內政策的扶持,“平安城市”,“雪亮工程”,“智慧城市”等政府性項目扶持了一大批優(yōu)秀的安防監(jiān)控企業(yè)。除了政策的因素外,隨著生活水平的提高,人們的安全意識也逐漸增強,學校,眾多企業(yè)、機關單位、家庭、商鋪,都成為了推動安防市場發(fā)展的重要因素,現(xiàn)在基本上大小城市,各種場合都會有監(jiān)控攝像頭的身影[5]。國內以海康和大華為首的安防監(jiān)控企業(yè)占據(jù)了全世界比重超過30%的安防市場,他們擁有完善的并以視頻為核心的解決方案,所以在他們的基礎上進行開發(fā),會是一個很好的選擇[6]。因為本人發(fā)現(xiàn)在大學的飯?zhí)煤臀覀內粘I钪泄究吹降氖程脙炔?,有大屏幕的廣告機,也有展示食堂內部衛(wèi)生安全的監(jiān)控投影屏幕,分開的來使用會造成資源的浪費,以及空間的不方便,設計本系統(tǒng)能更好地發(fā)布,管理一些廣告的資源,還能播放視頻用于觀看,結合攝像頭設備,需要的時候可以投屏監(jiān)控畫面到廣告機,學生可以觀看到食堂內部情況,這樣既利于商家節(jié)省成本發(fā)布資源也方便了管理,有生活上實用的意義。我相信生活中還有許多類似的場景,所以本論文也是為以后相似的市場環(huán)境進行一次方案的解決嘗試,為大家提供思路。國內外的發(fā)展現(xiàn)狀國內外的多媒體廣告機的發(fā)展迅速。從其所依賴的硬件架構來分可分為:基于電腦計算機的,基于嵌入式系統(tǒng)播放器的,基于機頂盒的。從采用的技術來看的話可以大致分為:基于網絡技術廣告機,基于液晶技術的廣告機,基于藍牙技術的多媒體廣告機等。由于科技發(fā)展飛快,硬件價格的不斷下降以及嵌入式技術的不斷成熟,以嵌入式為核心方案的廣告機變得最為普及[6]。基于Linux環(huán)境進行的廣告機開發(fā),穩(wěn)定,安全,具有實時性,可拓展性,同步性,復用性,顯示靈活等特點。所以本項目中采用arm+linux的方案是一種很好的選擇。技術的可行性和使用價值都很強[7]。在視頻監(jiān)控行業(yè),監(jiān)控攝像頭從看的見到看得清轉變,以前的攝像頭只能做一些記錄,查詢回放等,現(xiàn)在已經發(fā)展到智能帶Ai的IPcamera,俗稱網絡攝像頭。不僅可以擁有高清的畫質,還可以對記錄的人或物體進行識別,就異常情況進行提醒或報警,將隱患消除。視頻監(jiān)控已從模擬市場階段到數(shù)字市場發(fā)生歷史性轉折,標準更加開放,高清視頻在安防領域產生巨大的影響[8]。 實際上國內外將攝像頭和廣告機結合在一起的系統(tǒng)案例還是比較少。因為之前并沒有太大的市場需求,但是往后隨著這種室內外有廣告機和監(jiān)控設備場景的增多,本人覺得研究網絡攝像頭和廣告機,做一個軟件系統(tǒng)的結合是必不可少的。不僅僅是為了方便管理,也是為了更好地節(jié)省成本,符合實際的需求。研究的主要內容本項目是基于ARM+Linux環(huán)境的開發(fā)平臺開發(fā)的監(jiān)控廣告一體機。本項目分為兩個部分:軟件部分和硬件部分。硬件部分主要是對的三星S5p6818開發(fā)板進行簡述,另外有??低暤漠a品DS-2CD3110D-IW2130萬室內無線錄音攝像頭半球監(jiān)控探頭作為攝像頭端。這個項目主要是著重軟件部分的研究,所以我先從軟件的整體框架設計進行闡述,然后對各個子系統(tǒng)模塊進行深入研究。主要從以下三個方面進行研究:1、廣告端:利用Ubuntu下的QT畫界面,將整個顯示區(qū)域分為四個區(qū)域部分:文字滾動播放區(qū)域、視頻播放區(qū)域、時鐘播放區(qū)域、圖片播放區(qū)域,并且廣告機端上還可以實時投屏顯示攝像頭的畫面顯示到視頻播放區(qū)域,此時視頻播放暫停。接收服務器端發(fā)過來的各種文件和指令,分類解析進行對應操作[9]。2、服務器端:用于獲取實時視頻監(jiān)控畫面并可在服務器端查看,對實時的監(jiān)控畫面進行抓圖和錄像,可以給廣告機端進行信息發(fā)布,包括文字信息,txt文本信息,視頻信息,圖片信息等。還可以對廣告機端進行實時操控,例如控制客戶端視頻播放的速度,次數(shù),快進,快退,暫停等。也可以控制可廣告機端即客戶端實時文件的播放及刪除。后臺接數(shù)據(jù)庫,保存歷史發(fā)送的文件記錄及廣告機端還存在的文件信息。3、攝像頭端:利用??低暤漠a品DS-2CD3110D-IW2監(jiān)控系統(tǒng)的功能,研究其SDK,進行二次開發(fā),這個模塊的功能就是進行實時畫面采集,作為服務器和廣告機端實時投屏畫面的來源。論文的組織框架根據(jù)本項目的實際研究過程,本文將分為六個章節(jié)對項目進行闡述,具體的安排如下:第一章是緒論。主要從課題的來源及意義、課題相關國內外的發(fā)展狀況、項目研究的主要內容進行分析描述。第二章是系統(tǒng)平臺介紹,包括軟件平臺和硬件平臺。這部分是項目的平臺環(huán)境介紹,是課題進行的基礎。此部分重點介紹課題涉及到的開發(fā)板,攝像頭設備,VMwork下linux操作系統(tǒng)平臺,各項目中用到的各種開源包及其的配置過程。第三章是監(jiān)控廣告一體機系統(tǒng)的總體結構設計介紹。綜合分析監(jiān)控廣告一體機設備的特性,先分析總體框架,后按照功能技術的實現(xiàn)特點,以高內聚低耦合的設計原則,細化為各個功能模塊的協(xié)作關系。第四章是監(jiān)控廣告一體機的各個具體模塊實現(xiàn),小的方面從編碼和模塊邏輯進行分析。大的方面從服務器端,攝像頭端,以及廣告端進行分類分析。第五章是系統(tǒng)的測試與分析,對做的模塊進行測試說明,及遇到的問題bug給出解決方案。并給出運行的效果。最后是本項目的總結與展望,對整個項目過程進行回顧和總結,同時指出本系統(tǒng)不足的地方和未來系統(tǒng)功能發(fā)展的方向。系統(tǒng)平臺介紹硬件平臺環(huán)境廣告機端監(jiān)控廣告一體機系統(tǒng)控制中心的設備為普通PC機。廣告機顯示終端為三星公司S5P6818開發(fā)板,它是一種基于64位RISC處理器的片上系統(tǒng)(SoC),適用于平板電腦和手機。設計采用28nm低功耗工藝,S5P6818的特點包括:(1)Highest內存帶寬(2)
FullHD顯示(3)
1080p60幀視頻解碼30和1080p幀編碼硬件(4)3D圖形硬件(5)High-speedeMMC4.5和USB2.0等接口S5P6818使用Cortex-A53octa內核,它基于ARMv8-A架構,并提供了更多的功能性能為ARMv732位代碼在AArch32執(zhí)行狀態(tài)。S5P6818提供了最佳的3D圖形性能與廣泛的API,如OpenGLES1.1,2.0。優(yōu)越的3D性能完全支持全高清顯示。 攝像頭端系統(tǒng)的攝像頭端采用的是海康的產品130萬室內無線錄音攝像頭半球監(jiān)控探頭DS-2CD3110D-IW2。它的最高分辨率為1280*960,并在該分辨率下可輸出實時預覽圖像。支持Wi-Fi網絡,適用于不適合布網線的場所,支持背光補償,內置麥克風。另外,設備支持SDK的二次開發(fā),為我們實時畫面采集給出了很好的解決方案。 軟件平臺環(huán)境VMwork系統(tǒng)平臺VMwareWorkstation(中文名“威睿工作站”)是一款功能強大的桌面虛擬計算機軟件,普通用戶可以在單一的桌面上同時運行不同的操作系統(tǒng),譬如
system+linux。最主要的功能作為虛擬計算機,也就是我們平時所說的虛擬機,實際就是一臺軟件模擬出來的電腦,然后在里面裝我們需要的軟件,比如說我們win8,這樣我們就可以在現(xiàn)有的計算機上去看一個新的操作系統(tǒng)。本項目利用VMwork啟動Linux系統(tǒng),在其上進行開發(fā),用于項目的開發(fā)。QtCreator為了讓研發(fā)人員能應用QT來進行輕易快速的開發(fā),QT的公司開發(fā)出了一款輕量級的集成開發(fā)環(huán)境QtCreator,這個集成的環(huán)境軟件可以在許多平臺使用,譬如windows,Linux和MacOSX。在VMwork上安裝QT,方面我們項目的開發(fā)。 QtCreator有許多方便好用的地方,包括C++編輯器,瀏覽類和文件的工具,項目生成向導等。為了幫助新人用戶快速入門運行項目,提高Qt開發(fā)人員的效率。QtCreator集成了信號與槽調試器,并且有了格式構建器和集成了QtDesigner的可視化布局,用戶點擊運行就可以運行自己的項目。攝像頭SDK項目中實時畫面的獲取,都是基于海康威視的設備DS-2CD3110D-IW2半球攝像頭,它本身作為一個視頻端的服務器存在,按照??低暤陌惭b方法完成后,配置它的網段與本地電腦相同。然后從??档墓倬W下載linux64位的SDK開發(fā)包,在QT的本地工程目錄pro文件include其動態(tài)庫及頭文件,即可利用其接口進行開發(fā)。MPlayer視頻播放器MPlayer是一款開源的多媒體播放器,它可以在許多系統(tǒng)上運行。它自帶的音頻、視頻解碼器播放大多數(shù)MPEG/VOB、AVI、Ogg/OGM、VIVO、RoQ、ASF/WMA/WMV、QT/MOV/MP4、RealMedia、NuppelVideo、FLI、YUV4、MPEG、Matroska、NUTFILM、PVA文件,支持許多原生的XAnim和Win32DLL編解碼器。你可以觀看錄像帶,SVCD,DVD,3ivx,DivX3/4/5,WMV甚至H.264電影。和其他播放器相比,它對系統(tǒng)的配置要求相對較低,MPlayer播放器運行過程中資源占用率也低,所以本系統(tǒng)采用MPlayer作為視頻播放器是一個很好的選擇。MPlayer作為播放器完全免費。節(jié)約了我們的開發(fā)成本,也提升了系統(tǒng)的安全性。 MPlayer的配置方法也比較簡單,先去官網下載MPlayer-1.3.0的軟件包,然后經研究總結為,先到./confiure配置libmad,利用Vim打開文件可看到要配置的參數(shù),主要是配置了--prefix和--codecsdir(額外編解碼器,用于播放錄制的H264格式視頻)。然后make和makeinstall即可。后面移植到開發(fā)板的時候,則需要將其編譯工具鏈改為arm-linux,再如上重新編譯,后拷貝到開發(fā)板/bin目錄,完成該工具的移植[10]。交叉編譯環(huán)境嵌入式系統(tǒng)是一個資源受到限制的系統(tǒng),直接在嵌入式系統(tǒng)上編寫自己的應用程序是很難的。為了解決這問題,我們可以先在計算機上寫程序,再通過交叉編譯或本地編譯生成嵌入式平臺可以運行的代碼格式,然后燒寫進開發(fā)板等特定平臺上運行。在arm上面運行程序是不能在PC上運行的。PC上是可以編譯出能在arm平臺上運行的程序,但是要用到一個工具,叫做交叉編譯工具器,而交叉工具鏈是交叉編譯環(huán)境所需工具的集合體。是搭建編譯環(huán)境所需軟件的安裝載體。主要包括1.交叉鏈接器,例如arm-linux-ld。2.交叉編譯器,例如arm-linux-gcc。3.交叉匯編器,例如arm-linux-as[11]。交叉編譯器安裝方法是:將ext-toolchain.tar.bz2工具軟件包解壓后,創(chuàng)建軟鏈接,再到Ubuntu下/etc/bash.bashrc添加環(huán)境變量,source即生效,安裝完畢。SQLite數(shù)據(jù)庫SQLite,它被包含在一個比較小的C庫中。它是一個小型的數(shù)據(jù)庫。因為它占用的系統(tǒng)資源很低,在嵌入式開發(fā)中,幾百K這么小的內存就可以了。以至于現(xiàn)在很多嵌入式的產品都會考慮到用用SQLite。并且,它支持許多不同種類的主流操作系統(tǒng),包括Linux,Unix,Windows等操作系統(tǒng)。和許多語言也有很好的兼容性。與PostgreSQL和mysql相比,它的運行速度更快[12,13]。SQLite不是一個獨立的進程,我們在編程調用的時候主要是調用它給出API。這就是為什么和其他數(shù)據(jù)庫相比,它的運行速度更快的原因。采取調用API的通信協(xié)議,在對延遲時間,整體簡單性,消耗總量上有比較良好的作用。在使用的時候,它的數(shù)據(jù)本身及索引,表和定義等都存儲在一個文件。它在開始一個事物的時候就鎖定了整個文件,然后完成其調用。監(jiān)控廣告一體機的框架設計系統(tǒng)的整體框架從課題的來源出發(fā),分析項目需求。我們平時生活中在學校食堂或者是公司等公共場所,有大屏幕的廣告機用于播放視頻,電影,圖片,或者是一些新聞信息。另一個部分,在大學飯?zhí)脙炔坑姓故臼程脙炔堪踩l(wèi)生的監(jiān)控投影在屏幕上,既然有這兩塊顯示屏,而投影監(jiān)控的使用率又比較低。分開的使用會造成資源的浪費,以及空間的不方便。因此設計本系統(tǒng)是為了更好地管理及發(fā)布一些廣告的資源(圖片,文字等),還能播放視頻用于觀看,特定的時候投屏實時的攝像頭畫面于廣告機,學生可以觀看到食堂內部情況,這樣就既節(jié)省了資源也方便了管理,有效地降低商家的成本。根據(jù)項目的實際需求,綜合分析智能監(jiān)控廣告一體機的設備的特性。系統(tǒng)需要有以下的一些功能。首先,在屏幕顯示方面,要循環(huán)播放列表視頻,在播放視頻的區(qū)域,特定的時間被動的控制或者用戶主動的控制,都可以使視頻停止播放,然后切換投屏監(jiān)控畫面到視頻播放的區(qū)域。在視頻播放的時候,用戶也可以對音視頻進行快進、快退等操作,播放速度等也可以設置。第二,圖片播放區(qū)域,正常情況下,按照一定的時間秒數(shù)循環(huán)顯示已有的圖片資源,用戶可以控制這個時間間隔。第三,文字滾動區(qū)域,正常讀取已有的txt文本資源信息,以行的方式進行滾動顯示。循環(huán)顯示每一個文本的內容,用戶可以控制實時顯示的文本。第四,應有時間顯示區(qū)域,和本地的電腦時間進行同步。第五,應該有系統(tǒng)的用戶管理方面模塊。第六,對發(fā)布的信息和資源可進行管理。第七,用戶可以預覽實時的監(jiān)控畫面。綜合上面所說,選擇前文所述的軟硬件環(huán)境,本系統(tǒng)各終端可劃分為以下三個系統(tǒng):攝像頭端(2)服務器端(3)廣告機端整體的框架圖如圖3.1: 圖3.1系統(tǒng)整體框架圖系統(tǒng)模塊的功能劃分根據(jù)上面的三個子模塊,我們又可以往下細分更多的模塊。這種設計也是符合日常設計的邏輯。本文從每個子系統(tǒng)的角度進一步分析,然后在下一章進行小模塊化具體的邏輯設計及代碼設計的實講解。服務器端功能劃分先從服務器端進行說明,服務器是整個項目的核心,也是處理邏輯比較多的地方。從系統(tǒng)的表面出發(fā),本項目是用的QT5.5版本進行界面的布局。一般來說,可以在QT上用其集成控件進行開發(fā)即QT設計師界面類,這種方式比較方便靈活。后面處理的時候也比較簡單。第二種是QT設計師進行開發(fā),這種方式對界面的布局者要求比較高,除了對各種位置有很好的把控以外,還需要對代碼和信號機制非常熟悉。整合的時候也非常麻煩。所以對于新人來講,選擇QT設計師類是很好的選擇。再從第一個頁面的用戶登錄說起,除了不可更改的管理員之外。本項目還可以注冊更多的用戶進行登錄。用戶的信息會存于SQlite數(shù)據(jù)庫之中。當輸入的用戶數(shù)據(jù)為數(shù)據(jù)庫的數(shù)據(jù)時,用戶才能登陸。登陸成功后,進入主界面。在主界面可以瀏覽所有服務器的功能。如下:1、在主界面的智能監(jiān)控界面,可以對攝像頭端進行實時監(jiān)控畫面的獲取,控制實時進行抓圖并保存。還可以對監(jiān)控畫面進行錄像,錄像文件存放在服務器本地端。這部分原本是攝像頭端的實現(xiàn),由于和服務器有很多的交互,所以合并到這里。接著,在這界面有切換監(jiān)控功能,可以讓客戶端立刻對實時的攝像頭畫面進行投屏。這一部分總結為數(shù)據(jù)庫模塊和視頻監(jiān)控功能模塊。2、在主界面的發(fā)布系統(tǒng)界面,有文件發(fā)送功能,包括音視頻文件,錄像文件,圖片文件,txt文本??偨Y為文件發(fā)送模塊。3、在主界面的屬性設置模塊,是對客戶端即廣告機端的文件播放屬性的設置。包括圖片的播放速度,文本滾動的速度時間,視頻的循環(huán)次數(shù)控制。另外,可以對正在播放的音視頻進行實時倍率控制,快進,快退,暫停等。真正實現(xiàn)播放器的功能。這一部分總結為屬性設置模塊。4、在主界面的文件管理界面,是有對已發(fā)布的文件進行管理的功能??梢赃M行刪除和實時播放。這總結為文件管理模塊。要實現(xiàn)以上功能,還需要網絡通信模塊和信息處理模塊。綜上所訴,服務器有數(shù)據(jù)庫模塊,視頻監(jiān)控模塊,文件發(fā)送模塊,屬性設置模塊,文件管理模塊,界面顯示模塊,網絡通信模塊和信息處理模塊。攝像頭端功能劃分攝像頭端的功能已經合并在服務器端,即實時監(jiān)控畫面模塊,錄像模塊,實時抓圖模塊。廣告機端功能劃分廣告機端有4部分顯示區(qū)域,如下(1)視頻顯示區(qū)域(2)圖片播放區(qū)域(3)文字滾動區(qū)域(4)時間顯示區(qū)域本文把以上區(qū)域劃分為幾個模塊,第一個是視頻播放模塊,對音視頻進行播放,另外播放視頻這部分區(qū)域可以切換到監(jiān)控的實時畫面,所以又會有實時監(jiān)控模塊。第二個是圖片播放模塊,對已有的圖片資源進行播放。第三個是文字滾動模塊,對所有文本文字進行滾動顯示。第四個是時間顯示模塊,顯示到年月日時分秒。要實現(xiàn)以上功能,和服務器相匹配,我們需要有網絡通信模塊和信息處理模塊。通過對本系統(tǒng)整個架構和主要功能的描述,給出項目的完整的系統(tǒng)模塊結構圖如圖3.2所示。圖3.2系統(tǒng)整體模塊結構圖 通過上面的系統(tǒng)功能圖,這個項目的架構已經清晰地顯現(xiàn)出來。這個圖只是給出了整個項目的整個設計實現(xiàn)的功能和框架,其內部是怎么通信相互關聯(lián)的,下面將給出系統(tǒng)內部模塊協(xié)作流程圖3.3進行分析。圖3.3系統(tǒng)內部模塊協(xié)作流程圖 從系統(tǒng)的內部模塊工作圖之中,可以更清楚了解到項目的模塊協(xié)作關系。服務器端用戶通過和數(shù)據(jù)庫模塊交互進行登錄注冊。接著在顯示界面有各種功能操作,功能在之前已經說明。主要是通過UI界面,和屬性設置模塊,文件發(fā)送模塊,文件管理模塊(此處從數(shù)據(jù)庫調出數(shù)據(jù))進行交互。然后再通過網絡模塊和廣告機端網絡通信端及攝像機端進行數(shù)據(jù)交互。攝像頭端預留3個接口,即實時監(jiān)控模塊接口,實時抓圖模塊接口,錄像模塊接口,這些接口和服務器端進行交互。最后是廣告機端,預留網絡接口,和服務器進行通信。再通過數(shù)據(jù)處理模塊進行接收文件及操作命令等。實現(xiàn)所需的功能邏輯。監(jiān)控廣告一體機的設計與實現(xiàn)攝像頭端實時監(jiān)控模塊的設計本項目的攝像機端使用的是??低暤漠a品。支持SDK的二次開發(fā),因此我們只要按照海康給出的數(shù)據(jù)手冊,配合SDK進行自己的邏輯開發(fā)即可。本模塊要實現(xiàn)的功能是實時監(jiān)控,抓圖,錄像。使用相應功能時,調用該攝像頭端模塊接口,不用此功能時,要對資源進行注銷。下面是攝像頭端的邏輯流程圖4.1。圖4.1攝像頭端的邏輯流程圖圖4.1虛線框部分的模塊是和預覽模塊相關的,一定要在預覽啟動后才可以調用,虛線框中的模塊是并列的關系,各自完成對應的功能。上圖主要分三個部分,第一部分是注冊設備,進行資源申請,然后啟動預覽,就可以在窗口上顯示出實時的監(jiān)控。第二部分是虛線框內具體實現(xiàn)的功能了,包括抓圖,錄像,實時監(jiān)控預覽。第三部分是當不需要這部分監(jiān)控功能的時候,為了系統(tǒng)更好地運行,我們釋放這部分資源。實時監(jiān)控模塊實現(xiàn)因為錄像和抓圖的功能是在實時監(jiān)控的情況下進行的,所以把攝像頭端的模塊分為四個接口。SlotView()和Slotquit()兩個函數(shù)。顧名思義,就可以就知道函數(shù)的作用了。SlotView()用于實時瀏覽視頻,在這個函數(shù)中,除了利用接口NET_DVR_Init()初始化資源,NET_DVR_Login_V30()注冊設備,利用登錄接口NET_DVR_RealPlay_V40()進行登錄之外,還需要設置設置連接時間與重連時間,這樣才能比較可靠地進行連接。兩個接口分別是NET_DVR_SetConnectTime(2000,1)和NET_DVR_SetReconnect(10000,true)。除了以上對資源的獲取之外,我們還要其顯示到我們的窗口之上。在這里我將窗口強制轉換HWNDhWnd=(HWND)ui->view_lb->winId()。那么SDK就能知道我的窗口大小,顯示的時候能完整顯示到label上。 當發(fā)生控件切換到非監(jiān)控窗口的時候,為了系統(tǒng)消耗的資源比較少。我會把其資源進行釋放。切換各個控件都會發(fā)出一個click信號,跳轉到相應的槽函數(shù)里面。我們在對應的槽函數(shù)里面調用釋放資源模塊Slotquit()接口。在里面先關閉預覽NET_DVR_StopRealPlay(lRealHandle)。再退出登錄NET_DVR_Logout(lUserID),最后NET_DVR_Cleanup()清理資源即可。在這有一個需要注意的變量lRealHandle,為調用監(jiān)控資源的句柄。 上面所說的是基本的實時預覽功能,要在上面設計錄像和抓圖功能。需要額外設計兩個接口。on_take_pic_pb_click()和on_vedio_record_bt_click(),當相應的按鍵被按下,觸發(fā)信號就會跳到對應的兩個接口,進行錄像或抓圖。對于錄像功能,我們需要調用的代碼接口是NET_DVR_SetStandardDataCallBack(lRealHandle,NULL,4)去注冊對應的回調函數(shù),捕獲實時的碼流數(shù)據(jù),第三個參數(shù)是選擇數(shù)據(jù)的類型,具體如表4.1:表4.1標準碼流數(shù)據(jù)類型dwDataType宏定義宏定義值含義NET_DVR_SYSHEAD1系統(tǒng)頭數(shù)據(jù)NET_DVR_STD_VIDEODATA4標準視頻流數(shù)據(jù)NET_DVR_STD_AUDIODATA5標準音頻流數(shù)據(jù)NET_DVR_PRIVATE_DATA2或者112私有數(shù)據(jù)獲取實時流數(shù)據(jù)之后,捕獲數(shù)據(jù)并保存到指定的文件中NET_DVR_SaveRealData(LONGlRealHandle,char*sFileName)。兩個參數(shù)分別為句柄和文件路徑,文件路徑應該在觸發(fā)錄像函數(shù)的時候傳參。接著調用NET_DVR_StopSaveRealData()停止數(shù)據(jù)捕獲,錄像完成。接著是抓圖功能,如上雷同,觸發(fā)信號之后。調用NET_DVR_SetCapturePictureMode(DWORDdwCaptureMode)函數(shù),設置抓取圖片的模式。下面是參數(shù)模式:enumtagPDC_PARAM_KEY{BMP_MODE=0,//BMP模式JPEG_MODE=1//JPEG模式}CAPTURE_MODE 然后預覽時,單幀數(shù)據(jù)捕獲并保存成圖片NET_DVR_CapturePicture(LONGlRealHandle,char*sPicFileName)。 完成對應功能,再注銷資源,即可。這一部分也是服務器端的智能監(jiān)控主要部分,因此在服務器端不重復智能攝像頭功能部分的介紹。服務器端服務器端顯示模塊的設計與實現(xiàn)Qt是一個應用在很多系統(tǒng)的C++圖形用戶界面的應用程序框架。它提供給應用程序開發(fā)者開發(fā)美觀藝術的圖形界面所需的所有功能。它是一個容易擴展并且面向對象的允許真正的組件編程軟件。因此,我們的顯示模塊設計主要由QT構成。服務器端的顯示界面主要有兩個部分,一個是登錄注冊界面,另一個是功能主界面。如圖4.2,即登錄注冊界面。圖4.3為主功能頁面。圖4.2登錄注冊界面圖4.3服務器功能主界面上圖4.3為主功能界面,選擇左邊不同的功能按鍵,就會跳轉至對應的界面,主要有5個功能按鍵。1、智能監(jiān)控顯示界面:如圖4.4,黃色區(qū)域用于播放實時監(jiān)控視頻。另外下面按鈕實現(xiàn)相應的功能,如對監(jiān)控畫面拍照,錄像,并將其保存于自己選中的路徑。最后在這有個切換監(jiān)控功能,可以實時切換廣告機端進行實時監(jiān)控播放或視頻播放。圖4.4智能監(jiān)控顯示界面2、發(fā)布系統(tǒng)顯示界面:如圖4.5,選中相應的文件,點擊文件發(fā)送,即可發(fā)送對應的資源給廣告機。圖4.5發(fā)布系統(tǒng)顯示界面3、屬性設置顯示界面:如圖4.6,可以設置廣告機端的文字切換速度。還有圖片切換速度,視頻的循環(huán)次數(shù),點擊保存即可以完成相應的屬性設置。這個頁面還有相應的播放器控制功能,控制廣告機端視頻的播放狀態(tài)。圖4.6屬性設置顯示界面4、文件管理界面:如圖4.7,對發(fā)布的信息進行數(shù)據(jù)管理,顯示在文件管理界面,并可以選中對應文件,對發(fā)布到廣告機的資源進行刪除或者立即播放。圖4.7文件管理界面服務器端的顯示模塊主要是有Qt自帶的組件構成的,利用QMainwindow類進行布局,加上功能按鍵QPushBotton,輸入框QLineEdit,顯示框QLabel,以及文件管理的QListWidget。在每個主界面之間,用了QStackWidget控件和各個組件聯(lián)系在一起,共同組成了我們服務器的界面。服務器端數(shù)據(jù)庫模塊的設計與實現(xiàn)在實際項目中會采用數(shù)據(jù)庫來實現(xiàn)對數(shù)據(jù)的檢索和存儲等功能。這些數(shù)據(jù)庫除了提供基本的查詢、刪除和添加功能,還提供很多如觸發(fā)器、存儲過程、數(shù)據(jù)備份恢復和全文檢索功能等。但實際上很多應用僅利用了這些數(shù)據(jù)庫的基本特性,而且在某些特殊場合的應用中,這些數(shù)據(jù)庫明顯顯得有些臃腫。Qt5提供了一個數(shù)據(jù)庫SQLite。它是一個可以應用于多種操作系統(tǒng)平臺的小型的數(shù)據(jù)庫[17]。概括下來具有以下優(yōu)點:(1)擁有虛擬機可以處理的SQL語句。(2)SQLite存儲數(shù)據(jù)的時候不需要多一個進程,也不用多一個獨立運行的數(shù)據(jù)庫引擎。(3)應用的速度常見的數(shù)據(jù)庫快上許多,并且占用的內存很小。(4)使用的時候接口很方便簡單(5)代碼開放并且比較少,支持嵌套的SQL功能,還擁有視圖,觸發(fā)器和事務。(6)大部分應用的速度比目前常見的數(shù)據(jù)庫快本項目的數(shù)據(jù)庫模塊主要存儲的是兩方面的數(shù)據(jù)。一方面是用戶的信息。另一方面是對發(fā)布的文件進行信息管理。于是設計了4個表,分別存儲兩個方面的信息。表4.2是用戶信息:表4.2用戶賬號信息表行號賬號密碼1yyy1234562Jason4567893Jeffery568138pp4Tom3115007526數(shù)據(jù)庫存儲的另一個方面的信息是文件發(fā)布的信息,主要設計了3個表格,分別用于存儲發(fā)布的圖片信息,視頻信息及txt文本信息,表4.3是存儲發(fā)布的圖片信息。有2個表項。第一項是ID,即存儲的時候的ID,第二項為文件的名字。其他兩個表格的設計也是一樣的。表4.3圖片文件發(fā)布信息表行號ID圖片文件名1114.jpg223.jpg332.jpg44dark.jpgQt5提供了QtSql模塊對數(shù)據(jù)庫的訪問接口。當數(shù)據(jù)庫的連接建立以后,我們可以使用QSqlQuery執(zhí)行底層數(shù)據(jù)庫所支持的SQL語句。在Qt上操作SQLite數(shù)據(jù)庫的時候,必須加上其對應的頭文件,再利用其接口便可以對SQlite數(shù)據(jù)庫進行增刪改查等動作。下面主要介紹對應的幾條命令。1、創(chuàng)建信息表的命令:"createtabletxt_table(idintprimarykey,txt_send_msgvarchar(64),txt_timevarchar(32))";2、插入信息的命令:"insertinto%1values(?,?,?)".arg(table);其中table為對應的表格,圖片表格,視頻的表格或者txt文本記錄的表格。3、刪除信息的命令,由于是根據(jù)id號來進行刪除,對應的命令為"deletefromtxt_tablewhereid=?"[14];服務器端網絡通訊模塊的設計與實現(xiàn)如今網絡是人們不可或缺的一部分,無論是訪問網頁、微信、QQ聊天還是發(fā)送郵件都需要與相應的服務器建立連接才能發(fā)送數(shù)據(jù)。而連接的建立都需要Socket。而本文是TCP/IP協(xié)議基礎上,模塊利用C語言進行Socket編程。它是一種"打開—讀/寫—關閉"的模式,客戶端和服務器端各自維護一個套接字,在建立連接之后,可以向自己套接字寫入內容發(fā)送給對方讀取或者收取對方發(fā)過來的內容,通訊結束時關閉套接字[15,16]。整個TCP通訊主要分為以下三個階段:階段一:建立連接,通過三次握手實現(xiàn)TCP服務器的建立。初始化Socket,然后與端口綁定(bind),對端口進行監(jiān)聽(listen),調用accept阻塞,等待客戶端連接。TCP客戶端建立,初始化一個Socket,然后連接服務器(connect),如果連接成功,這時客戶端與服務器端的連接就建立了。階段二:進行數(shù)據(jù)的收發(fā),主要是通過阻塞實現(xiàn)建立好連接之后,服務端與客戶端就可以進行正常的數(shù)據(jù)收發(fā)操作了,主要分為以下兩種: 第一種:服務器調用接收函數(shù)阻塞,等待客戶端發(fā)送數(shù)據(jù)過來,再進行處理 第二種:客戶端調用接收函數(shù)阻塞,等待服務端發(fā)送數(shù)據(jù)過來,再進行處理階段三:斷開連接,主要是通過四次揮手實現(xiàn)斷開連接,也有兩種情況: 第一種:服務端正在阻塞接收,客戶端關閉,會給服務端發(fā)送一個0數(shù)據(jù) 第二種:客戶端正在阻塞接收,服務端關閉,會給客戶端發(fā)送一個0數(shù)據(jù)TCP網絡通信的基本框圖如下:圖4.8socket編程基本模型以上是socket編程的基本模型[17,18]。毫無疑問,網絡通訊模塊是整個項目之中比較核心的部分。在本項目中負責和攝像頭端,廣告機端進行信息交互。除了實現(xiàn)給廣告機端進行文件發(fā)送,還要進行視頻播放器的命令控制,及廣告機端文件的管理。結合我們自己的設計,我們服務器發(fā)數(shù)據(jù)的開頭都是一個結構體。設計如下:typedefstructmessage { charfile_name[60]; inttype; longintfile_size; charcontrol_command[32]; intpic_loop; inttxt_loop; intvedio_loop; }Message;不同的type代表不同的功能設置。type等于1/2/3,代表服務器要進行文件發(fā)送,請廣告機端做好準備。type等于4,代表進行屬性的設置,例如圖片播放速度,視頻循環(huán)次數(shù),文本播放速度等。type等于5,代表進行播放器的控制,例如暫停快進快退,加速等。type等于6/7/8,代表刪除廣告機端的文件。type等于9/10/11,代表要進行立即播放此文件。type等于12,代表客戶端進行監(jiān)控實時畫面的投屏或視頻的切換。file_name存儲文件名的,file_size代表文件大小信息,control_command代表播放器控制命令,pic_loop,txt_loop,vedio_loop代表對應的屬性控制。下面是網絡通信模塊對應的邏輯功能框圖。圖4.9網絡模塊基本功能框圖發(fā)送信息都是以結構體的形式發(fā)送,結構體包含了控制信息,到了廣告機端再進行解析。服務器開了線程不斷接收廣告機端發(fā)送的數(shù)據(jù),執(zhí)行相應功能,也一直和攝像頭端相連接,進行監(jiān)控視頻的播放。服務器端文件發(fā)送模塊的設計與實現(xiàn)要對廣告機端進行資源的發(fā)布,就是進行文件的發(fā)送。我們主要支持3種文件的發(fā)送,視頻文件、圖片文件、txt文件。前面的ui界面時也介紹了這部分功能,在發(fā)布系統(tǒng)界面點擊文件發(fā)送,就會調動網絡模塊,與廣告機端進行數(shù)據(jù)交互,收到廣告機端準備接收的信息之后,就進行文件發(fā)送。畫出下面對應的邏輯框圖,方便理解這部分的內容。圖4.10文件發(fā)送模塊基本功能框圖在這里發(fā)送的3種文件,定義結構體的時候,分別將信息結構體的type定義為1/2/3,方便廣告機端進行識別。并將其存于廣告機端對應的目錄。file_name則記錄要發(fā)送的文件名,file_size記錄文件大小,在廣告機端的接收文件的時候,比較文件大小和收到的數(shù)據(jù),知道什么時候結束接收,跳出循環(huán)。服務器端屬性設置模塊的設計與實現(xiàn)屬性設置模塊主要有以下功能,控制圖片的播放速度,滾動字幕換行的速度,以及播放視頻的循環(huán)次數(shù)。另外還有播放器的控制功能,倍速,快進,快退,暫停,播放。服務器主界面屬性設置界面已顯示出所有的功能。在此界面點擊保存,獲取LineEdit上面的內容,將其包裝成信息結構體發(fā)送給廣告機端,廣告機端會進行識別,并進行對應的操作。畫出下面對應的邏輯框圖,方便理解這部分的內容。圖4.11屬性設置基本功能框圖本模塊主要有兩部分組成,一部分是圖片播放速度和文字的播放速度,另外一部分是視頻播放器的控制。第一部分,將信息結構體的type設為4,然后將pic_loop,txt_loop,vedio_loop設置為對應的信息,將其發(fā)送給廣告機端即可。第二部分,是視頻播放器的控制部分。我們的視頻播放器是用了mplayer官方1.3.0版本的源碼包,對應的slave模式的操作指令在官方的幫助文檔有所指示。基于我們的設計,點擊對應的功能按鍵,將信息結構體type設為5,再將命令包裝到結構體發(fā)送給客戶端。下面介紹對應的幾條命令:視頻2倍速"speed_mult2\n";數(shù)字2代表在現(xiàn)在基礎上的播放速度倍率。視頻播放快退10秒:"seek-100\n";視頻進行暫?;虿シ牛?pause\n";視頻播放快進10秒:"seek100\n";服務器端文件管理模塊的設計與實現(xiàn)文件管理模塊主要功能是對發(fā)布的文件進行管理,其發(fā)布的信息由SQlite進行存儲。主要由三張表記錄,前面數(shù)據(jù)庫模塊已經介紹過相關表設計的內容。在本模塊中,可以對發(fā)布的文件進行刪除和實時播放。下面畫出功能流程框圖,方便理解結構。圖4.12文件管理模塊基本功能框圖如上圖所示,本模塊主要是文件的記錄進行管理,發(fā)結構體指令給廣告機端刪除文件或者立即播放文件。發(fā)送成功后,在自己本地就刪除數(shù)據(jù)庫對應的記錄,并將其重新刷新于服務器界面。顯示部分用了主要是QT組件的QListWidget,利用其item項,實現(xiàn)每一條記錄的顯示。廣告機端廣告機端主要由四個區(qū)域組成,圖片滾動播放區(qū)域,時間顯示區(qū)域,視頻播放區(qū)域,文字滾動播放區(qū)域,其中視頻播放區(qū)域在接受服務器端的控制之后,可以切換顯示實時監(jiān)控畫面。4個區(qū)域的界面都是label圈定范圍。每個區(qū)域都用開了一個線程,實現(xiàn)其獨特的功能。下面介紹每個區(qū)域的具體邏輯設計和實現(xiàn)。廣告機端圖片顯示模塊的設計與實現(xiàn)圖片顯示模塊,在開機的時候,自動讀取圖片文件夾的文件信息名,將其存于QStringlist。其相當于一個鏈表,記錄文件路徑和文件名的信息。后開啟線程,按設定的秒數(shù),循環(huán)打開圖片文件將其顯示到圖片區(qū)域。圖4.13是圖片顯示模塊的功能流程圖。圖4.13圖片顯示模塊基本功能框圖正常流程是開啟線程后,循環(huán)顯示鏈表中的圖片文件,利用QT的QImage類加載圖片后,顯示于QLabel上。但本系統(tǒng)有文件發(fā)布和刪除功能,還有操作立即顯示播放,所以當網絡模塊接收到相關命令的時候,我們要更新圖片資源的鏈表。并利用線程按時監(jiān)測pic_now全局變量的狀態(tài),以控制實時播放的圖片內容。廣告機端文本顯示模塊的設計與實現(xiàn)文本顯示模塊和圖片顯示模塊相似,在開機的時候,自動讀取txt文本文件夾的文件信息名,將其存于QStringlist。其相當于一個鏈表,記錄文件路徑和文件名的信息。后開啟線程,按設定的秒數(shù),循環(huán)打開文本文件將其按行顯示到文字滾動區(qū)域。圖4.15是文字滾動模塊的功能流程圖。圖4.14文本顯示模塊基本功能框圖打開txt文本用的是QT里面的QFile類,file.open打開文件,后按行讀取文件逐行顯示文本信息。由于文字顯示區(qū)域有一定的范圍,當顯示到第七行文本數(shù)據(jù)的時候,要實現(xiàn)滾動播放效果,需要將第二行信息取代第一行,第三行取代第二行,以此類推。最后用QString類將六行信息記錄,顯示。file.atEnd()表示一個文件結束,可以開始按鏈表順序,顯示下一個文本的信息。txt文件的更新和刪除,實時顯示操作和上一小節(jié)圖片滾動播放處理邏輯一致。更新對應的文件列表。另外本線程不斷監(jiān)視txt_now的狀態(tài),狀態(tài)置1立即播放特定txt文件。廣告機端時間顯示模塊的設計與實現(xiàn)廣告機端有時間顯示模塊,而關于實時時間的獲取,QT里面有包裝好的類QTime和QDate可以獲取。問題的關鍵是怎么定時按秒去刷新時間。經查閱資料,發(fā)現(xiàn)了一個關于定時器的類:QTimer QTimer類提供了定時器信號和單觸發(fā)定時器。它在內部使用定時器事件來提供更通用的定時器。QTimer使用簡單:創(chuàng)建一個QTimer,使用start()來發(fā)射信號,并且把它的timeout()信號連接到自定義的槽函數(shù)。當設定的時間過去了,它將會發(fā)射timeout()信號觸發(fā)槽函數(shù)響應。下面是QTimer定時器的實例。 QTimer*timer=newQTimer(this);connect(timer,SIGNAL(timeout()),this,SLOT(timer_handler()));timer->start(1000);系統(tǒng)會每秒發(fā)出一個timer的信號,根據(jù)QT信號與槽的機制,每隔一秒就會進入對應的timer_handler槽函數(shù),我們在此槽函數(shù),獲取實時的日期和具體時間,并將其顯示于對應的時間顯示區(qū)域即可。因為本模塊代碼量比較少,列出具體槽函數(shù)實現(xiàn)如下。 QStringdate=QDate::currentDate().toString("yyyy年MM月dd日dddd");ui->date_lb->setText(date);QStringtime=QTime::currentTime().toString("hh:mm:ss");ui->time_lb->setText(time);廣告機端視頻顯示模塊的設計與實現(xiàn)廣告機端的視頻顯示模塊內容是這個部分的核心,一是要完成基本的視頻播放功能,二是要實現(xiàn)實時監(jiān)控的切換。在視頻播放方面,因消耗的系統(tǒng)資源比較大所以啟動多一個進程進行視頻播放。底層啟動mplayer播放程序,作為我們的視頻播放器。傳遞不同的視頻文件參數(shù)進去,即可播放不同的視頻。另外在服務器端,可以對視頻播放器有命令控制,快進快退,暫停加速循環(huán)播放等。還可以隨時停止視頻播放器,進行實時監(jiān)控的切換。這時客戶端調用監(jiān)控的接口,獲取視頻監(jiān)控的實時流數(shù)據(jù),并將其顯示于視頻播放區(qū)域。本模塊對這些功能控制進行處理??磮D理解視頻顯示模塊的結構。 如圖所示,正常啟動主路線是圖片的右邊,讀取視頻文件夾的文件信息,將其存于鏈表。后啟動進程和mplayer應用程序,循環(huán)播放鏈表里面記錄的視頻文件。當播放一個視頻結束的時候,播放器進程會發(fā)出一個process->state()=0的信號。另外一個主線是定時器循環(huán)監(jiān)測關于視頻播放器的全局變量是否發(fā)生變化。當定時器監(jiān)測到某個變量變化的時候,如收到控制命令,將會process->write進去命令,實現(xiàn)控制功能,具體的命令在服務器端已經說明。監(jiān)測到切換監(jiān)控標志,則停止mplayer視頻播放器,調用實時監(jiān)控接口,獲取攝像頭端的實時數(shù)據(jù)。定時器還會監(jiān)測process->state(),為0時即播放視頻結束。這時有兩個可能的視頻播放路線,一個是播放鏈表中的下一個文件,這時如果前一個播放的是最后一個文件,則記錄當前文件為vedio_list.at(0)。另一個是正在循環(huán)播放視頻,循環(huán)次數(shù)減1,播放當前文件。當更新文件資源的時候,文件的鏈表和文件數(shù)目應更新,重新賦值于vedio_list。圖4.15視頻顯示模塊基本功能框圖廣告機端網絡通訊模塊的設計與實現(xiàn) 和服務器對接,客戶端的網絡模塊也采用TCP/IP協(xié)議。先開啟線程,然后初始化一個socket,連接服務器(connect)之后,假如連接成功,客戶端與服務器端的連接就建立成功了。線程開始阻塞,等待服務器發(fā)過來的指令進行接收。根據(jù)指令的不同類別,實現(xiàn)其對應功能。socket建立框圖如下: 圖4.16網絡通訊模塊基本功能框圖在這里廣告機端的socket應一直和服務器保持相連接,以便隨時接受服務器發(fā)過來的命令。接收命令后,交付信息處理模塊進行處理。然后回發(fā)對應消息給服務器進行通知。這里還有文件接收模塊,根據(jù)文件名和文件大小來校對接收文件,確保文件數(shù)據(jù)大小的準確性。當數(shù)據(jù)接收不完整的時候,可以檢測出并跳出循環(huán),以防網絡模塊阻塞系統(tǒng)癱瘓。監(jiān)控數(shù)據(jù)流的獲取,和本socket不是同一個端口。并且監(jiān)控視頻流的推送,根據(jù)??档腟DK,可以基于RTSP推流,效果比TCP推流好。系統(tǒng)的測試與分析軟件的測試是開發(fā)過程中非常重要的一部分,是系統(tǒng)質量的重要保證。系統(tǒng)一定要進行全方位的測試工作,才能了解系統(tǒng)的存在的問題和性能狀況。系統(tǒng)的測試工作要交付給專業(yè)的測試人員才能較好地測出問題。在測試過程中如果發(fā)現(xiàn)了問題,必須解決這些問題后系統(tǒng)才能交付用戶使用。本人對測試的工具和方法等不是特別了解,所以本章簡要為讀者測試出現(xiàn)問題的部分模塊,測試沒問題模塊不予介紹,并給出系統(tǒng)的運行效果。圖片顯示模塊的測試廣告機端主要是視頻顯示,文本顯示和圖片顯示,先檢測圖片顯示模塊的效果。運行客戶端的程序,打開文件但是只顯示出圖片的部分效果,沒有完整地顯示出整張圖片,并且兩邊有間隙,效果如圖: 調試前 (b)調試后圖5.1圖片顯示模塊效果圖 經過查閱資料,我們對圖片進行了等比例縮放處理,既能完整顯示出整張圖片,也能不給兩邊留下空隙。首先在加載圖片的時候,記錄顯示區(qū)域的大小和位置,然后利用QT的圖像縮放scaled函數(shù),對圖片進行等比縮放,在顯示的時候,圖片和顯示區(qū)域的長寬比不一致,那么在縮放的時候,比較圖像和顯示區(qū)域長比例和寬比例,選取比較大的縮放倍數(shù)。對圖片進行倍數(shù)縮放,最后調試出比較好的效果。如上圖5.2。視頻顯示模塊的測試對視頻播放進行測試,顯示效果如下圖5.3,能正常播放視頻,但是沒有聲音發(fā)出。所以猜測是播放器還不支持音頻的解碼,需要加上音頻特定的庫。查閱知道在ubuntu安裝mplayer沒有聲音,是因為linux2.4以后的內核逐漸拋棄oss音頻架構而轉向alsa而ubuntu缺少alsa的庫,所以加上解碼庫alsa-lib-.tar.bz2。配置的時候加上./configure--codecsdir=/usr/lib/codecs/指定解碼器。后解決此問題圖5.2視頻顯示模塊效果圖文字顯示模塊的測試 按照設計的邏輯進行讀取文件,能打開文件,但顯示的時候有中文的亂碼。而亂碼的出現(xiàn),原因是文件的編碼和我們自己讀取文件編碼的方式不一致所導致。一般本地的txt文本編碼為GBK編碼(ANSI的簡體中文編碼),而我們的Qt使用Unicode來表示字符串,這就說明了問題所在。Qt提供了用于不同編碼格式之間的轉換的一個類QTextCodec,在Qt的參考手冊中有案例代碼QByteArrayencodedString="...";QTextCodec*codec=QTextCodec::codecForName("GBK");QStringstring=codec->toUnicode(encodedString);調試之后打開txt文本,能正確顯示出中文文字。圖5.3文本顯示模塊效果圖智能監(jiān)控模塊的測試 按照??礢DK開發(fā)文檔的描述,對設備進行實時預覽,抓圖,錄像功能的開發(fā)。但顯示出來的時候,沒有實時的圖片畫面出來,查看SDK開發(fā)文檔。了解SDK開發(fā)包所有的庫資料。加載網絡通訊庫、hpr庫、RTSP通訊庫、轉封裝庫、播放庫等。將庫文件全部加載后能顯示出監(jiān)控視頻,但是只顯示一部分畫面,沒有完整顯示。傳遞窗口參數(shù):HWNDhWnd=(HWND)ui->vedio_lb->winId();將顯示窗口強制轉為為HWND類型。完整顯示出監(jiān)控畫面,實現(xiàn)效果如下圖5.4和圖5.5:圖5.4實時監(jiān)控投影畫面效果圖圖5.5服務器端實時監(jiān)控投影畫面效果圖移植后廣告機端總體效果如圖5.6:圖5.6廣告機端總體效果圖總結與展望本次畢業(yè)設計的目標就是設計出一款系統(tǒng),一是實現(xiàn)多媒體廣告機的功能,二是能讓廣告機端投放實時監(jiān)控畫面。研究范圍主要是軟件部分的服務器開發(fā),廣告機端開發(fā)和攝像頭端的開發(fā),再將其廣告機端移植到開發(fā)板。以下是本設計的主要工作:攝像頭端設計攝像頭端主要有三個功能(1)實時監(jiān)控獲?。?)實時抓圖(3)實時錄像?;诤?礢DK開發(fā),這三個功能的代碼部分項目會直接在服務器端撰寫,獲取實時流數(shù)據(jù)。服務器端設計服務器端功能其包括(1)上面所述實時監(jiān)控的三個功能(2)用戶注冊登錄(3)視頻圖片txt等文件的發(fā)布(4)對廣告機端圖片文本視頻播放時間間隔等屬性的控制,對視頻播放器的控制。(5)對發(fā)布文件的管理(6)控制廣告機端實時文件的播放。廣告機端設計廣告機端有5項主要功能實時顯示時間,進行視頻播放,進行圖片滾動播放,進行實時監(jiān)控的顯示,進行文字滾動顯示。其資源的獲取和顯示的控制受到服務器管理。最后將廣告機端移植進開發(fā)板。以上的功能基本實現(xiàn),但是也有許多不足的地方,顯得效果不大理想。后期進行移植的時候,廣告機端交叉編譯無法通過,原因是海
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版土特產產業(yè)扶貧合作開發(fā)合同3篇
- 2025年度互聯(lián)網金融服務合作協(xié)議7篇
- 2025年廠房建筑安全質量監(jiān)管承包合同4篇
- 二零二四年度影視機構錄像內容保密協(xié)議3篇
- 2025年度跨境電子商務平臺合作合同參考范本3篇
- 2025年度茶餐廳茶葉及茶葉原料供應協(xié)議3篇
- 森林草莓SMR基因家族調控果實成熟與抗灰霉病的功能初探
- 二零二五年度跨境電子商務平臺合作框架協(xié)議4篇
- 二零二五版美術館東館館舍租賃藝術展覽技術支持合同4篇
- 2025年度機場接送車駕駛員聘用及服務標準合同4篇
- 定額〔2025〕1號文-關于發(fā)布2018版電力建設工程概預算定額2024年度價格水平調整的通知
- 2024年城市軌道交通設備維保及安全檢查合同3篇
- 【教案】+同一直線上二力的合成(教學設計)(人教版2024)八年級物理下冊
- 湖北省武漢市青山區(qū)2023-2024學年七年級上學期期末質量檢測數(shù)學試卷(含解析)
- 單位往個人轉賬的合同(2篇)
- 科研倫理審查與違規(guī)處理考核試卷
- GB/T 44101-2024中國式摔跤課程學生運動能力測評規(guī)范
- 高危妊娠的評估和護理
- 2024年山東鐵投集團招聘筆試參考題庫含答案解析
- 2023年高考全國甲卷數(shù)學(理)試卷【含答案】
- 數(shù)獨題目A4打印版無答案
評論
0/150
提交評論