freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于linux、qt的視頻監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文(編輯修改稿)

2024-07-19 01:22 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 有些視頻設(shè)備可以有多個(gè)視頻輸入。VIDOC_S_INPUT,struct v4l2_input4) 設(shè)置視頻采集的的視頻幀格式和視頻制式,視頻制式包括幀的格式,NTSC,PAL,包括寬度(width)和高度(height)等。VIDIOC_S_STD,VIDIOC_S_FMT,struct v4l2_std_id,struct v4l2_format5) 向驅(qū)動(dòng)申請(qǐng)緩沖,一般不超過(guò)5個(gè)。struct v4l2_requestbuffers6) 申請(qǐng)物理內(nèi)存從內(nèi)核申請(qǐng)到幀緩沖空間,并將其映射到用戶空間去,然后可以直接對(duì)采集到的視頻數(shù)據(jù)幀進(jìn)行操作了,不必再去進(jìn)行復(fù)制緩沖區(qū)內(nèi)容了。將從內(nèi)核中申請(qǐng)下來(lái)的緩存進(jìn)行入隊(duì)列操作,存放采集到的視頻幀數(shù)據(jù)。VIDIOC_QBUF,struct v4l2_buffer7) 開(kāi)始視頻的采集enum v4l2_buf_type typetype = V4L2_BUF_TYPE_VIDEO_CAPTURE。 if (ioctl (fd, VIDIOC_STREAMON, amp。type) 0) { printf(VIDIOC_STREAMON error\n)。 // return 1。 }8) 進(jìn)行出隊(duì)列操作從而獲取已采集數(shù)據(jù)到的視頻幀緩沖數(shù)據(jù),取得原始采集數(shù)據(jù)。VIDIOC_DQBUF將緩沖區(qū)重新入隊(duì)列尾,這樣可以循環(huán)采集VIDIOC_QBUF9) 停止視頻采集。VIDIOC_STREAMOFF10) 關(guān)閉視頻設(shè)備。close(fd)2 系統(tǒng)總體設(shè)計(jì)概述 分析系統(tǒng)需求視頻監(jiān)控系統(tǒng)主要由服務(wù)端程序和客戶端程序構(gòu)成。服務(wù)器(server)端是基于Linux系統(tǒng)環(huán)境下的網(wǎng)絡(luò)服務(wù)器程序。服務(wù)端中視頻數(shù)據(jù)的采集部分利用v4l2(video for Linux II)對(duì)網(wǎng)絡(luò)攝像頭(USB攝像頭)進(jìn)行控制和訪問(wèn)并且獲取由攝像頭捕獲到的視頻數(shù)據(jù),然后由huffman編碼進(jìn)行壓縮,然后再通過(guò)網(wǎng)絡(luò)服務(wù)將獲取到的視頻數(shù)據(jù)進(jìn)行封裝成數(shù)據(jù)幀并利用協(xié)議發(fā)送到客戶端。由于視頻監(jiān)控系統(tǒng)的服務(wù)器(server)端視頻數(shù)據(jù)是通過(guò)協(xié)議發(fā)送的,所以此系統(tǒng)客戶端沒(méi)有平臺(tái)限制。而且,系統(tǒng)的服務(wù)還可以直接通過(guò)web瀏覽器訪問(wèn)(對(duì)firefox、GoogleChrome瀏覽器支持最佳)。為了提高傳輸效率我們還需要進(jìn)行客戶端的軟件開(kāi)發(fā),由于對(duì)客戶端沒(méi)有平臺(tái)要求,即實(shí)現(xiàn)跨平臺(tái),所以在Windows、Linux、android等平臺(tái)都可以實(shí)現(xiàn)。視頻監(jiān)控系統(tǒng)的設(shè)計(jì)主要以Linux為例用QT實(shí)現(xiàn)一個(gè)簡(jiǎn)易的客戶端軟件,同時(shí)還可以用瀏覽器訪問(wèn),既同時(shí)實(shí)現(xiàn)了C/S架構(gòu)與B/S架構(gòu)的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)。 系統(tǒng)的軟件結(jié)構(gòu)及整體框架 整體結(jié)構(gòu)框圖視頻監(jiān)控系統(tǒng)總體結(jié)構(gòu)圖如圖1所示初始化界面參數(shù)設(shè)置QT界面顯示數(shù)據(jù)處理獲取數(shù)據(jù)建立網(wǎng)絡(luò)連接設(shè)備初始化建立網(wǎng)絡(luò)服務(wù)TCP/IP數(shù)據(jù)傳輸數(shù)據(jù)采集圖1 視頻監(jiān)控系統(tǒng)結(jié)構(gòu)圖上圖所示,為視屏監(jiān)控系統(tǒng)的結(jié)構(gòu)總圖,其主要作用是為后續(xù)的軟件模塊設(shè)計(jì)及程序代碼的編寫打了個(gè)初略的框架,這也是視頻監(jiān)控系統(tǒng)設(shè)計(jì)的指明燈。從圖中可以看出主要的流程,以及邏輯關(guān)系。在當(dāng)今社會(huì)互聯(lián)網(wǎng)、移動(dòng)互聯(lián)網(wǎng)發(fā)展非常迅速,網(wǎng)絡(luò)遠(yuǎn)程視頻監(jiān)控是必然趨勢(shì),TCP/IP和socket的創(chuàng)建使視頻可以融入到互聯(lián)網(wǎng)中。4G時(shí)代的到來(lái),使得我們可以將實(shí)時(shí)視頻監(jiān)控發(fā)展到移動(dòng)終端上,這將更加方便我們的日常生活。 模塊的功能分析服務(wù)器(server)端負(fù)責(zé)視頻數(shù)據(jù)的采集,采集可以通過(guò)v4l2編程實(shí)現(xiàn),有詳細(xì)的API開(kāi)發(fā)文檔,以及v4l2編程的相關(guān)資料可以參考??蛻舳耍╟lient)主要負(fù)責(zé)的是將接收到的視頻數(shù)據(jù)通過(guò)QT編程將其渲染出來(lái)。主要用到了QT中的信號(hào)(signal)和槽(slot)機(jī)制、以及繪圖事件,QT是利用C++編程,而且它封裝了一套自己的庫(kù)可以實(shí)現(xiàn)跨平臺(tái),這也就解決了前面提到的客戶端的跨平臺(tái)特性。還有連接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ù)封裝成數(shù)據(jù)幀的形式,然后利用協(xié)議將視頻數(shù)據(jù)幀發(fā)送到客戶端(client)。由于是實(shí)時(shí)傳輸,所以還用到多線程,使得每個(gè)客戶端(client)相互獨(dú)立,各個(gè)線程都將執(zhí)行一個(gè)死循環(huán),源源不斷的給客戶端發(fā)送視頻數(shù)據(jù)。3 系統(tǒng)中各模塊功能的具體實(shí)現(xiàn) 服務(wù)器:數(shù)據(jù)采集部分 模塊功能描述視頻數(shù)據(jù)的采集是視頻監(jiān)控系統(tǒng)中相當(dāng)重要的,沒(méi)有視頻數(shù)據(jù)的采集就不可能有后面視頻的編碼、視頻的解碼、視頻數(shù)據(jù)的網(wǎng)絡(luò)傳輸,也就是說(shuō)沒(méi)有視頻數(shù)據(jù)采集就沒(méi)有監(jiān)控的傳播。這一模塊需要查看、配置設(shè)備的屬性并從設(shè)備中獲取圖像數(shù)據(jù)。根據(jù)獲取到的設(shè)備信息,利用v4l2(vidoo for Linux II)通過(guò)函數(shù)ioctl()對(duì)USB攝像頭進(jìn)行配置,打開(kāi)設(shè)備,開(kāi)啟視頻流功能,然后開(kāi)始進(jìn)行視頻數(shù)據(jù)采集,采集到數(shù)據(jù)后將數(shù)據(jù)保存,采集完畢以后關(guān)閉設(shè)備功能,最后關(guān)閉視頻設(shè)備,退出整個(gè)程序。 技術(shù)概要當(dāng)前模塊需要涉及到對(duì)設(shè)備的I/O進(jìn)行相關(guān)的操作,主要通過(guò)v4l2(video for Linux II)框架對(duì)視頻設(shè)備進(jìn)行設(shè)置和控制。主要用到了以下幾個(gè)宏定義:1) VIDIOC_REQBUFS:分配內(nèi)存。2) VIDIOC_QUERYBUF:將分配出來(lái)的數(shù)據(jù)緩存區(qū)映射到物理地址。3) VIDIOC_S_FMT:讀取當(dāng)前驅(qū)動(dòng)的視頻捕獲格式。4) VIDIOC_ENUM_FMT:獲取USB視頻設(shè)備驅(qū)動(dòng)所支持的視頻格式。5) VIDIOC_QUERYCAP:查詢驅(qū)動(dòng)功能。6) VIDIOC_G_FMT:設(shè)置當(dāng)前驅(qū)動(dòng)的視頻捕獲格式。7) VIDIOC_TRY_FMT:檢驗(yàn)視頻設(shè)備驅(qū)動(dòng)的顯示格式是否正確。8) VIDIOC_CROPCAP:查詢驅(qū)動(dòng)的修剪能力。9) VIDIOC_S_CROP:設(shè)置視頻信號(hào)的邊框。10) VIDIOC_G_CROP:讀取視頻信號(hào)的邊框。11) VIDIOC_QBUF:把視頻數(shù)據(jù)從緩存中取出來(lái)。12) VIDIOC_DQBUF:把視頻數(shù)據(jù)放回隊(duì)列。13) VIDIOC_STREAMON:開(kāi)始視頻數(shù)據(jù)顯示函數(shù)。14) VIDIOC_STREAMOFF:結(jié)束視頻顯示函數(shù)。15) VIDIOC_QUERYSTD:查看USB視頻設(shè)備支持的標(biāo)準(zhǔn)(例如: NTSC(歐洲標(biāo)準(zhǔn))、PAL(亞洲標(biāo)準(zhǔn)))。其中還可以通過(guò)查閱v4l2編程技術(shù)提供的API文檔,熟悉一些結(jié)構(gòu)體屬性的賦值以及一些控制標(biāo)記具有的實(shí)際意義。 邏輯概要及流程圖這一節(jié)主要介紹了服務(wù)器(server)端的如何采集視頻數(shù)據(jù)。圖2是視頻采集流程圖,描述了服務(wù)器(server)端視頻數(shù)據(jù)采集的主要編程步驟。開(kāi)始打開(kāi)設(shè)備文件獲取設(shè)備信息設(shè)置采集方式申請(qǐng)緩存設(shè)置緩存屬性數(shù)據(jù)處理否退出?終止圖2 服務(wù)器(server)端視頻數(shù)據(jù)采集流程下面將對(duì)沒(méi)一個(gè)步驟進(jìn)行詳細(xì)的介紹:1) 打開(kāi)視頻video設(shè)備:打開(kāi)USB視頻設(shè)備(視頻監(jiān)控系統(tǒng)的設(shè)計(jì)中指的是我們的USB攝像頭)。我們利用Linux系統(tǒng)提供的接口函數(shù)open來(lái)對(duì)設(shè)備進(jìn)行打開(kāi)的操作。下圖(圖3)對(duì)這一過(guò)程進(jìn)行了詳細(xì)的描述。FD是USB攝像頭設(shè)備文件描述符,簡(jiǎn)單的來(lái)說(shuō),F(xiàn)D只是一個(gè)int型(即整數(shù)),在調(diào)用Linux系統(tǒng)編程中的open()函數(shù)時(shí)的返回值。起到的是一個(gè)索引的作用,其進(jìn)程通過(guò)查找文件描述符表項(xiàng)從而找到該FD所指向的文件。在Linux系統(tǒng)中,一切設(shè)備皆文件,所以不管是打開(kāi)的文件還是打開(kāi)設(shè)備都是通過(guò)此表中的文件描述符來(lái)引用的。開(kāi)始文件描述符FD = 1FD = open()NOprintf(error)FD 0 ?YESFD = 1圖3 打開(kāi)USB攝像頭設(shè)備流程圖2) 獲取視頻設(shè)備信息(查詢視頻設(shè)備信息):查詢USB攝像頭設(shè)備驅(qū)動(dòng)的相關(guān)信息以及和視頻數(shù)據(jù)采集相關(guān)的參數(shù),根據(jù)查詢到的設(shè)備信息初步判斷設(shè)備類型以及將要處理的數(shù)據(jù)類型。利用ioctl()函數(shù)以及v4l2提供的兩個(gè)
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1