版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、基于嵌入式 Linux 的視頻監(jiān)控系統(tǒng)的軟件設(shè)計(jì)基于嵌入式 Linux 的視頻監(jiān)控系統(tǒng)的軟件設(shè)計(jì)1、引言 隨著計(jì)算機(jī)技術(shù)及網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展, 公安、安防行業(yè)的發(fā)展趨勢(shì)必然是 全面數(shù)字化、 網(wǎng)絡(luò)化。傳統(tǒng)的模擬閉路電視監(jiān)控系統(tǒng)有很多局限性: 傳輸距離有 限、無法聯(lián)網(wǎng),而且模擬視頻信號(hào)數(shù)據(jù)的存儲(chǔ)會(huì)耗費(fèi)大量的存儲(chǔ)介質(zhì) (如錄像帶 ), 查詢?nèi)∽C時(shí)十分煩瑣?;趥€(gè)人計(jì)算機(jī)的視頻監(jiān)控系統(tǒng)終端功能較強(qiáng),但穩(wěn)定性不好,視頻前端( 如電壓耦合元件等視頻信號(hào)的采集、壓縮、通訊 ) 較為復(fù)雜,可靠性不高?;?嵌入式 Linux 視頻的網(wǎng)絡(luò)監(jiān)控系統(tǒng)不需要用于處理模擬視頻信號(hào)的個(gè)人計(jì)算機(jī), 而是把視頻服務(wù)器置一個(gè)嵌
2、入式 Web服務(wù)器,采用嵌入式實(shí)時(shí)多任務(wù)操作系統(tǒng)。由于把視頻壓縮和 Web功能集中到一個(gè)體積很小的設(shè)備,可以直接連入局 域網(wǎng),即插即看,省掉復(fù)雜的電纜,安裝方便 (僅需設(shè)置一個(gè) IP 地址 ),用戶也 無需安裝任何硬件設(shè)備,僅用瀏覽器即可觀看。基于嵌入式 Linux 的視頻網(wǎng)絡(luò)監(jiān)控系統(tǒng)將嵌入式 Linux 系統(tǒng)連接上 Web, 即視頻服務(wù)器置一個(gè)嵌入式 Web服務(wù)器,攝像機(jī)傳送來的視頻信號(hào)數(shù)字化后由高 效壓縮芯片壓縮,通過部總線傳送到置的 Web服務(wù)器上。2、緒論視頻監(jiān)控系統(tǒng)是安全防系統(tǒng)的組成部分,它是一種防能力較強(qiáng)的綜合系統(tǒng)。 視頻監(jiān)控以其直觀、方便、信息容豐富而廣泛應(yīng)用于許多場合。近年來,
3、隨著計(jì) 算機(jī)、網(wǎng)絡(luò)以及圖像處理、 傳輸技術(shù)的飛速發(fā)展, 涌現(xiàn)出大量的嵌入式視頻監(jiān)控 系統(tǒng)。21 視頻監(jiān)控系統(tǒng)概述視頻監(jiān)控是利用機(jī)器視覺和圖像處理的方法對(duì)圖像序列進(jìn)行運(yùn)動(dòng)檢測(cè)、 運(yùn)動(dòng) 目標(biāo)分類、 運(yùn)動(dòng)目標(biāo)跟蹤以及對(duì)監(jiān)視場景中目標(biāo)行為的理解與描述。 其中,運(yùn)動(dòng) 檢測(cè)、目標(biāo)分類、 目標(biāo)跟蹤屬于視覺中的低級(jí)和中級(jí)處理部分, 而行為理解和描 述則屬于高級(jí)處理。 運(yùn)動(dòng)撿測(cè)、 運(yùn)動(dòng)目標(biāo)分類與跟蹤是視頻監(jiān)控中研究較多的三 個(gè)問題;而行為理解與描述則是近年來被廣泛關(guān)注的研究熱點(diǎn), 它是指對(duì)目標(biāo)的 運(yùn)動(dòng)模式進(jìn)行分析和識(shí)別,并用自然語言等加以描述。22視頻監(jiān)控系統(tǒng)發(fā)展視頻監(jiān)控技術(shù)的發(fā)展大致可分為四個(gè)階段:閉路電視系
4、統(tǒng)構(gòu)建的模擬系統(tǒng)、 數(shù)字信號(hào)控制的模擬視頻監(jiān)控系統(tǒng)、 數(shù)字硬盤錄像設(shè)備為核心的視頻監(jiān)控系統(tǒng)和 現(xiàn)在的數(shù)字網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)。第一代視頻監(jiān)控系統(tǒng)是采用閉路電視系統(tǒng)構(gòu)建的模擬系統(tǒng), 通過攝像機(jī)、 監(jiān) 視器、磁帶錄像機(jī)等構(gòu)成 I 甜。由于模擬矩陣很難做到數(shù)十路的切換, 不能與報(bào) 警系統(tǒng)聯(lián)動(dòng), 不能對(duì)前端進(jìn)行控制且價(jià)格昂貴、 操作管理復(fù)雜、 很難實(shí)現(xiàn)較大系 統(tǒng)的要求,已經(jīng)逐漸被淘汰。第二代視頻監(jiān)控系統(tǒng)是數(shù)字信號(hào)控制的模擬視頻監(jiān)控系統(tǒng)。 數(shù)字信號(hào)控制的模擬視頻監(jiān)控系統(tǒng)又分為基于微處理器的視頻切換控制加PC機(jī)的多媒體管理和基于 PC機(jī)實(shí)現(xiàn)對(duì)矩陣主機(jī)的切換控制及對(duì)系統(tǒng)的多媒體管理兩種類型。第三代視頻監(jiān)控系統(tǒng)是
5、以數(shù)字硬盤錄像設(shè)備為核心的視頻監(jiān)控系統(tǒng)。 90 年 代末,隨著多媒體技術(shù)、視頻壓縮編碼技術(shù)、網(wǎng)絡(luò)通訊技術(shù)的發(fā)展,數(shù)字錄像監(jiān) 控系統(tǒng)迅速崛起。數(shù)字監(jiān)控錄像系統(tǒng)通常分為兩類:一類是基于 PC機(jī)組合的計(jì)算機(jī)多媒體工 作方式;另一類是嵌入式數(shù)字監(jiān)控錄像系統(tǒng)。1基于 PC的視頻監(jiān)控錄像系統(tǒng)的組成結(jié)構(gòu)為:兼容工控 PC機(jī) +視頻采集卡 +普通較可靠的操作系統(tǒng)平臺(tái) +應(yīng)用軟件 從系統(tǒng)的組成結(jié)構(gòu)來分析:a、PC機(jī)兼容 PC機(jī)用于 24 小時(shí)不間斷工作時(shí),其性能通常是不可靠的,工控 PC 機(jī)相對(duì)兼容 Pc 機(jī)的穩(wěn)定性有一個(gè)檔次上的提高,適用于較復(fù)雜的工作環(huán)境;b、操作系統(tǒng)以 Windows 98 為操作平臺(tái)的系
6、統(tǒng):一般來說, Win98的穩(wěn)定性是有一定 問題的,如果同時(shí)應(yīng)用軟件又不是很規(guī), 這樣就容易在使用過程中出現(xiàn)工作穩(wěn)定、 死機(jī)等問題,而基于 PC機(jī)的視頻監(jiān)控錄像系統(tǒng)其軟件的實(shí)現(xiàn)是在 Windows 95 98NT 等通用操作系統(tǒng)上,同時(shí)系統(tǒng)文件、應(yīng)用軟件和圖像文件都存儲(chǔ)在硬盤 上,視頻處理必須高密度輸入大量數(shù)據(jù), 同時(shí)硬盤要進(jìn)行多工工作, 普通的硬盤 邏輯(如Windows的 FAT32)已無法適應(yīng),以致極易產(chǎn)生系統(tǒng)的不穩(wěn)定性,造成死 機(jī)現(xiàn)象;c、應(yīng)用軟件采用簡易應(yīng)用軟件的系統(tǒng)是不能夠應(yīng)用安防領(lǐng)域的, 視頻監(jiān)控系統(tǒng)的應(yīng)用軟 件能力上應(yīng)支持多任務(wù)并發(fā)處理,如監(jiān)視、錄像、回放、備份、報(bào)警、控制等的
7、 多工處理能力;d、視頻采集卡視頻監(jiān)控錄像系統(tǒng)通常均為多路輸入系統(tǒng), 視頻采集卡可采用多卡方式, 也 可采用單卡方式。一般說,單卡方式集成度高,穩(wěn)定性會(huì)優(yōu)于多卡方式,很多采 用一路一卡的方式很容易形成硬件沖突, 其穩(wěn)定性會(huì)有較大的影響。 目前市場上 也有部分為追求高幀數(shù)而設(shè)計(jì)采用多卡進(jìn)行迭加的多路單卡設(shè)備, 但其仍在計(jì)算 機(jī)的總線上進(jìn)行傳輸、處理, PCI 總線將是系統(tǒng)的瓶頸,不可能會(huì)有質(zhì)的飛躍。22 嵌入方式的數(shù)字監(jiān)控錄像系統(tǒng)嵌入式系統(tǒng)的優(yōu)缺點(diǎn)a、系統(tǒng)為專用系統(tǒng),所以系統(tǒng)小,指令精簡,處理速度快b、系統(tǒng)數(shù)據(jù)置于 ROMFLASH MEMO,RY調(diào)用速度快,不會(huì)被改變,穩(wěn)定性 好C、系統(tǒng)處理實(shí)
8、時(shí)性好,性能穩(wěn)定d、文件管理系統(tǒng)更適合于大量的視頻數(shù)據(jù)e、該類系統(tǒng)目前四路以上機(jī)型還較為少見f 、在網(wǎng)絡(luò)功能、音視頻同步等方面也難令人滿意。第四代視頻監(jiān)控系統(tǒng)一數(shù)字網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng) 1數(shù)字網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的原理數(shù)字網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng) 16J 的關(guān)鍵設(shè)備是網(wǎng)絡(luò)視頻信號(hào)采集終端 ( 也被稱為 視頻服務(wù)器 ) ,網(wǎng)絡(luò)視頻信號(hào)采集終端采用嵌入式實(shí)時(shí)多任務(wù)操作系統(tǒng)。攝像機(jī) 送來的視頻信號(hào)在網(wǎng)絡(luò)視頻信號(hào)采集終端數(shù)字化后由高效壓縮芯片壓縮, 通過部 總線送到網(wǎng)絡(luò)接口發(fā)送到網(wǎng)絡(luò)上 l 刀,網(wǎng)絡(luò)上用戶可以直接用在 PC機(jī)上用瀏覽 器觀看網(wǎng)絡(luò)視頻信號(hào)采集終端傳送過來的攝像機(jī)所拍攝的圖像, 授權(quán)用戶還可以 通過計(jì)算機(jī)
9、網(wǎng)絡(luò)透過網(wǎng)絡(luò)視頻信號(hào)采集終端控制攝像機(jī)鏡頭和云臺(tái)的動(dòng)作或?qū)?系統(tǒng)進(jìn)行配置操作。 由于把視頻壓縮和網(wǎng)絡(luò)功能集中到一個(gè)體積很小的設(shè)備, 可 以直接連入局域網(wǎng),達(dá)到即插即用,省掉多種復(fù)雜的電纜,安裝方便 ( 僅需設(shè)置 一個(gè)坤地址 ) ,用戶也無需安裝任何硬件設(shè)備,僅通過 PC機(jī)用瀏覽器即可觀看。2數(shù)字網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)與其它監(jiān)控系統(tǒng)的比較a、布控區(qū)域廣闊 數(shù)字網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的網(wǎng)絡(luò)視頻信號(hào)采集終端直接連入網(wǎng)絡(luò), 沒有線纜 長度和信號(hào)衰減的限制,同時(shí)網(wǎng)絡(luò)是沒有距離概念的,徹底拋棄了地域的概念, 擴(kuò)展布控區(qū)域。b、系統(tǒng)具有幾乎無限的無縫擴(kuò)展能力所有設(shè)備都以 IP 地址進(jìn)行標(biāo)識(shí),增加設(shè)備只是意味著口地址的擴(kuò)
10、充。c、可組成非常復(fù)雜的監(jiān)控網(wǎng)絡(luò) 采用基于網(wǎng)絡(luò)視頻信號(hào)采集終端為核心的監(jiān)控系統(tǒng), 在組網(wǎng)方式上與傳統(tǒng)的 模擬監(jiān)控和基于 PC平臺(tái)的監(jiān)控方式有極大的不同,由于視頻信號(hào)采集終端輸出 已完成模擬到數(shù)字的轉(zhuǎn)換并壓縮,采用統(tǒng)一的協(xié)議在網(wǎng)絡(luò)上傳輸,支持跨網(wǎng)關(guān)、 跨路由器的遠(yuǎn)程視頻傳輸。d、性能穩(wěn)定可靠,無需專人管理 視頻信號(hào)采集終端實(shí)際上基于嵌入式電腦技術(shù), 采用嵌入式實(shí)時(shí)多任務(wù)操作系統(tǒng),又由于視頻壓縮和網(wǎng)絡(luò)功能集中到一個(gè)體積很小的設(shè)備, 直接連入局域網(wǎng) 或廣域網(wǎng),即插即看,系統(tǒng)的實(shí)時(shí)性、穩(wěn)定性、可靠性大大提高,也無需專人管 理,非常適合于無人值守的環(huán)境。e、當(dāng)監(jiān)控中心需要同時(shí)觀看較多的攝像機(jī)圖像時(shí),對(duì)網(wǎng)
11、絡(luò)帶寬就會(huì)有一定 的要求。2 視頻監(jiān)控系統(tǒng)的應(yīng)用概括來說, 目前視頻監(jiān)控系統(tǒng)應(yīng)用領(lǐng)域主要有以下一 些方面:教育系統(tǒng)主要是校園安全監(jiān)控、電子考場監(jiān)控、網(wǎng)絡(luò)教學(xué)、遠(yuǎn)程教育等;電力系統(tǒng)主要是機(jī)房無人值守、變電站無人值守、發(fā)電廠安全生產(chǎn)管理監(jiān) 控等;公檢法系統(tǒng)主要是社區(qū)監(jiān)控、城市安全監(jiān)控、 監(jiān)獄安全監(jiān)控、 庭審直播等;部隊(duì)系統(tǒng)主要是通信機(jī)房監(jiān)控、作戰(zhàn)指揮系統(tǒng)、倉儲(chǔ)物資監(jiān)控、基層連隊(duì) 的日常管理監(jiān)控系統(tǒng)等;石化系統(tǒng)主要是油井監(jiān)控、儲(chǔ)油庫監(jiān)控、加油站監(jiān)控、石化工廠安全生產(chǎn) 監(jiān)控等;銀行系統(tǒng)主要是銀行監(jiān)控系統(tǒng)的聯(lián)網(wǎng)、儲(chǔ)蓄監(jiān)控、金庫監(jiān)控等;鐵路系統(tǒng)主要是站調(diào)度管理系統(tǒng) (視頻部分 ) 、站安全管理、應(yīng)急指揮系
12、統(tǒng) 等;稅務(wù)系統(tǒng)主要是報(bào)稅服務(wù)大廳監(jiān)控;鋼鐵系統(tǒng)主要是安全生產(chǎn)管理監(jiān)控系統(tǒng);醫(yī)療系統(tǒng)主要是特護(hù)病房視頻監(jiān)控、手術(shù)直播及教學(xué)系統(tǒng)、日常安全管理 監(jiān)控等。本文主要研討該系統(tǒng)的軟件實(shí)現(xiàn)部分3、總體設(shè)計(jì)嵌入式 Linux 視頻網(wǎng)絡(luò)監(jiān)控系統(tǒng)是電工電子裝置、 計(jì)算機(jī)軟硬件以及網(wǎng) 絡(luò)、通信等多方面的有機(jī)組合體,它以智能化、網(wǎng)絡(luò)化、交互性為特征,結(jié)構(gòu)比 較復(fù)雜。如果利用 OSI 七層模型的容和形式, 把相應(yīng)的數(shù)據(jù)采集控制模塊硬件和 應(yīng)用軟件以及應(yīng)用環(huán)境等有機(jī)組合, 可以形成一個(gè)統(tǒng)一的系統(tǒng)總體框架, 其系統(tǒng) 總體框架示意圖如圖 l 所示。系統(tǒng)總體框架示意圖攝像機(jī)傳送來的視頻信號(hào)數(shù)字化后,經(jīng)過壓縮,通過 RS-2
13、32/RS485 將數(shù)據(jù) 送到置的 Web服務(wù)器,嵌入式 LJnux 系統(tǒng)的 10/100M 以太網(wǎng)口實(shí)現(xiàn)接入 Internet 網(wǎng)絡(luò),將現(xiàn)場信號(hào)送到客戶端。 整個(gè)系統(tǒng)的核心是嵌入式 Linux 系統(tǒng)。監(jiān)控系統(tǒng) 啟動(dòng)后,嵌入式 Linux 系統(tǒng)啟動(dòng) WebS erver 服務(wù)程序,接收授權(quán)客戶端瀏覽器 的請(qǐng)求, Web Server 將根據(jù)通信協(xié)議完成相應(yīng)的監(jiān)測(cè)。3.1 硬件設(shè)計(jì)方案系統(tǒng)硬件結(jié)構(gòu)如圖 1 所示,該系統(tǒng)采用 Samsung 公司的 ARM9 核芯片 S3C2440作為硬件平臺(tái)的中央處理器, 該處理器主頻可達(dá) 400MHz,硬件接口和資 源豐富,存儲(chǔ)單元包括 Flash 和 SDR
14、A,MFlash 具有掉電保持?jǐn)?shù)據(jù)的特性, 用于 存儲(chǔ) Bootloader 啟動(dòng)程序、 Linux 核映像、文件系統(tǒng)以及用戶應(yīng)用程序等。 SDRAM數(shù) 據(jù)存取速度大大高于 Flash 存儲(chǔ)器,用于為操作系統(tǒng)和應(yīng)用程序提供 運(yùn)行空間。平臺(tái)利用 RS232 接口輸出調(diào)試信息,通過以太網(wǎng)控制器芯片 DM9000 擴(kuò)展了一個(gè)網(wǎng)口,用于與外部網(wǎng)絡(luò)進(jìn)行通信,通過 USBH OST接 口連接 USB 攝像 頭采集圖像數(shù)據(jù), 經(jīng)處理器壓縮并打包成視頻流后經(jīng)以太網(wǎng)進(jìn)行傳輸, 終端用戶 接收到視頻流,解碼后即可把視頻圖像顯示出來。圖 1 系統(tǒng)硬件結(jié)構(gòu)圖3.2 軟件設(shè)計(jì)方案軟件平臺(tái)采用的嵌入式操作系統(tǒng)為 Linu
15、x 2.6.13 ,Linux 具有核小、效率 高、源碼開放、核直接提供網(wǎng)絡(luò)支持等優(yōu)點(diǎn),但嵌入式系統(tǒng)的硬件資源有限,因 此需根據(jù)實(shí)際需求對(duì)核進(jìn)行裁剪, 配置所需的功能模塊, 然后再移植到硬件平臺(tái) 上。嵌入式系統(tǒng)的軟件開發(fā)采用交叉編譯調(diào)試的方式, 在宿主機(jī)上安裝 Linux 系 統(tǒng),建立交叉編譯環(huán)境, 在宿主機(jī)編寫程序代碼, 再利用交叉編譯工具生成目標(biāo) 機(jī)上可用的可執(zhí)行文件,最后向目標(biāo)機(jī)平臺(tái)移植。3.2.1 視頻采集模塊視頻采集模塊通過嵌入式 Linux 操作系統(tǒng)調(diào)用 Video4Linux(V4L)5 和底層 設(shè)備驅(qū)動(dòng)程序來完成視頻捕獲。 V4L 是 Linux 中關(guān)于視頻設(shè)備的核驅(qū)動(dòng),它為
16、Linux 下的各種視頻設(shè)備提供了統(tǒng)一的編程接口, 應(yīng)用程序通過這些接口函數(shù)就可以操縱各種不同的設(shè)備。視頻采集流程如圖 2 所示圖 2 視頻采集流程(1) 打開視頻設(shè)備。 Linux 下的視頻設(shè)備文件一般為“ /dev/video0 ”,通過 調(diào)用函數(shù) v4l_open( ) ,利用 vd- fd=open( “/dev/video0 ”,O_RDWR打) 開設(shè)備 并獲得設(shè)備文件描述符 vd-fd 。(2) 獲取設(shè)備和圖像信息。通過 v4l_get_capability( ) 函數(shù)獲取設(shè)備信 息, 通過 v4l_get_picture( ) 函數(shù)獲取圖像信息。(3) 存映射。獲取圖像的方式有兩
17、種: read( ) 直接讀取和 mmap( )存映射。 直接讀取方式通過核緩沖區(qū)來讀取圖像數(shù)據(jù),而本文使用存映射方式 mmap( ), 存映射方式可以直接把設(shè)備文件映射到存中, 進(jìn)程可以像訪問普通存一樣對(duì)文件 進(jìn)行訪問,讀取效率更高。初始化存映射時(shí),需在存中開辟一塊空間,利用ioctl(vd-fd,VIDIOCGMBUF,&(vd-mbuf) 操作 取得 需要映射 的存空間 大小 vd-mbuf.size ,利用 mmap( ) 函數(shù),即 vd-map=(unsigned char*) mmap(0, vd-mbuf.size, PROT_READ | PROT_WRITE,MAP_SHAR
18、ED, vd-fd, 0操) 作,把設(shè) 備文件的容映射到存, vd-map 指針?biāo)赶虻拇鎱^(qū)即為采集的圖像數(shù)據(jù), 且此存 區(qū)具有可讀寫和共享屬性。(4) 初始化采集參數(shù)。設(shè)置采集視頻圖像的寬度、高度、格式等信息。(5) 采集視頻數(shù)據(jù)。利用 ioctl(vd-fd, VIDIOCMCAPTURE, &(vd-mmap) 操 作采集一幀圖像并存放到存映射區(qū),采集一幀圖像后要進(jìn)行同步操作,利用 ioctl(vd-fd, VIDIOCSYNC,&(vd- frame_current)操作判斷該幀圖像是否獲取完畢。對(duì)于獲取到的視頻圖像,通過視頻壓縮模塊壓縮成 MPEG-4視 頻流,再 通過視頻傳輸模塊把
19、數(shù)據(jù)發(fā)送到以太網(wǎng)進(jìn)行傳輸。3.2.2 視頻壓縮模塊從攝像頭直接采集過來的圖像由于數(shù)據(jù)量較大, 不利于進(jìn)行網(wǎng)絡(luò)傳輸, 因此 需先對(duì)其進(jìn)行壓縮編碼。 MPEG-4是 目前網(wǎng)絡(luò)多媒體傳輸?shù)闹饕袷?,具有高?的壓縮率, 它利用很窄的帶寬, 通過幀重建技術(shù)來壓縮圖像數(shù)據(jù), 以求利用最少 的數(shù)據(jù)獲得最佳的圖像質(zhì)量, 可滿足實(shí)時(shí)視頻傳輸?shù)囊蟆?本文用軟件方式進(jìn)行 視頻編碼,選擇開源高效的 Xvid 視頻編碼器對(duì)采集的視頻圖像數(shù)據(jù)進(jìn)行 MPEG-4 壓縮編碼。Xvid 視頻編碼器選用 0.9.2 版本,因?yàn)樵摪姹疽呀?jīng)實(shí)現(xiàn)了 MPEG-4的 Simple Profile ( SP)特性,而 1.0 以后的版
20、本增加了很多 Advanced SP(ASP) 特性及其他功能, ASP 特性的加入會(huì)增加運(yùn)算復(fù)雜度, 降低編碼速度, 由于嵌入 式系統(tǒng)的處理能力有限, 一般只使用 Xvid 的 SP 特性,因此實(shí)驗(yàn)選用 Xvid0.9.2編碼器,交叉編譯并移植到嵌入式系統(tǒng)。在宿主機(jī)Linux 操作系統(tǒng)中對(duì)Xvid0.9.2 進(jìn)行交叉編譯的步驟如下:(1) 解壓縮 Xvid 源碼: tar xzvf xvidcore- 0.9.2.tar.gz(2) 進(jìn)入 build/generic 目錄,創(chuàng)建編譯配置文件。由于 Xvid 沒有針對(duì) ARM的 匯編優(yōu)化,因此編譯時(shí)需將匯編關(guān)閉;還需指定程序所運(yùn)行的平臺(tái)為 ar
21、m-linux 。執(zhí)行命令: ./configure -disable-assembly -host=arm-linux(3) 編譯: make; make install 。(4) 交 叉 編 譯 完 成 后 會(huì) 生 成 靜 態(tài) 庫 libxvidcore.a 和 動(dòng) 態(tài) 庫 libxvidcore.so.* ,用戶程序可利用庫文件所提供的編程接口調(diào)用 Xvid 里面的 函數(shù)。攝像頭采集的視頻幀為 YUV420 格式,通過 Xvid 編碼器的 encoder_encode 函數(shù)實(shí)現(xiàn)視頻壓縮,該函數(shù)定義如下: int encoder_encode(Encoder * pEnc, XVID_EN
22、C_FRAME * pFrame, XVID_ENC_STATS *pResult)其; 中, pEnc 為編碼器 實(shí)例的句柄; pFrame 是 XVID_ENC_FRAM類E 型的結(jié)構(gòu)體變量,負(fù)責(zé)傳遞參數(shù)信 息給編碼器,這些信息包含色彩空間、編碼質(zhì)量、輸入輸出數(shù)據(jù)緩沖區(qū)指針等; pResult 是 XVID_ENC_STAT類S 型的結(jié)構(gòu)體變量, 可以返回編碼操作執(zhí)行的狀態(tài) 信息。3.2.3 視頻傳輸模塊視頻傳輸模塊負(fù)責(zé)把壓縮后的視頻流傳輸?shù)揭蕴W(wǎng),對(duì)實(shí)時(shí)性要求較高, 本文使用實(shí)時(shí)傳輸協(xié)議( Real-time Transport Protocol,RTP),它可以在一對(duì)一或者一對(duì)多的網(wǎng)絡(luò)
23、環(huán)境中實(shí)現(xiàn)流媒體數(shù)據(jù)的實(shí)時(shí)傳輸。JRTPLIB7 是一個(gè)利用C+語言實(shí)現(xiàn)的開源 RTP 庫,它完全遵循 RFC 1889 設(shè)計(jì),使用 SOCKET機(jī) 制實(shí) 現(xiàn)網(wǎng)絡(luò)通訊,可運(yùn)行于包括 Linux 和 Windows 在的多種不同操作系統(tǒng)上。本文Linux ,接收端為使用 JRTPLIB 進(jìn)行實(shí)時(shí)流媒體編程,發(fā)送端操作系統(tǒng)為Windows。在 Linux 平臺(tái)上用 JRTPLIB 進(jìn)行實(shí)時(shí)多媒體編程前,需先對(duì) JRTPLIB 進(jìn)行交叉編譯。(1) JRTPLIB 初 始 化 通 過 調(diào) 用 RTPSessionParams 類 的 SetOwnTimestampUnit( ) 方 法 設(shè) 置 一
24、個(gè) 恰 當(dāng) 的 時(shí) 間 戳 , 調(diào) 用 SetMaximumPacketSize( ) 方法設(shè)置允許傳輸?shù)淖畲?RTP 包字節(jié)數(shù) (默認(rèn)為 1400 字節(jié)) ;通過調(diào)用 RTPUDPv4TransmissionParams類 的 SetPortbase( ) 方法設(shè)置 發(fā)送端數(shù)據(jù)傳輸所用的端口號(hào) (需為偶數(shù) ) 。初始化完這兩個(gè)變量后,通過 RTPSession 類的 Create( ) 方法創(chuàng)建一個(gè) RTP 會(huì)話。(2) JRTPLIB 數(shù)據(jù)傳輸 RTP 會(huì)話創(chuàng)建完成后,還需指定數(shù)據(jù)發(fā)送的目標(biāo)地 址, RTP 協(xié)議允許一個(gè)會(huì)話包含多個(gè)目標(biāo)地址,增加或刪除目標(biāo)地址可通過RTPSession 類
25、 的 AddDestination( ) 、 DeleteDestination( ) 、 ClearDestinations( ) 方法來實(shí)現(xiàn)。目標(biāo)地址指定之后,通過 RTPSession 類的 SendPacket( ) 方法即可向指定的目標(biāo)地址發(fā)送流媒體數(shù)據(jù)。 SendPacket( ) 是一 個(gè)重載函數(shù),具有多種形式,本文使用的形式為: int SendPacket(const void *data, size_t len, uint8_t pt, bool mark, uint32_t timestampinc); 當(dāng)一幀數(shù)據(jù)所占字節(jié)數(shù)大于允許傳輸?shù)淖畲?RTP 包字節(jié)數(shù) MaxPa
26、cketSize 時(shí), 需對(duì)一幀數(shù)據(jù)進(jìn)行分割傳輸,使每次發(fā)送的字節(jié)數(shù)不大于MaxPacketSize ,可使用 SendPacket( ) 的 mark 參數(shù)來標(biāo)識(shí)傳輸?shù)?RTP 包是否屬于同一幀數(shù)據(jù),若一 幀數(shù)據(jù)需分成 N 次發(fā)送,則前 N-1 次發(fā)送的 RTP 包的 mark 標(biāo)志設(shè)為 0,第 N 次 發(fā)送的 RTP 包的 mark 標(biāo)志設(shè)為 1,即以 mark=1 來判斷分割傳輸?shù)臄?shù)據(jù)是否發(fā) 送完成。實(shí)現(xiàn)過程如下:doif(lengthMaxPacketSize)mark=0;發(fā)送長度為 MaxPacketSize 的 RTP 包 ;length=length-MaxPacketSize;elsemark=1;發(fā)送長度為 length 的 RTP 包;break; / 一幀數(shù)據(jù)發(fā)送完成while(1);(3) JRTPLIB 數(shù)據(jù)接收接收數(shù)據(jù)時(shí),以 BeginDataAccess( )函數(shù)開始,以 EndDataAccess( ) 函數(shù)結(jié)束。 為了能正確接收同一數(shù)據(jù)源的數(shù)據(jù)報(bào), 必須先對(duì)數(shù)據(jù)源表 (source table )加鎖, BeginDataAccess( ) 函數(shù)可實(shí)現(xiàn)這一加鎖操作, 確保在使用數(shù)據(jù)源表的同時(shí)輪詢 (poll) 線程不能訪問它,此時(shí)可進(jìn)行數(shù)據(jù)接收操作,當(dāng)正確接收一個(gè)數(shù)據(jù)報(bào)后, 調(diào)用 EndDataAccess( ) 函
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度大型建筑鋼材項(xiàng)目集中采購合同
- 2024年銷售人員業(yè)績合同2篇
- 2025年度個(gè)人二手房買賣協(xié)議書范本:二手房交易法律咨詢合同
- 2025年度內(nèi)部員工股權(quán)激勵(lì)計(jì)劃變更與股權(quán)轉(zhuǎn)讓合同
- 二零二五年度奶粉行業(yè)市場分析報(bào)告定制合同
- 二零二五年度培訓(xùn)中心教師教學(xué)資源共享聘用合同
- 2025年度私人旅行規(guī)劃服務(wù)合同2篇
- 2025版抹灰班組安全生產(chǎn)責(zé)任制考核合同4篇
- 2025年度自動(dòng)駕駛汽車測(cè)試場租賃合同范本3篇
- 二零二五年度民間借貸裁判觀點(diǎn)與法律適用合同4篇
- 醫(yī)師定期考核 (公共衛(wèi)生)試題庫500題(含答案)
- 基因突變和基因重組(第1課時(shí))高一下學(xué)期生物人教版(2019)必修2
- 內(nèi)科學(xué)(醫(yī)學(xué)高級(jí)):風(fēng)濕性疾病試題及答案(強(qiáng)化練習(xí))
- 音樂劇好看智慧樹知到期末考試答案2024年
- 辦公設(shè)備(電腦、一體機(jī)、投影機(jī)等)采購 投標(biāo)方案(技術(shù)方案)
- 案卷評(píng)查培訓(xùn)課件模板
- 2024年江蘇省樣卷五年級(jí)數(shù)學(xué)上冊(cè)期末試卷及答案
- 人教版初中英語七八九全部單詞(打印版)
- 波浪理論要點(diǎn)圖解完美版
- 金融交易數(shù)據(jù)分析與風(fēng)險(xiǎn)評(píng)估項(xiàng)目環(huán)境敏感性分析
- 牛頓環(huán)與劈尖實(shí)驗(yàn)論文
評(píng)論
0/150
提交評(píng)論