




已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
基于嵌入式Linux的視頻 監(jiān)控系統(tǒng)的軟件設(shè)計基于嵌入式Linux的視頻監(jiān)控系統(tǒng)的軟件設(shè)計1、引言隨著計算機(jī)技術(shù)及網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展,公安、安防行業(yè)的發(fā)展趨勢必然是全面數(shù)字化、網(wǎng)絡(luò)化。傳統(tǒng)的模擬閉路電視監(jiān)控系統(tǒng)有很多局限性:傳輸距離有限、無法聯(lián)網(wǎng),而且模擬視頻信號數(shù)據(jù)的存儲會耗費大量的存儲介質(zhì)(如錄像帶),查詢?nèi)∽C時十分煩瑣。 基于個人計算機(jī)的視頻監(jiān)控系統(tǒng)終端功能較強(qiáng),但穩(wěn)定性不好,視頻前端(如電壓耦合元件等視頻信號的采集、壓縮、通訊)較為復(fù)雜,可靠性不高?;谇度胧絃inux視頻的網(wǎng)絡(luò)監(jiān)控系統(tǒng)不需要用于處理模擬視頻信號的個人計算機(jī),而是把視頻服務(wù)器內(nèi)置一個嵌入式Web服務(wù)器,采用嵌入式實時多任務(wù)操作系統(tǒng)。 由于把視頻壓縮和Web功能集中到一個體積很小的設(shè)備內(nèi),可以直接連入局域網(wǎng),即插即看,省掉復(fù)雜的電纜,安裝方便(僅需設(shè)置一個IP地址),用戶也無需安裝任何硬件設(shè)備,僅用瀏覽器即可觀看。 基于嵌入式Linux的視頻網(wǎng)絡(luò)監(jiān)控系統(tǒng)將嵌入式Linux系統(tǒng)連接上Web,即視頻服務(wù)器內(nèi)置一個嵌入式Web服務(wù)器,攝像機(jī)傳送來的視頻信號數(shù)字化后由高效壓縮芯片壓縮,通過內(nèi)部總線傳送到內(nèi)置的Web服務(wù)器上。2、緒論視頻監(jiān)控系統(tǒng)是安全防范系統(tǒng)的組成部分,它是一種防范能力較強(qiáng)的綜合系統(tǒng)。視頻監(jiān)控以其直觀、方便、信息內(nèi)容豐富而廣泛應(yīng)用于許多場合。近年來,隨著計算機(jī)、網(wǎng)絡(luò)以及圖像處理、傳輸技術(shù)的飛速發(fā)展,涌現(xiàn)出大量的嵌入式視頻監(jiān)控系統(tǒng)。21視頻監(jiān)控系統(tǒng)概述視頻監(jiān)控是利用機(jī)器視覺和圖像處理的方法對圖像序列進(jìn)行運動檢測、運動目標(biāo)分類、運動目標(biāo)跟蹤以及對監(jiān)視場景中目標(biāo)行為的理解與描述。其中,運動檢測、目標(biāo)分類、目標(biāo)跟蹤屬于視覺中的低級和中級處理部分,而行為理解和描述則屬于高級處理。運動撿測、運動目標(biāo)分類與跟蹤是視頻監(jiān)控中研究較多的三個問題;而行為理解與描述則是近年來被廣泛關(guān)注的研究熱點,它是指對目標(biāo)的運動模式進(jìn)行分析和識別,并用自然語言等加以描述。22視頻監(jiān)控系統(tǒng)發(fā)展視頻監(jiān)控技術(shù)的發(fā)展大致可分為四個階段:閉路電視系統(tǒng)構(gòu)建的模擬系統(tǒng)、數(shù)字信號控制的模擬視頻監(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ù)十路的切換,不能與報警系統(tǒng)聯(lián)動,不能對前端進(jìn)行控制且價格昂貴、操作管理復(fù)雜、很難實現(xiàn)較大系統(tǒng)的要求,已經(jīng)逐漸被淘汰。第二代視頻監(jiān)控系統(tǒng)是數(shù)字信號控制的模擬視頻監(jiān)控系統(tǒng)。數(shù)字信號控制的模擬視頻監(jiān)控系統(tǒng)又分為基于微處理器的視頻切換控制加PC機(jī)的多媒體管理和基于PC機(jī)實現(xiàn)對矩陣主機(jī)的切換控制及對系統(tǒng)的多媒體管理兩種類型。第三代視頻監(jiān)控系統(tǒng)是以數(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ī)多媒體工作方式;另一類是嵌入式數(shù)字監(jiān)控錄像系統(tǒng)。1基于PC的視頻監(jiān)控錄像系統(tǒng)的組成結(jié)構(gòu)為:兼容工控PC機(jī)+視頻采集卡+普通較可靠的操作系統(tǒng)平臺+應(yīng)用軟件從系統(tǒng)的組成結(jié)構(gòu)來分析:a、PC機(jī)兼容PC機(jī)用于24小時不間斷工作時,其性能通常是不可靠的,工控PC機(jī)相對兼容Pc機(jī)的穩(wěn)定性有一個檔次上的提高,適用于較復(fù)雜的工作環(huán)境;b、操作系統(tǒng)以Windows 98為操作平臺的系統(tǒng):一般來說,Win98的穩(wěn)定性是有一定問題的,如果同時應(yīng)用軟件又不是很規(guī)范,這樣就容易在使用過程中出現(xiàn)工作穩(wěn)定、死機(jī)等問題,而基于PC機(jī)的視頻監(jiān)控錄像系統(tǒng)其軟件的實現(xiàn)是在Windows 9598NT等通用操作系統(tǒng)上,同時系統(tǒng)文件、應(yīng)用軟件和圖像文件都存儲在硬盤上,視頻處理必須高密度輸入大量數(shù)據(jù),同時硬盤要進(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)視、錄像、回放、備份、報警、控制等的多工處理能力;d、視頻采集卡視頻監(jiān)控錄像系統(tǒng)通常均為多路輸入系統(tǒng),視頻采集卡可采用多卡方式,也可采用單卡方式。一般說,單卡方式集成度高,穩(wěn)定性會優(yōu)于多卡方式,很多采用一路一卡的方式很容易形成硬件沖突,其穩(wěn)定性會有較大的影響。目前市場上也有部分為追求高幀數(shù)而設(shè)計采用多卡進(jìn)行迭加的多路單卡設(shè)備,但其仍在計算機(jī)的總線上進(jìn)行傳輸、處理,PCI總線將是系統(tǒng)的瓶頸,不可能會有質(zhì)的飛躍。22嵌入方式的數(shù)字監(jiān)控錄像系統(tǒng)嵌入式系統(tǒng)的優(yōu)缺點a、系統(tǒng)為專用系統(tǒng),所以系統(tǒng)小,指令精簡,處理速度快b、系統(tǒng)數(shù)據(jù)置于ROMFLASH MEMORY,調(diào)用速度快,不會被改變,穩(wěn)定性好C、系統(tǒng)處理實時性好,性能穩(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ò)視頻信號采集終端(也被稱為視頻服務(wù)器),網(wǎng)絡(luò)視頻信號采集終端采用嵌入式實時多任務(wù)操作系統(tǒng)。攝像機(jī)送來的視頻信號在網(wǎng)絡(luò)視頻信號采集終端數(shù)字化后由高效壓縮芯片壓縮,通過內(nèi)部總線送到網(wǎng)絡(luò)接口發(fā)送到網(wǎng)絡(luò)上l刀,網(wǎng)絡(luò)上用戶可以直接用在PC機(jī)上用瀏覽器觀看網(wǎng)絡(luò)視頻信號采集終端傳送過來的攝像機(jī)所拍攝的圖像,授權(quán)用戶還可以通過計算機(jī)網(wǎng)絡(luò)透過網(wǎng)絡(luò)視頻信號采集終端控制攝像機(jī)鏡頭和云臺的動作或?qū)ο到y(tǒng)進(jìn)行配置操作。由于把視頻壓縮和網(wǎng)絡(luò)功能集中到一個體積很小的設(shè)備內(nèi),可以直接連入局域網(wǎng),達(dá)到即插即用,省掉多種復(fù)雜的電纜,安裝方便(僅需設(shè)置一個坤地址),用戶也無需安裝任何硬件設(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ò)視頻信號采集終端直接連入網(wǎng)絡(luò),沒有線纜長度和信號衰減的限制,同時網(wǎng)絡(luò)是沒有距離概念的,徹底拋棄了地域的概念,擴(kuò)展布控區(qū)域。b、系統(tǒng)具有幾乎無限的無縫擴(kuò)展能力所有設(shè)備都以IP地址進(jìn)行標(biāo)識,增加設(shè)備只是意味著口地址的擴(kuò)充。c、可組成非常復(fù)雜的監(jiān)控網(wǎng)絡(luò)采用基于網(wǎng)絡(luò)視頻信號采集終端為核心的監(jiān)控系統(tǒng),在組網(wǎng)方式上與傳統(tǒng)的模擬監(jiān)控和基于PC平臺的監(jiān)控方式有極大的不同,由于視頻信號采集終端輸出已完成模擬到數(shù)字的轉(zhuǎn)換并壓縮,采用統(tǒng)一的協(xié)議在網(wǎng)絡(luò)上傳輸,支持跨網(wǎng)關(guān)、跨路由器的遠(yuǎn)程視頻傳輸。d、性能穩(wěn)定可靠,無需專人管理視頻信號采集終端實際上基于嵌入式電腦技術(shù),采用嵌入式實時多任務(wù)操作系統(tǒng),又由于視頻壓縮和網(wǎng)絡(luò)功能集中到一個體積很小的設(shè)備內(nèi),直接連入局域網(wǎng)或廣域網(wǎng),即插即看,系統(tǒng)的實時性、穩(wěn)定性、可靠性大大提高,也無需專人管理,非常適合于無人值守的環(huán)境。e、當(dāng)監(jiān)控中心需要同時觀看較多的攝像機(jī)圖像時,對網(wǎng)絡(luò)帶寬就會有一定的要求。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)控、庭審直播等;部隊系統(tǒng)主要是通信機(jī)房監(jiān)控、作戰(zhàn)指揮系統(tǒng)、倉儲物資監(jiān)控、基層連隊的日常管理監(jiān)控系統(tǒng)等;石化系統(tǒng)主要是油井監(jiān)控、儲油庫監(jiān)控、加油站監(jiān)控、石化工廠安全生產(chǎn)監(jiān)控等;銀行系統(tǒng)主要是銀行監(jiān)控系統(tǒng)的聯(lián)網(wǎng)、儲蓄監(jiān)控、金庫監(jiān)控等;鐵路系統(tǒng)主要是站內(nèi)調(diào)度管理系統(tǒng)(視頻部分)、站內(nèi)安全管理、應(yīng)急指揮系統(tǒng)等;稅務(wù)系統(tǒng)主要是報稅服務(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)的軟件實現(xiàn)部分3、總體設(shè)計 嵌入式Linux視頻網(wǎng)絡(luò)監(jiān)控系統(tǒng)是電工電子裝置、計算機(jī)軟硬件以及網(wǎng)絡(luò)、通信等多方面的有機(jī)組合體,它以智能化、網(wǎng)絡(luò)化、交互性為特征,結(jié)構(gòu)比較復(fù)雜。如果利用OSI七層模型的內(nèi)容和形式,把相應(yīng)的數(shù)據(jù)采集控制模塊硬件和應(yīng)用軟件以及應(yīng)用環(huán)境等有機(jī)組合,可以形成一個統(tǒng)一的系統(tǒng)總體框架,其系統(tǒng)總體框架示意圖如圖l所示。系統(tǒng)總體框架示意圖攝像機(jī)傳送來的視頻信號數(shù)字化后,經(jīng)過壓縮,通過RS-232/RS485將數(shù)據(jù)送到內(nèi)置的Web服務(wù)器,嵌入式LJnux系統(tǒng)的 10/100M以太網(wǎng)口實現(xiàn)接入Internet網(wǎng)絡(luò),將現(xiàn)場信號送到客戶端。整個系統(tǒng)的核心是嵌入式Linux系統(tǒng)。監(jiān)控系統(tǒng)啟動后,嵌入式Linux 系統(tǒng)啟動Web Server服務(wù)程序,接收授權(quán)客戶端瀏覽器的請求,Web Server將根據(jù)通信協(xié)議完成相應(yīng)的監(jiān)測。3.1硬件設(shè)計方案系統(tǒng)硬件結(jié)構(gòu)如圖1 所示,該系統(tǒng)采用Samsung 公司的ARM9 內(nèi)核芯片S3C2440作為硬件平臺的中央處理器,該處理器主頻可達(dá)400MHz,硬件接口和資源豐富,存儲單元包括Flash 和SDRAM,F(xiàn)lash 具有掉電保持?jǐn)?shù)據(jù)的特性,用于存儲Bootloader 啟動程序、Linux 內(nèi)核映像、文件系統(tǒng)以及用戶應(yīng)用程序等。SDRAM 數(shù)據(jù)存取速度大大高于Flash 存儲器,用于為操作系統(tǒng)和應(yīng)用程序提供運行空間。平臺利用RS232 接口輸出調(diào)試信息,通過以太網(wǎng)控制器芯片DM9000 擴(kuò)展了一個網(wǎng)口,用于與外部網(wǎng)絡(luò)進(jìn)行通信,通過USB HOST 接口連接USB 攝像頭采集圖像數(shù)據(jù),經(jīng)處理器壓縮并打包成視頻流后經(jīng)以太網(wǎng)進(jìn)行傳輸,終端用戶接收到視頻流,解碼后即可把視頻圖像顯示出來。圖1 系統(tǒng)硬件結(jié)構(gòu)圖3.2軟件設(shè)計方案軟件平臺采用的嵌入式操作系統(tǒng)為Linux 2.6.13,Linux 具有內(nèi)核小、效率高、源碼開放、內(nèi)核直接提供網(wǎng)絡(luò)支持等優(yōu)點,但嵌入式系統(tǒng)的硬件資源有限,因此需根據(jù)實際需求對內(nèi)核進(jìn)行裁剪,配置所需的功能模塊,然后再移植到硬件平臺上。嵌入式系統(tǒng)的軟件開發(fā)采用交叉編譯調(diào)試的方式,在宿主機(jī)上安裝Linux 系統(tǒng),建立交叉編譯環(huán)境,在宿主機(jī)編寫程序代碼,再利用交叉編譯工具生成目標(biāo)機(jī)上可用的可執(zhí)行文件,最后向目標(biāo)機(jī)平臺移植。3.2.1 視頻采集模塊視頻采集模塊通過嵌入式Linux 操作系統(tǒng)調(diào)用Video4Linux(V4L)5和底層設(shè)備驅(qū)動程序來完成視頻捕獲。V4L 是Linux 中關(guān)于視頻設(shè)備的內(nèi)核驅(qū)動,它為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)內(nèi)存映射。獲取圖像的方式有兩種:read( )直接讀取和mmap( )內(nèi)存映射。直接讀取方式通過內(nèi)核緩沖區(qū)來讀取圖像數(shù)據(jù),而本文使用內(nèi)存映射方式mmap( ),內(nèi)存映射方式可以直接把設(shè)備文件映射到內(nèi)存中,進(jìn)程可以像訪問普通內(nèi)存一樣對文件進(jìn)行訪問,讀取效率更高。初始化內(nèi)存映射時,需在內(nèi)存中開辟一塊空間,利用ioctl(vd-fd,VIDIOCGMBUF,&(vd-mbuf)操作取得需要映射的內(nèi)存空間大小vd-mbuf.size,利用mmap( )函數(shù),即vd-map=(unsigned char*) mmap(0, vd-mbuf.size, PROT_READ | PROT_WRITE,MAP_SHARED, vd-fd, 0)操作,把設(shè)備文件的內(nèi)容映射到內(nèi)存,vd-map 指針?biāo)赶虻膬?nèi)存區(qū)即為采集的圖像數(shù)據(jù),且此內(nèi)存區(qū)具有可讀寫和共享屬性。(4)初始化采集參數(shù)。設(shè)置采集視頻圖像的寬度、高度、格式等信息。(5)采集視頻數(shù)據(jù)。利用ioctl(vd-fd, VIDIOCMCAPTURE, &(vd-mmap)操作采集一幀圖像并存放到內(nèi)存映射區(qū),采集一幀圖像后要進(jìn)行同步操作,利用ioctl(vd-fd, VIDIOCSYNC,&(vd- frame_current)操作判斷該幀圖像是否獲取完畢。對于獲取到的視頻圖像,通過視頻壓縮模塊壓縮成MPEG-4 視頻流,再通過視頻傳輸模塊把數(shù)據(jù)發(fā)送到以太網(wǎng)進(jìn)行傳輸。3.2.2 視頻壓縮模塊從攝像頭直接采集過來的圖像由于數(shù)據(jù)量較大,不利于進(jìn)行網(wǎng)絡(luò)傳輸,因此需先對其進(jìn)行壓縮編碼。MPEG-4 是目前網(wǎng)絡(luò)多媒體傳輸?shù)闹饕袷?,具有高效的壓縮率,它利用很窄的帶寬,通過幀重建技術(shù)來壓縮圖像數(shù)據(jù),以求利用最少的數(shù)據(jù)獲得最佳的圖像質(zhì)量,可滿足實時視頻傳輸?shù)囊?。本文用軟件方式進(jìn)行視頻編碼,選擇開源高效的Xvid 視頻編碼器對采集的視頻圖像數(shù)據(jù)進(jìn)行MPEG-4 壓縮編碼。Xvid 視頻編碼器選用0.9.2 版本,因為該版本已經(jīng)實現(xiàn)了MPEG-4 的Simple Profile(SP)特性,而1.0 以后的版本增加了很多Advanced SP(ASP)特性及其他功能,ASP 特性的加入會增加運算復(fù)雜度,降低編碼速度,由于嵌入式系統(tǒng)的處理能力有限,一般只使用Xvid 的SP 特性,因此實驗選用Xvid0.9.2 編碼器,交叉編譯并移植到嵌入式系統(tǒng)內(nèi)。在宿主機(jī)Linux 操作系統(tǒng)中對Xvid0.9.2 進(jìn)行交叉編譯的步驟如下:(1) 解壓縮Xvid 源碼:tar xzvf xvidcore- 0.9.2.tar.gz(2) 進(jìn)入build/generic 目錄,創(chuàng)建編譯配置文件。由于Xvid 沒有針對ARM 的匯編優(yōu)化,因此編譯時需將匯編關(guān)閉;還需指定程序所運行的平臺為arm-linux。執(zhí)行命令:./configure -disable-assembly -host=arm-linux(3) 編譯:make; make install 。(4) 交叉編譯完成后會生成靜態(tài)庫libxvidcore.a 和動態(tài)庫libxvidcore.so.*,用戶程序可利用庫文件所提供的編程接口調(diào)用Xvid 里面的函數(shù)。攝像頭采集的視頻幀為YUV420 格式,通過Xvid 編碼器的encoder_encode 函數(shù)實現(xiàn)視頻壓縮,該函數(shù)定義如下:int encoder_encode(Encoder * pEnc, XVID_ENC_FRAME * pFrame, XVID_ENC_STATS *pResult);其中,pEnc 為編碼器實例的句柄;pFrame 是XVID_ENC_FRAME 類型的結(jié)構(gòu)體變量,負(fù)責(zé)傳遞參數(shù)信息給編碼器,這些信息包含色彩空間、編碼質(zhì)量、輸入輸出數(shù)據(jù)緩沖區(qū)指針等;pResult 是XVID_ENC_STATS 類型的結(jié)構(gòu)體變量,可以返回編碼操作執(zhí)行的狀態(tài)信息。3.2.3 視頻傳輸模塊視頻傳輸模塊負(fù)責(zé)把壓縮后的視頻流傳輸?shù)揭蕴W(wǎng),對實時性要求較高,本文使用實時傳輸協(xié)議(Real-time Transport Protocol,RTP),它可以在一對一或者一對多的網(wǎng)絡(luò)環(huán)境中實現(xiàn)流媒體數(shù)據(jù)的實時傳輸。JRTPLIB7是一個利用C+語言實現(xiàn)的開源RTP 庫,它完全遵循RFC 1889 設(shè)計,使用SOCKET 機(jī)制實現(xiàn)網(wǎng)絡(luò)通訊,可運行于包括Linux 和Windows 在內(nèi)的多種不同操作系統(tǒng)上。本文使用JRTPLIB 進(jìn)行實時流媒體編程,發(fā)送端操作系統(tǒng)為Linux,接收端為Windows。在Linux 平臺上用JRTPLIB 進(jìn)行實時多媒體編程前,需先對JRTPLIB 進(jìn)行交叉編譯。(1) JRTPLIB 初始化通過調(diào)用RTPSessionParams 類的SetOwnTimestampUnit( )方法設(shè)置一個恰當(dāng)?shù)臅r間戳,調(diào)用 SetMaximumPacketSize( )方法設(shè)置允許傳輸?shù)淖畲驲TP 包字節(jié)數(shù)(默認(rèn)為1400 字節(jié));通過調(diào)用RTPUDPv4TransmissionParams 類的SetPortbase( )方法設(shè)置發(fā)送端數(shù)據(jù)傳輸所用的端口號(需為偶數(shù))。初始化完這兩個變量后,通過RTPSession 類的Create( )方法創(chuàng)建一個RTP 會話。(2) JRTPLIB 數(shù)據(jù)傳輸RTP 會話創(chuàng)建完成后,還需指定數(shù)據(jù)發(fā)送的目標(biāo)地址,RTP 協(xié)議允許一個會話包含多個目標(biāo)地址, 增加或刪除目標(biāo)地址可通過RTPSession 類的AddDestination( ) 、DeleteDestination( )、ClearDestinations( )方法來實現(xiàn)。目標(biāo)地址指定之后,通過RTPSession 類的SendPacket( )方法即可向指定的目標(biāo)地址發(fā)送流媒體數(shù)據(jù)。SendPacket( )是一個重載函數(shù),具有多種形式,本文使用的形式為:int SendPacket(const void *data, size_t len, uint8_t pt, bool mark, uint32_t timestampinc);當(dāng)一幀數(shù)據(jù)所占字節(jié)數(shù)大于允許傳輸?shù)淖畲驲TP 包字節(jié)數(shù)MaxPacketSize 時,需對一幀數(shù)據(jù)進(jìn)行分割傳輸,使每次發(fā)送的字節(jié)數(shù)不大于MaxPacketSize,可使用SendPacket( )的mark參數(shù)來標(biāo)識傳輸?shù)腞TP 包是否屬于同一幀數(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ā)送完成。實現(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ù)時,以BeginDataAccess( )函數(shù)開始,以EndDataAccess( )函數(shù)結(jié)束。為了能正確接收同一數(shù)據(jù)源的數(shù)據(jù)報,必須先對數(shù)據(jù)源表(source table)加鎖,BeginDataAccess( )函數(shù)可實現(xiàn)這一加鎖操作,確保在使用數(shù)據(jù)源表的同時輪詢(poll)線程不能訪問它,此時可進(jìn)行數(shù)據(jù)接收操作,當(dāng)正確接收一個數(shù)據(jù)報后,調(diào)用EndDataAccess( )函數(shù)即可
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- CSR企業(yè)社會責(zé)任
- 醫(yī)療診斷技術(shù)的進(jìn)步與疾病治療效率的提升
- 混學(xué)模式下學(xué)生自主學(xué)習(xí)能力培養(yǎng)的策略研究
- 教育環(huán)境中學(xué)生學(xué)習(xí)成就感的提升策略研究
- 技術(shù)創(chuàng)新在醫(yī)療領(lǐng)域的應(yīng)用與前景
- XXX市重大項目推進(jìn)情況的匯報范文
- 直腸陰道瘺課件
- 麗水市教育局直屬學(xué)校選聘筆試真題2024
- 2025年中國蘆筍切筍機(jī)行業(yè)投資前景及策略咨詢研究報告
- 2025年中國胎黃梨行業(yè)投資前景及策略咨詢研究報告
- 中國古代文學(xué)作品選復(fù)習(xí)資料
- 末梢采血課件
- 2022年昌吉回族自治州昌吉工會系統(tǒng)招聘考試題庫及答案解析
- 腫瘤標(biāo)志物及其臨床意義課件
- 幼兒教育學(xué)試題及答案
- 設(shè)備供應(yīng)商評估報告
- 學(xué)習(xí)單元3.2鋼結(jié)構(gòu)工程清單計價.課件
- 魏晉南北朝史講義ppt課件
- 思想品德鑒定表(范例)
- 未注公差的直徑尺寸公差I(lǐng)T
- 上海市高級人民法院關(guān)于供應(yīng)商與超市之間合同糾紛案件若干問題的解答
評論
0/150
提交評論