基于字符串的IPC網(wǎng)絡(luò)協(xié)議的設(shè)計與實現(xiàn)_第1頁
基于字符串的IPC網(wǎng)絡(luò)協(xié)議的設(shè)計與實現(xiàn)_第2頁
基于字符串的IPC網(wǎng)絡(luò)協(xié)議的設(shè)計與實現(xiàn)_第3頁
基于字符串的IPC網(wǎng)絡(luò)協(xié)議的設(shè)計與實現(xiàn)_第4頁
基于字符串的IPC網(wǎng)絡(luò)協(xié)議的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、本 科 畢 業(yè) 設(shè) 計(論文)題 目:基于字符串的IPC網(wǎng)絡(luò)協(xié)議的設(shè)計與實現(xiàn)學(xué)生姓名:學(xué) 號:專業(yè)班級:終極一班指導(dǎo)教師:2013年 6月15日基于字符串的IPC網(wǎng)絡(luò)協(xié)議的設(shè)計與實現(xiàn)摘 要IPC即網(wǎng)絡(luò)攝像頭,嵌入式IPC是指把CPU、音視頻解壓縮芯片、I/O等硬件設(shè)備、操作系統(tǒng)和應(yīng)用程序集成在一起的IPC。本協(xié)議是IPC和IPC、IPC和客戶端之間、IPC和中心服務(wù)器、以及IPC和手機等各種終端之間的接口協(xié)議,適用于IPC同支持其的各類客戶端、控制設(shè)備,客戶端一般通過網(wǎng)絡(luò)連接IPC,控制設(shè)備一般與IPC串行方式通訊。本協(xié)議的代碼部分采用source insight編輯器,采用Linux系統(tǒng)環(huán)境

2、下的ARM平臺交叉編譯生成可執(zhí)行文件以及可升級文件,將可執(zhí)行文件掛載到IPC或者BLOCK365開發(fā)板上就可以運行可執(zhí)行文件,也可以用升級工具將可升級文件升級到IPC或者BLOCK365開發(fā)板的芯片中。系統(tǒng)最終實現(xiàn)了視頻編碼,音頻功能,網(wǎng)絡(luò)功能,云臺、鏡頭控制功能,緩存功能,報警輸入輸出,移動檢測報警視頻分析,視覺參數(shù)調(diào)節(jié),編碼參數(shù)調(diào)節(jié),系統(tǒng)集成等一系列的功能。關(guān)鍵詞:C/C+;ARM平臺;Linux操作系統(tǒng);應(yīng)用層和傳輸層網(wǎng)絡(luò)協(xié)議Design and implementation of network protocol based on the IPC stringAbstractIPC i

3、s a network camera,embedded IPC refers to the CPU,audio and video codec chip,IVO and other hardware devices,operating system and application integration with IPC.This protocol is IPC and IPC, between IPC and client, IPC and center server, as well as IPC and mobile phone etc. various between terminal

4、 interface protocol, suitable for IPC to support all kinds of the client, the client control equipment, general IPC connection through the network, control equipment and IPC serial communication. The code portion of this agreement by the source insight editor, the Linux system under the environment

5、of ARM platform compiler generates executable file and update file, the executable file is mounted to the IPC or BLOCK365 development board will be able to run the executable file, can also upgrade file to upgrade to IPC or BLOCK365 development board of the chip with the upgrade tool.The system real

6、izes video coding, audio function, network function, PTZ, lens control function, the cache function, input and output of alarm, video analysis of mobile detection alarm, visual parameter adjustment, coding parameter adjustment, system integration and a series of functions.Keywords:C/C+;ARM platform;

7、Linux operating system;the application layer and the transport layer protocols目 錄第1章 引言1第2章 IPC的基本理論知識32.1 IPC的產(chǎn)品介紹32.2 IPC的主要功能42.3 IPC的分類52.4 IPC的專業(yè)術(shù)語5第3章 IPC所用到的軟件網(wǎng)絡(luò)以及硬件技術(shù)73.1 IPC用到的軟件技術(shù)73.1.1 用到的組件73.1.2 開發(fā)技術(shù)以及常用技術(shù)73.2 IPC用到的網(wǎng)絡(luò)協(xié)議93.2.1 IPC網(wǎng)絡(luò)協(xié)議的應(yīng)用層協(xié)議93.2.2 IPC網(wǎng)絡(luò)協(xié)議的傳輸層協(xié)議103.3 IPC所用到的硬件技術(shù)11第4章 IPC的

8、詳細設(shè)計實現(xiàn)134.1 整個系統(tǒng)的詳細設(shè)計134.2 登錄登出?;盍鞒?34.2.1 普通登錄134.2.2 主動注冊登錄144.2.3 登出144.2.4 ?;?44.3 監(jiān)視控制流程144.3.1 普通監(jiān)視控制144.3.2主動注冊監(jiān)視控制154.4 回放控制流程154.4.1 普通回放控制154.4.2 主動注冊回放控制164.5 語音對講流程164.5.1 普通語音對講164.5.2主動注冊語音對講164.6 云臺控制流程16第5章 IPC的系統(tǒng)功能測試185.1 視頻回放過程中的聲音卡頓185.2 屬性修改問題195.3 視頻顯示不同步問題20第6章 總結(jié)23致 謝25參考文獻26第

9、1章 引言隨著國家科技水平的進步以及經(jīng)濟實力的提升,政府和人民對安全的要求越來越重視,安防這一行業(yè)正是在這樣的背景下發(fā)展起來的,我國的安防業(yè)從八十年代開始起步,目前已基本成型,且安防行業(yè)正經(jīng)歷著一個高速增長期,產(chǎn)品開始走向高清化、行業(yè)化、智能化應(yīng)用,整個安防產(chǎn)業(yè)呈現(xiàn)出蓬勃發(fā)展的形式,主要表現(xiàn)在以下幾個部分:1. 需求量不斷增加。目前不僅國內(nèi)需求廣泛,國外也正大量進口我國的安防類產(chǎn)品,比如國內(nèi)的兩大安防巨頭,??岛驼憬笕A,他們早已經(jīng)發(fā)展成一個規(guī)模龐大的企業(yè),企業(yè)不僅擁有完善的管理制度,更有體系的培養(yǎng)人才的培訓(xùn)機構(gòu),在大量銷售產(chǎn)品的同時他們還在全國各主要地區(qū)以及海外設(shè)置了辦事處或者生產(chǎn)基地,以供

10、售后服務(wù)。你可以在很多場合安裝安防類產(chǎn)品(IPC,DVG,HVR),就是說它的應(yīng)用相當廣泛,目前已應(yīng)用于物聯(lián)網(wǎng)、智能交通、智能家居、教育、視頻會議、醫(yī)療等方面。2. 技術(shù)創(chuàng)新推動產(chǎn)業(yè)升級。安防產(chǎn)業(yè)開始以產(chǎn)品發(fā)展到以系統(tǒng)競爭為主,企業(yè)也從以技術(shù)和產(chǎn)品為主轉(zhuǎn)移到以客戶服務(wù)為主。這是該行業(yè)新的發(fā)展方向、新的機遇以及新的挑戰(zhàn)。大型體育活動比如奧運會以及銀行等金融業(yè),城市安全等高端應(yīng)用中,安防產(chǎn)品正以其無可取代的作用影響著我們的生活學(xué)習(xí)以及工作,它不僅提高了生活質(zhì)量,構(gòu)建了和諧社會,還維護了社會的公共安全以及個人人身財產(chǎn)的安全。3. 自由競爭度高。安防產(chǎn)業(yè)閃現(xiàn)著一種“百花齊放”的形式,目前還未形成隴斷競

11、爭,以后相當長的一段時間內(nèi)也不會出現(xiàn)這種狀況。雖然目前國內(nèi)發(fā)展很好的兩個企業(yè)控制著大量的市場,但是依然有小的安防類企業(yè)可以生存并快速發(fā)展了起來,這在其他很多行業(yè)是不可能也是不可思議的。就比如我現(xiàn)在所在的公司,短短的四年時間已發(fā)展成一個擁有600多人的小中型企業(yè),并且在華東,華南,華西以及華北都擁有自己的售后服務(wù)中心,在我短短的兩個月的實習(xí)期間我就看到不少海外的顧客或者代理商到我們公司參觀以及談業(yè)務(wù)。由此可見,安防業(yè)的自由競爭度相當高,只要你有技術(shù)跟市場,你不必擔心大的企業(yè)會形成隴斷。安防產(chǎn)品種類奇多,包含了報警、門禁、可視對講、巡更、監(jiān)控、線纜、巡更等,產(chǎn)品線寬廣,廠商不僅可以集中做某種產(chǎn)品,

12、而不是整個一系列產(chǎn)品線,也可以做一個系列的產(chǎn)品,就是大家所熟知的一條龍生產(chǎn)線。4. 管理資本力量加速企業(yè)發(fā)展。安防產(chǎn)業(yè)正從之前的邊緣性產(chǎn)品逐漸發(fā)展為國民生產(chǎn)中的支柱產(chǎn)業(yè)。近年來不斷地有新的安防企業(yè)上市,資金的大量投入為這一行業(yè)的加速發(fā)展起著不可忽視的作用。一些安防企業(yè)要想在這個領(lǐng)域立足必須不斷提升整體運營能力以及發(fā)展自身培養(yǎng)人才的能力,還要有資金周轉(zhuǎn)以及引進投資的的能力,使企業(yè)能夠在強大的資本推動下持續(xù)健康地發(fā)展。另外,市場也是不可忽視的,好的安防企業(yè)在全國各大地區(qū)都有辦事處甚至是生產(chǎn)基地,有些還把市場伸到了國外。本課題主要是實現(xiàn)IPC和IPC,IPC和客戶端,IPC和中心服務(wù)器之間以及IPC

13、與手機等終端之間的接口協(xié)議,簡稱IPCIP(IP camera Interface Protocol)。本協(xié)議適用于IPC同支持其的各類客戶端、控制設(shè)備,客戶端一般通過網(wǎng)絡(luò)連接IPC,連接方式是遠程終端控制telnet,通過cmd或者XSHELL打開telnet終端,連接上IPC的IP地址,然后輸入用戶密碼進入Linux操作系統(tǒng),進入指定目錄下運行可執(zhí)行文件使IPC工作,最終再通過IE端進行控制處理。適用于IPC同支持其的各類客戶端、控制設(shè)備,客戶端一般通過網(wǎng)絡(luò)連接IPC,控制設(shè)備一般與IPC串行方式通訊。系統(tǒng)最終可以實現(xiàn)視頻編碼,音頻功能,網(wǎng)絡(luò)功能,云臺、鏡頭控制功能,緩存功能,報警輸入輸出

14、,移動檢測報警視頻分析,視覺參數(shù)調(diào)節(jié),編碼參數(shù)調(diào)節(jié),系統(tǒng)集成等一系列的功能。但是由于器材的原因所以我在演示功能的時候有些可能無法展示出來,比如說移動監(jiān)測報警視頻分析,這一功能的實現(xiàn)需要申請報警輸入輸出設(shè)備線,而公司對這一層管理的很嚴格,所以不能輕易申請下來。再有就是云臺、鏡頭控制功能,公司內(nèi)部設(shè)備是無法連到外網(wǎng)上的,或者說公司限制了電腦以及設(shè)備的MAC地址連接外網(wǎng),而這一功能必須要服務(wù)器端連接到云平臺上,客戶通過云平臺登錄方可實現(xiàn)這一功能。第2章 IPC的基本理論知識 2.1 IPC的產(chǎn)品介紹IPC1又叫網(wǎng)絡(luò)攝像機或者IP攝像機,近幾年得益于網(wǎng)絡(luò)帶寬,DSP芯片技術(shù)的發(fā)展,ARM平臺的不斷完善

15、,以及算法技術(shù)存儲技術(shù)的進步而得到大力發(fā)展。IPC采用標準H.264/MPEG4視頻壓縮技術(shù),壓縮比高,碼流控制穩(wěn)定、準確。采用Sony專業(yè)CCD圖像傳感器,高色彩還原度。支持紅外夜視功能,可視距離10到20米。支持多碼流,ACF(活動幀率控制),支持豐富的網(wǎng)絡(luò)協(xié)議,包括TCP、UDP、NAT等。支持RS485控制以及透明串口功能。支持報警I/O功能,各類事件可聯(lián)動報警。支持SD卡存儲圖像功能,可熱插拔。支持POE/12VDC功能,支持JPEG抓圖等功能。從實現(xiàn)的功能來講,IPC相當于“模擬攝像機+視頻編碼器(DVS)”構(gòu)成的聯(lián)合體,但從設(shè)備構(gòu)成角度講,IPC與“模擬攝像機+DVS”的聯(lián)合體是

16、有本質(zhì)區(qū)別的,IPC從視頻采集、編碼壓縮到網(wǎng)絡(luò)傳輸,所有環(huán)節(jié)都可以實現(xiàn)全數(shù)字化,而“模擬攝像機+DVS”聯(lián)合體需要經(jīng)過多次模/數(shù)轉(zhuǎn)換過程,即IPC才是真正的純數(shù)字化設(shè)備,這是二者的本質(zhì)區(qū)別,也因此導(dǎo)致“模擬攝像機+DVS”的聯(lián)合體的圖像技術(shù)指標無法與IPC相比。IPC本身可以看作是鏡頭、攝像機、視頻采集卡、計算機、操作系統(tǒng)、軟件、網(wǎng)卡等多元素的集合體。注意:IPC與我們常見的電腦攝像頭不同,電腦攝像頭即Web Camera,如身邊常見的聊天攝像頭,其實質(zhì)是一種視頻采集設(shè)備,本身不具備視頻編碼壓縮及傳輸功能,通常通過USB接口連接到電腦,由電腦實現(xiàn)視頻編碼及傳輸功能,而IPC是完全獨立的設(shè)備,不

17、依賴PC,自帶處理器、操作系統(tǒng)及緩存,需要配置IP地址,可以獨立完成視頻采集、編碼壓縮及網(wǎng)絡(luò)傳輸功能。IPC可以安裝在局域網(wǎng),也可以安裝在互聯(lián)網(wǎng)環(huán)境中,用戶可以使用IE等瀏覽器在網(wǎng)絡(luò)任何位置對IPC進行顯示及控制,這種相對獨立的工作模式使得IPC既適合大規(guī)模視頻監(jiān)控系統(tǒng)應(yīng)用,也可以獨立分散地應(yīng)用在如商店、學(xué)校、家庭等分布式、需要遠程視頻監(jiān)控的環(huán)境中。舉例:“青島、紐約”。想象這樣一個場景:當你在美國出差時,打開電腦瀏覽器或PDA手機,輸入IP地址或域名及密碼,這時屏幕中出現(xiàn)了地球另一端“青島”你們家的畫面,臥室、客廳各個房間都可進行實時視頻瀏覽,你可以看看你們家的花花草草、看看你們家的阿貓阿狗

18、。你會因此而多一份安心,少一份牽掛。而這僅僅需要在家中安裝幾個IPC,然后與網(wǎng)絡(luò)連接即可,非常簡單。如今,網(wǎng)絡(luò)視頻監(jiān)控已經(jīng)走出了傳統(tǒng)“安防電視監(jiān)控”的下一領(lǐng)域。2.2 IPC的主要功能要詳細介紹IPC的產(chǎn)品功能就得首先介紹一下DVR2的產(chǎn)品功能,DVR和IPC基本原理是一樣的,所用的網(wǎng)絡(luò)協(xié)議也一樣,不同的是DVR多了一個錄像功能,我們來看DVR的含義,DVR全稱DIGITAL VIDEO RECORDER,數(shù)字視頻錄像機,就是說它本身自帶錄像功能,還有就是他帶有多個攝像頭,目前最多可支持16路。DVR的功能支持本地監(jiān)控,錄像存儲,偵測報警,外部報警,錄像回放,遠程監(jiān)控等。最主要的功能就是錄像存

19、儲,錄像回放,報警。錄像存儲包括配置錄像,手動錄像。偵測報警包括移動偵測,視頻遮擋,視頻丟失。錄像回放包括同步回放,異步回放;優(yōu)先解碼,平分解碼,全速解碼。IPC與DVR一樣支持上面這些功能,另外兩者還支持一系列的網(wǎng)絡(luò)服務(wù)功能。比如PPPOE撥號連接、NTP服務(wù)、3G、WIFI、ARSP、EMAIL、手機監(jiān)控、DDNS等。在兩者的錄像存儲中(IPC的存儲錄像功能需要插上存儲卡)你可以對錄像視頻中的圖像進行抓圖,而抓圖又可分為手動抓圖,配置抓圖。云臺和鍵盤的控制:配置相應(yīng)的波特率,協(xié)議,地址位,然后接線正確就可以控制球機或者鍵盤。編碼與解碼:不同設(shè)備的編解碼能力是不一樣的例如5008A-S的編碼

20、能力最大是支持實時幀率25幀的2D1+6CIF;解碼能力就是2D1全實時解碼。5016H-E支持16D1的全實時編碼,支持8D1的全實時解碼。到這里我想可以在IPC和DVR的基礎(chǔ)上拓展HVR了。HVR是在DVR的基礎(chǔ)上開發(fā)的一款DVR與NVR之間過渡的產(chǎn)品,既可以做DVR使用,也可以做NVR使用,也可以同時做DVR和NVR。HVR的出現(xiàn)是為了滿足市場對高分辨率圖像的需求,目前DVR最大的錄像分辨率是960H的,普通DVR只能做到D1編碼,根據(jù)市場上現(xiàn)有的存儲高分辨率圖像的產(chǎn)品,主要有3個:NVR,960HDVR,SDI接口錄像機,HVR的使用一般是與IPC一起搭配使用。一般的使用都是在局域網(wǎng)上

21、使用。在公網(wǎng)上實現(xiàn)的主要是,遠程監(jiān)控(輔碼流),遠程配置,錄像下載,語音對講等功能。2.3 IPC的分類與平常所用的模擬攝像機一樣,IPC也可以分成多種,可以按照外形分類、按照清晰度分類、按照室內(nèi)及室外應(yīng)用進行分類。通常的分類方法是按照固定攝像機、PTZ攝像機、半球攝像機、一體球攝像機等直觀外形特征進行分類。1.標準室內(nèi)槍機網(wǎng)絡(luò)攝像機:此類攝像機具有固定或手動可變焦距鏡頭,一般用于監(jiān)視固定場所,配合安裝支架,實現(xiàn)中焦、遠景或廣角場景的監(jiān)視功能,配合相應(yīng)的防護罩可以應(yīng)用于室外環(huán)境,攝像機現(xiàn)場FOV(Filed Of View)可以手動進行調(diào)整。2.高清百萬網(wǎng)絡(luò)攝像機:百萬像素攝像機是一種特殊的I

22、PC,顧名思義,百萬像素攝像機指成像像素達到100萬以上的IPC,目前市場上的可以達到150萬像素,而最新產(chǎn)品甚至可以達到200萬。這是模擬攝像機最高可達到的分辨率的兩倍以上,從而可以顯示出更細微的內(nèi)容以便增強對目標識別能力,也可覆蓋更大范圍內(nèi)的場景以節(jié)省攝像機安裝數(shù)量。百萬像素攝像機通常配置百萬像素圖像傳感器,其高像素級為網(wǎng)絡(luò)帶寬和存儲帶來更高的要求。3.PTZ及一體球IPC:此類攝像機為可變焦距、可變角度攝像機,通過遠程操作實現(xiàn)焦距及角度的控制,因此擁有大范圍如室內(nèi)大堂、室外廣場、停車場等場景的監(jiān)視功能。與模擬PTZ攝像機區(qū)別在于此類IPC不需要單獨布置控制線纜便可以實現(xiàn)對PTZ的控制,因

23、為下行的PTZ控制型號通過網(wǎng)絡(luò)進行傳輸。與傳統(tǒng)模擬PTZ及一體球型攝像機類似,此類IPC通常具有預(yù)置位、隱私遮擋、自動跟蹤等多種功能,屬于高端應(yīng)用類攝像機。4.固定半球IPC:此類攝像機一般采用固定焦距或手動變焦鏡頭,內(nèi)置與半球護罩內(nèi),外觀漂亮便于安裝,通常需要天花板支撐安裝,缺點是鏡頭基本固定,由于空間有限難于更換其他焦距的鏡頭,攝像機現(xiàn)場FOV(Filed Of View)固定,難于調(diào)整。5.紅外防水網(wǎng)絡(luò)攝像機:防水防塵。6.防爆半球型網(wǎng)絡(luò)攝像機以及紅外防爆半球型網(wǎng)絡(luò)攝像機:與上面的相比多了防爆還有日夜轉(zhuǎn)換的功能。2.4 IPC的專業(yè)術(shù)語1.IP(互聯(lián)網(wǎng)協(xié)議)互聯(lián)網(wǎng)協(xié)議是一種通過網(wǎng)絡(luò)傳輸數(shù)

24、據(jù)的方式,是用于報文交換網(wǎng)絡(luò)的一種面向數(shù)據(jù)的協(xié)議,數(shù)據(jù)在IP互聯(lián)網(wǎng)中傳送時會被封裝為報文。2.ASIC(專用集成電路)它是為特定應(yīng)用設(shè)計的一種電路,與一般用途的電路(比如微處理器)相區(qū)分。3.分辨率圖像分辨率是度量數(shù)碼圖像清晰程度的一種方法:分辨率越高,圖像清晰程度就越高。分辨率可以通過縱向(寬度)像素數(shù)*橫向(高度)像素數(shù)來表達,如320*240。4.CIFCIF即通用中間格式。在PAL制式下,CIF是352*288像素,在NTSC制式下CIF是352*240像素的視頻分辨率。5.幀率幀率(FPS)用于描述視頻流更新的頻率,用幀/秒表示,當幀率達到每秒鐘25幀以上(PAL)時,人眼認為視頻是

25、即時的。6.HTTPHTTP即超文本傳輸協(xié)議,為網(wǎng)站上運行的文件(文本、圖形、聲音、視頻、和其他多媒體文件)設(shè)定規(guī)則,HTTP協(xié)議在TCP/IP協(xié)議組的上端運行。第3章 IPC所用到的軟件網(wǎng)絡(luò)以及硬件技術(shù)3.1 IPC用到的軟件技術(shù)3.1.1 用到的組件IPC與DVR一樣,在軟件開發(fā)過程中用到了一些組件3,如GUI、Widget組件、GDI組件、Comm組件、Media組件、Manager、ExchangeAL組件;Json4、XML、Zlib、ZZIP、Squirrel;Storage、WFS;Infra組件;NetIP組件;TPBase。GUI:圖形用戶界面,包含了各種GUI界面的實現(xiàn),是

26、GUI應(yīng)用的重點。Widget:各個GUI控件的實現(xiàn)(Button,ComboBox、ListBox等)GDI:各種圖形算法的實現(xiàn),輸入法,多語言,字庫。Comm組件:包括報警、云臺、串口、前面板Media組件:GUI業(yè)務(wù)核心組件,包括DVR的一些核心功能(視頻編碼、回放、錄像、語音對講(音頻編碼)、抓圖、預(yù)覽)。Manager、ExchangeAL組件:配置管理、事件管理、日志、用戶管理、升級、自動維護、配置交換。Infra組件:線程、定時器、信號量、互斥鎖、時間。3.1.2 開發(fā)技術(shù)以及常用技術(shù)可以在Linux下開發(fā),也可以在Windows下開發(fā)。由于本人對Windows下的開發(fā)工具相對而

27、言熟悉一點,這是在實習(xí)的初期。所以當時選擇在Windows下進行開發(fā)。當然經(jīng)過兩個多月的學(xué)習(xí)發(fā)現(xiàn)其實Linux下的功能也很強大,在Linux下編譯時只需寫一個makefile文件,把文件中的依賴以及它的路徑還有命令行寫好就可以通過終端的一個make命令對工程進行編譯,生成可執(zhí)行文件。我們是生成一個可執(zhí)行文件包,里面包括可執(zhí)行文件,可升級文件以及串口升級文件等等,所以我們采用的是make pack命令。之前我一直用的VC工具進行編輯編譯以及鏈接運行,在公司大家都是用的是source insight編輯器,而我在學(xué)習(xí)這一編輯器后發(fā)現(xiàn)它的功能確實強大,使用也很方便。它內(nèi)置對C/C+、Java甚至x8

28、6匯編語言程序的解析。在編程時可以給你提供有用的函數(shù)、宏、參數(shù)等提示,可能剛開始的時候使用起來不太方便,但是習(xí)慣后絕對是你編程的首選,當然這也和個人習(xí)慣有關(guān),有些人用慣了VC,就愿意使用VC,這也是無可厚非的,沒有誰規(guī)定必須用哪一個工具經(jīng)行編輯。程序?qū)懞靡院缶鸵M行編譯了。編譯是在Linux操作系統(tǒng)環(huán)境下的ARM5平臺交叉進行的。當把編譯過程中的錯誤改完后就可以生成可執(zhí)行文件了,我們生成的是Sofia文件以及可升級的bin文件。由于公司的編譯環(huán)境早就搭好,所以一直以來我是直接用的,沒有考慮到搭建環(huán)境這一環(huán)節(jié),知道回學(xué)校的十天前。在之前的工作中,早已意識到編譯環(huán)境不簡單,因為它要適應(yīng)各種類型的D

29、SP6芯片,各種類型的開發(fā)板,而這些都需要在各種ARM平臺上才能運行,所以需要在Linux系統(tǒng)中或者虛擬機中植入ARM平臺方可進行g(shù)cc7和g+交叉編譯。了解了這些后我就跟主管要了一個Linux安裝包,他給了我一個ubuntu還有dm365的ARM平臺安裝軟件包,而主管在給我這些后就不再管我了,我想他是想試試我的個人能力。因為我在跟他反映安裝中出現(xiàn)的問題時他對我說這個你自己解決就行了,所以一遇到問題我就只能百度解決了,但是由于百度上面的問題解答有時和我遇到的具體問題不是太接近,所以我只能慢慢搜尋答案,雖然明白編譯環(huán)境不是那么好搭建,但我仍要一直仔細的尋找,慢慢的找下去,即使緩慢也能接近吧。當我

30、欣喜若狂的自以為配好環(huán)境并改變了Linux系統(tǒng)的環(huán)境變量,我以為我成功了,可是再次開啟系統(tǒng)時怎么也打不開,百度才知道是因為有些不必修改的環(huán)境變量被修改了,只要改回來就行,可是我用ctrl+alt+F1進入終端,再進入Vi /etc/profile改回來也無法啟動系統(tǒng),說到這我要聲明一下為什么我安裝ubuntu系統(tǒng)而不是安裝虛擬機,因為我的系統(tǒng)內(nèi)存只有2G,而且電腦用了好幾年,內(nèi)部有些零部件開始氧化,已經(jīng)非???,如果再按虛擬機的話系統(tǒng)可能跑不起來,所以我就安裝了ubuntu系統(tǒng)。再一次安裝完系統(tǒng)并成功植入ARM平臺而且改好環(huán)境變量后依然是無法編譯,我根據(jù)終端給出的錯誤提示適當?shù)男薷牧薽akef

31、ile文件,在這還要聲明一下,之前在公司為了配合整個公司的研發(fā)工作,所有寫好的程序都必須放到服務(wù)器上固定的目錄下,每個人都有一個自己專屬的目錄,所以makefile文件中的依賴關(guān)系中的文件路徑都必須寫好以方便其他同事使用,也就是說makefile文件編寫必須統(tǒng)一。所以我把程序轉(zhuǎn)移到自己的電腦后也需要對makefile文件進行相應(yīng)的修改??墒敲髅饕呀?jīng)修改對了還是無法通過編譯,浪費了兩天時間才知道原來我安裝的ubuntu是64位操作系統(tǒng),對我需要的ARM不兼容,不過此時我沒有浪費時間的失望以及無法解決問題的灰心的感覺,因為我仿佛看到了勝利的曙光。果然在我換好32為操作系統(tǒng)并進行一系列的環(huán)境變量配置

32、,ARM平臺移植后可以進行編譯了,盡管還是會遇到細微的編譯錯誤,但這些都是很容易解決的,我只需加一條chmod命令使它對后面所有遇到需要獲取權(quán)限的文件有效就可以了。終于在連續(xù)一周時間內(nèi)的每天下午7點到夜里12點的這段時間內(nèi)成功配置好了編譯環(huán)境,因為白天是要工作的,在公司不允許你干自己的事。說到這可能你會有疑問,既然不允許干自己的事那我畢業(yè)設(shè)計怎么能在工作時間做的,那是因為我的畢業(yè)設(shè)計就是我的工作之一,我寫好的程序以后工作中會用到,而且這也是領(lǐng)導(dǎo)安排給我的任務(wù)。3.2 IPC用到的網(wǎng)絡(luò)協(xié)議傳統(tǒng)模擬閉路電視監(jiān)控系統(tǒng)已經(jīng)無法客戶的需求。IPC重要功能之一是能夠?qū)崿F(xiàn)遠程監(jiān)控。IPC存儲數(shù)據(jù)的網(wǎng)絡(luò)傳輸、

33、集中管理功能更是廣大客戶的喜好。3.2.1 IPC網(wǎng)絡(luò)協(xié)議的應(yīng)用層協(xié)議IPC在應(yīng)用層的協(xié)議8包括HTTP、FTP、RTSP、DDNS、ADSL、DHCP、PPPoE、SMTP、DNS、QoS等等。HTTP:一種超文本傳輸協(xié)議,是基于客戶端瀏覽器以及其他程序與Web服務(wù)器間的通信協(xié)議。端口號:80。錯誤代碼解釋:HTTP 400 - 請求無效。HTTP 403 - 禁止訪問。HTTP 404 - 無法找到文件。HTTP 405 - 資源被禁止。HTTP 406 - 無法接受。Error 501 - 未實現(xiàn)。HTTP 502 - 網(wǎng)關(guān)錯誤。FTP:一種文件傳輸協(xié)議,主機間可以通過輸入相互之間的IP

34、地址共享文件。端口:21、20。RTSP:定義:定義了一對多應(yīng)用程序如何有效地通過IP網(wǎng)絡(luò)傳送多媒體數(shù)據(jù)。應(yīng)用:實時流協(xié)議是應(yīng)用級協(xié)議,控制實時數(shù)據(jù)的發(fā)送。它提供了一個可擴展框架,使實時數(shù)據(jù),如音頻與視頻,的受控、點播成為可能。數(shù)據(jù)源包括現(xiàn)場數(shù)據(jù)與存儲在剪輯中數(shù)據(jù)。DDNS:將用戶的動態(tài)IP地址映射到一個固定的域名解析服務(wù)上,用戶每次連接網(wǎng)絡(luò)的時候客戶端程序就會通過信息傳遞把該主機的動態(tài)IP地址傳送給位于服務(wù)商主機上的服務(wù)器程序,服務(wù)項目器程序負責(zé)提供DNS服務(wù)并實現(xiàn)動態(tài)域名解析。DDNS在監(jiān)控行業(yè)中的應(yīng)用:目前ISP大多為我們提供動態(tài)IP(ADSL撥號上網(wǎng)),而很多網(wǎng)絡(luò)視頻服務(wù)器和網(wǎng)絡(luò)攝像機

35、通過遠程訪問時需要一個固定的IP,而固定IP的費用很難讓客戶接受。所以DDNS為大家提出了一種全新的解決方案,它可以捕獲用戶每次變化的IP,然后將其與域名相對應(yīng),這樣客戶可以通過域名來進行遠程監(jiān)控了。DDNS解決方案:1、路由器外掛 。2、集成DDNS的監(jiān)控設(shè)備。3、運行DDNS客戶端軟件。ADSL非對稱數(shù)字用戶環(huán)路,一種非對稱的DSL技術(shù),所謂非對稱是指用戶線的上行速率與下行速率不同,上行速率低,下行速率高,特別適合傳輸多媒體信息業(yè)務(wù),如視頻點播、多媒體信息檢索和其他交互式業(yè)務(wù)。DHCP:一個局域網(wǎng)的網(wǎng)絡(luò)協(xié)議,使用UDP協(xié)議工作,主要有兩個用途:給內(nèi)部網(wǎng)絡(luò)或網(wǎng)絡(luò)服務(wù)供應(yīng)商自動分配IP地址給用

36、戶給內(nèi)部網(wǎng)絡(luò)管理員作為對所有計算機作中央管理的手段。PPPoE:可以使以太網(wǎng)的主機通過一個簡單的橋接設(shè)備連到一個遠端的接入集中器上。SMTP:是一組用于由源地址到目的地址傳送郵件的規(guī)則,由它來控制信件的中轉(zhuǎn)方式。DNS:在Internet上域名與IP地址之間是一對一(或者多對一)。QoS:一種安全的網(wǎng)絡(luò)機制, 可以解決網(wǎng)絡(luò)延遲和阻塞等問題。3.2.2 IPC網(wǎng)絡(luò)協(xié)議的傳輸層協(xié)議IPC在傳輸層上的協(xié)議主要包括TCP以及UDP,我們公司還提供了一種云服務(wù)VVNAT。TCP是目前傳輸層上應(yīng)用相對廣泛的協(xié)議,因為他的三次握手保證了發(fā)送的可靠性安全性,根據(jù)接收到的數(shù)據(jù)量來確定的數(shù)據(jù)確認數(shù)及數(shù)據(jù)發(fā)送、接收

37、完畢后何時撤消聯(lián)系,并建立虛連接。不容易出現(xiàn)發(fā)送丟幀的情況,即使發(fā)生了也會有很好地解決措施。UDP是直接發(fā)送,發(fā)送的時候不用向PU(前端,指編碼器,包括DVR,DVS,IPC等)或者CU(客戶端,指WEB,SNS等)發(fā)送請求,QQ就采用的這種發(fā)送方式,所以QQ經(jīng)常會出現(xiàn)發(fā)送的信號丟失的情況,但是UDP協(xié)議在語音對講時采用的很多。為了保證實時性所以UDP協(xié)議在這是必要的。還有我們公司自己提供的VVNAT,也稱云平臺,PU端連接到云平臺,CU端通過云平臺來訪問PU端。之前還有一種訪問方式,就是說PU端分配了好多IP地址,這些IP地址用了不同的端口,CU端訪問這些端口時通過DNS解析將PU端的端口解

38、析成自己能夠識別的端口進行訪問,之前這兩種訪問方式是分開進行的,最近正在調(diào)試將兩種合在一起,把第二種也加進云平臺,這樣就可以統(tǒng)一在云平臺給用戶提供服務(wù),這部分代碼我已經(jīng)完成,應(yīng)用部那邊還沒改好,需要與他們聯(lián)合調(diào)試,所以一直未能進行,這項工作我想會在畢業(yè)以后回單位再跟他們合作完成吧。3.3 IPC所用到的硬件技術(shù)目前DVR以及IPC的平臺廠商主要有:大陸海思半導(dǎo)體(Hisilicon)、德州儀器(TI)、臺灣智源(Faraday)、以及其他的一些方案等等。但DVR硬件的組成不盡相同,DVR方案設(shè)計中的硬件大致有一下幾個部分組成:1.處理器。2.內(nèi)存3.Flash4.前端視頻編解碼(AD)5.后端

39、視頻解碼(DA)6.存儲相關(guān)硬件7.其他外圍8.電源部分。1.處理器:控制完成取出指令和執(zhí)行指令任務(wù)的部件,它是系統(tǒng)的核心部件.我所了解的IPC方案中應(yīng)用的中央處理器采用的芯片是Hi3515,TI (DM365) GM8181等。Hi3516集成高性能的ARM Cortex A9 作為主控CPU,完成系統(tǒng)任務(wù)和部分音視頻處理功能。其主要規(guī)格如下: 集成32KB L1 指令Cache 和32KB L1 數(shù)據(jù)Cache,集成256KB L2 Cache,集成VFP, 功能最高頻率800MHz,處理能力可達2000DMIPS。2.內(nèi)存:連接CPU 和其他設(shè)備的通道,用來存儲CPU處理的臨時數(shù)據(jù)和程序

40、指令,起到緩沖和數(shù)據(jù)交換作用。內(nèi)存的性能指標:存儲容量,存儲速度,存儲的可靠性,性能價格比。內(nèi)存的現(xiàn)狀:內(nèi)存技術(shù)發(fā)展主要側(cè)重于提高速度和擴充容量,圍繞這個主題,目前已經(jīng)誕生了多種新技術(shù),比較有代表性的有:DDR SDRAM、SLDRAM以及RDRAM家族的Concurrent RDRAM和Direct RDRAM。3. Flash:閃存是一種無揮發(fā)性( Non-Volatile )內(nèi)存,在沒有電流供應(yīng)的條件下也能夠長久地保持數(shù)據(jù),其存儲特性相當于硬盤,這項特性正是閃存得以成為各類便攜型數(shù)字設(shè)備的存儲介質(zhì)的基礎(chǔ)。在DVR中Flash主要放置程序和資源。4. 前端視頻編解碼(AD):前端視頻解碼芯

41、片簡稱前端AD,目前有Techwell ,Nextchip,Richnex,以及臺灣的一些AD廠家。采集前端攝像頭的信號,加以一定的處理,轉(zhuǎn)換為后面的視頻編碼芯片所能接收的數(shù)據(jù)格式。5. 后端視頻解碼(DA):這里描述的視頻解碼模塊主要是解碼芯片及其外圍,如VGA輸出,如早期我們公司使用的Hi3120和NVP5000 。轉(zhuǎn)化為目前主流的一下些視頻輸出信號,供外部顯示。6. 存儲相關(guān)硬件:目前嵌入式DVR的存儲介質(zhì)主要是硬盤,刻錄光驅(qū),USB存儲7. 設(shè)備等。PCI-SATA的協(xié)議轉(zhuǎn)換的芯片,內(nèi)部集成的SATA接口。8. 其他外圍:RTC,報警輸入輸出,USB,前面板。9. 電源部分:電源部分比

42、較復(fù)雜,在此不必列出。 第4章 IPC的詳細設(shè)計實現(xiàn)4.1 整個系統(tǒng)的詳細設(shè)計整個系統(tǒng)的詳細設(shè)計也就是工作流程詳細設(shè)計,主要可以劃分為以下幾個部分,PU與CU進行交互成功后,除了有需要返回的數(shù)據(jù)外,還帶有一個返回碼,具體見返回碼定義表,無特別說明,控制流都是通過主socket進行通信。由于整個工作流程很復(fù)雜,過程也很多,所以這項工作是團隊分工的,我負責(zé)的是登錄過程、監(jiān)視控制流程、回放控制流程和語音對講流程。剩下的都是小組其他成員負責(zé)完成的,最終代碼有小組組長整合微調(diào)并上傳。內(nèi)部成員對其他人的代碼相互之間也會有一定的了解,有時也會互相幫忙,所以,雖然我只負責(zé)了幾個功能的實現(xiàn),但是其他功能也是相對

43、熟悉一些的,比如文件查詢流程、日志管理流程等等。下面就以我做的幾個功能作一下詳細的介紹。4.2 登錄登出?;盍鞒?.2.1 普通登錄如圖4.2.1所示 圖4.2.1 普通登錄建立主Socket連接,用于控制流傳輸。發(fā)送登錄請求,請求中包含用戶名、密碼、加密方式、登錄類型。驗證用戶成功,返回SID、通道個數(shù)、設(shè)備類型。代碼部分的流程:start啟動線程,Connectcallback()連接回調(diào)函數(shù)建立主連接,將傳入的連接加入InsertConnect()中。Reccallback()返回回調(diào)函數(shù),通過GetConnect()不斷地獲取連接,用AddRef()計數(shù)將獲取到的連接通過AddData

44、()再由ProcessMsg()進行數(shù)據(jù)分析、處理,不斷地對主連接進行?;畈僮?,篩選之后加入OprMsg()中處理,最后調(diào)用COpLogin:COpLogin()函數(shù)進行登錄的一系列操作。4.2.2 主動注冊登錄普通登錄是由CU(比如IE端)向PU(比如IPC)發(fā)送TCP請求,PU端收到請求后對CU端作出應(yīng)答,允許建立連接。而主動注冊登錄則是由PU端主動去連接CU端。l PU與CU建立主socket用于控制流傳輸l PU通過主socket發(fā)送登錄請求,請求中包含用戶名,密碼,加密方式,設(shè)備類型,通道個數(shù)。l CU驗證用戶成功,返回SID。如圖4.2.2所示 圖4.2.2 主動注冊登錄4.2.3

45、 登出4.2.4 ?;?.3 監(jiān)視控制流程4.3.1 普通監(jiān)視控制通過之前的登錄已經(jīng)建立好了主Socket連接,也就是說視頻監(jiān)視的前面的過程和普通登錄里的過程是一樣的。所以這里在原來的基礎(chǔ)上再次建立Socket連接,也就是建立新的套接字,用于傳輸視頻數(shù)據(jù)。通過新建的套接字發(fā)送認領(lǐng)請求,認領(lǐng)成功后返回成功標志,在新建套接字的認領(lǐng)之后要開始監(jiān)視,則在主連接上發(fā)起一個打開監(jiān)視的命令,而這個命令的執(zhí)行需要傳遞給對應(yīng)的子連接去處理,所以暫時保存主連接收到的信息以使它們可以快速的定位到子連接中去。監(jiān)視請求中包括動作、通道、碼流類型。監(jiān)權(quán)成功后返回成功標志,返回主連接。通過新建套接字開始傳輸視頻數(shù)據(jù),包序號

46、1,2,3.數(shù)據(jù)發(fā)送完畢或者CU端請求關(guān)閉監(jiān)視,返回應(yīng)答并停止發(fā)送視頻數(shù)據(jù),最后關(guān)閉新建的套接字。這就是普通監(jiān)視控制的全過程,由于這里有兩個連接,也就是兩個Socket,所以主連接我用的是主Socket,子連接我用的是套接字這個詞,以方便讀者閱讀。4.3.2主動注冊監(jiān)視控制類似與普通登錄與主動注冊登錄的關(guān)系,普通監(jiān)視控制與主動注冊監(jiān)視控制也是由PU端去主動連接CU端的。CU通過主socket發(fā)送主動注冊監(jiān)視請求,請求中包含通道號,碼流類型。PU鑒權(quán)返回成功。PU與CU建立套接字用于媒體數(shù)據(jù)傳輸。PU通過新建的套接字發(fā)送認領(lǐng)請求,請求中包含通道號,碼流類型,消息頭的SID字段,為CU的SID號。

47、CU請求視頻監(jiān)視,請求中包含通道,碼流類型,PU通過這個識別對應(yīng)的媒體數(shù)據(jù)發(fā)送socket。PU鑒權(quán)成功后,返回OK ,并開啟捕獲模塊,開始視頻數(shù)據(jù)發(fā)送,視頻數(shù)據(jù)的包序號從1開始遞增。CU請求關(guān)閉視頻監(jiān)視,請求中包含通道,碼流類型,停止捕獲模塊,停止視頻數(shù)據(jù)發(fā)送, PU返回應(yīng)答信息,關(guān)閉對應(yīng)媒體數(shù)據(jù)發(fā)送socket。4.4 回放控制流程4.4.1 普通回放控制前面的主Socket仍然是普通登錄里建立的。新建Socket用于傳輸視頻數(shù)據(jù),通過新建套接字發(fā)送認領(lǐng)請求,認領(lǐng)成功返回成功標志;通過主Socket請求回放,回放包括動作、文件名、開始時間、結(jié)束時間。監(jiān)權(quán)成功后找到文件,返回成功標志;之后開

48、始傳輸視頻數(shù)據(jù),包序號為1,2,3.請求暫停(動作,文件名);暫停成功后返回成功標志;請求繼續(xù)回放(動作,文件名)繼續(xù)回放成功,返回成功標志;請求定位回放(動作,文件名,開始時間,結(jié)束時間)定位回放成功后返回標志;請求停止回放,停止回放成功后返回標志;請求關(guān)閉,關(guān)閉成功返回標志,關(guān)閉視頻數(shù)據(jù)套接字;文件回放結(jié)束后PU會在媒體數(shù)據(jù)包的包頭endflag字段設(shè)置為1,停止數(shù)據(jù)發(fā)送,發(fā)送EOF通知CU關(guān)閉Socket。4.4.2 主動注冊回放控制由PU端主動連接CU端,其他過程與上面的回放過程類似。4.5 語音對講流程4.5.1 普通語音對講前面的普通登錄建立好主連接后,CU與PU建立新套接字用于對

49、講數(shù)據(jù)傳輸。CU通過新建套接字發(fā)送認領(lǐng)請求,請求中包含通道號(目前只支持一路對講,通道號為0),未登陸的主連接必需要先認領(lǐng),否則其上的操作一概不理認領(lǐng)后就變成子連接了。消息頭的SID字段是CU的SID號,子連接認領(lǐng)成功后,CU通過主socket請求語音對講,命令只針對子連接有效主連接需要轉(zhuǎn)發(fā)此命令給子連接,如果是主鏈接的話, 轉(zhuǎn)給子連接繼續(xù)處理,請求中包含通道號(目前只支持一路對講,通道號為0)。同時只支持一個CU與PU進行語音對講,如果已經(jīng)與其他CU開啟了語音對講,返回已經(jīng)開始對講錯誤碼。命令的應(yīng)答還是從主連接上走的。PU鑒權(quán)成功后,PU開啟捕獲模塊,開始語音數(shù)據(jù)發(fā)送,語音數(shù)據(jù)的包序號從1開

50、始遞增,同時CU也開始語音數(shù)據(jù)發(fā)送,語音數(shù)據(jù)的包序號從1開始遞增。CU請求關(guān)閉語音對講,請求中包含通道號,PU停止捕獲模塊,停止語音數(shù)據(jù)發(fā)送, PU返回應(yīng)答信息,關(guān)閉新建socket,CU收到應(yīng)答信息后,停止向PU發(fā)送語音數(shù)據(jù),關(guān)閉新建socket。4.5.2 主動注冊語音對講這一部分不是由我完成的,所以這里不作過多說明,而且過程與上面的相似。4.6 云臺控制流程云臺控制這一塊雖然不是由我完成,但是完成該部分的人出差去了海外,所以這一塊暫時也交給我負責(zé),主要是維護,防止出現(xiàn)BUG,另外還有之前提到,PU連接到云平臺,CU通過云平臺訪問PU端;CU直接通過DNS解析將PU端的端口解析成自己能夠識

51、別的端口號?,F(xiàn)在打算把這兩個功能全放到云臺控制中去。這一過程也是由我負責(zé)的,所以在此有必要說一下云臺控制流程。在代碼中是用VVNAT代表的云平臺。首先初始化云服務(wù)狀態(tài)機的驅(qū)動,如果有啟動則關(guān)閉啟動,如果服務(wù)器上有客戶端則踢出,釋放服務(wù)器資源,這里面用到了一種單件模式,就是說在整個過程中只調(diào)用一次并返回值。因為單件模式的函數(shù)在整個過程中只滿足它的條件一次,所以只需調(diào)用一次。NAT狀態(tài)轉(zhuǎn)換圖。0狀態(tài):DNS探測校驗IP地址的有效性,校驗成功后就進入狀態(tài)1。因為進入該狀態(tài)的前狀態(tài)可能是2也可能是1,兩者通過是否清s_NatServerIp來區(qū)分,以保證s_NatServerIp的正確,因為如果從2=

52、0則使用老的地址再嘗試一次。1狀態(tài):連接服務(wù)器,第一次初始化,如果服務(wù)器為空則在服務(wù)器端創(chuàng)建Socket并分配空間,這時候就開啟服務(wù)器了。測試連接狀態(tài):獲取NAT穿越的服務(wù)器的連接狀態(tài),連接成功就進入狀態(tài)2,如果3分鐘內(nèi)還沒有連接就進入狀態(tài)0;重新探測DNS,釋放資源,提出該服務(wù)器上的所有客戶端,釋放服務(wù)器資源。2狀態(tài):(日常信息維護)測試連接狀態(tài),連接斷開時進入狀態(tài)0,連接服務(wù)器。此處不釋放m_pServerNAT_OBJID以使再次DNS探測成功之后先用上次的IP地址繼續(xù)嘗試。第5章 IPC的系統(tǒng)功能測試整個IPC的功能實現(xiàn)后我們并開始了一系列的測試,在測試的過程的遇到了一些功能沒有實現(xiàn)的

53、模塊,還有一些功能雖然實現(xiàn)了但是沒有達到預(yù)期的效果,小組的各成員都存在著一定的功能實現(xiàn)問題,這其實是正常的情況,因為在編寫代碼的時候不能結(jié)合設(shè)備進行實時測試,而這也是不科學(xué)的,效率太低,所以一般是等代碼部分全部完成并組合起來聯(lián)合調(diào)試。調(diào)試時我們只是做一下初步測試,發(fā)現(xiàn)沒有什么明顯的BUG就算是通過了,然后就把編譯生成的可執(zhí)行文件交給測試部,測試過程是由測試部完成的,他們發(fā)現(xiàn)問題并反饋給相應(yīng)的代碼負責(zé)人,代碼負責(zé)人首先在開發(fā)板上復(fù)現(xiàn)問題,然后判斷是哪一過程的問題,接著查看這一部分的代碼并試著優(yōu)化代碼,最終解決問題。下面我就按照測試部反饋給我的問題的時間順序作一下詳細說明。5.1 視頻回放過程中的

54、聲音卡頓視頻回放過程中有時候聲音會一頓一頓的,就是平時所說的卡。這是最新開發(fā)的程序中出現(xiàn)的問題,因此我參考了之前的可執(zhí)行文件的效果。剛開始的時候我錄了我手機里的幾首歌,發(fā)現(xiàn)大部分聲音還是正常的,只是放到那幾首歌時會出現(xiàn)卡的情況,經(jīng)研究發(fā)現(xiàn)我手機里的音樂竟然分成十幾種不同的碼率,也就是bps,舉個例子,有一首歌是192bps,192比特每秒,就是說每秒傳送192位。起初我判斷的是聲音卡頓跟聲音的比特率有關(guān),但是主管說所有的聲音(mp3,wma之類)在PU端都已經(jīng)轉(zhuǎn)化成G711格式的聲音,就是所說的網(wǎng)絡(luò)傳輸中的公用的格式,碼率是72bps,所以我之前得到的結(jié)論就這樣被推翻了。接著我就做出假設(shè),聲音

55、卡頓的問題可能和傳送的資源、轉(zhuǎn)換為G711格式時是否有丟幀、發(fā)送速度過慢、網(wǎng)絡(luò)延時、刷新網(wǎng)絡(luò)狀態(tài)慢、速度控制、網(wǎng)絡(luò)休眠時間等有關(guān),于是又開始了大量的調(diào)節(jié)測試。最后發(fā)現(xiàn)不可能是丟幀,因為丟幀的話根本不會發(fā)送出去,還有就是發(fā)送速度只要夠快,客戶端可以把接收到的數(shù)據(jù)暫時儲存起來,當存儲空間滿了可以返回一個命令使PU端暫時停止發(fā)送數(shù)據(jù),也就是說只要數(shù)據(jù)發(fā)送及時就不會出現(xiàn)聲音卡頓問題。經(jīng)過一連串的排查,花了我兩天多的時間最終發(fā)現(xiàn)問題可能在網(wǎng)絡(luò)休眠時間那塊。圖像是每秒鐘發(fā)送25幀,聲音跟圖像一樣,所以每40ms發(fā)一次是最佳狀態(tài),超過40ms會卡,低于40ms客戶端可能會存在存儲問題,所以40ms是最佳的。

56、代碼里采用的休眠時間只是一個估計值,用的是默認的20ms,再加上兩次調(diào)用函數(shù)的時間差值,差不多是40ms,當時間差高于20ms時就會出現(xiàn)卡頓,因為總時間超過了40ms,所以我就試著修改了這部分的代碼。我把每次發(fā)送的間隔時間固定在40ms,休眠時間設(shè)置成40ms減去兩次兩次調(diào)用函數(shù)的時間差。至此,讀者可能會問如果兩次調(diào)用函數(shù)的時間超過40ms出現(xiàn)了負值怎么辦,不是還會卡嗎?這點我也考慮過,但是我們的開發(fā)板采用的是高性能的DSP芯片,而可執(zhí)行文件的運行環(huán)境是Linux操作系統(tǒng),他的處理速度是相當快的,而我們的函數(shù)執(zhí)行速度也是很快的,所以不會出現(xiàn)兩次調(diào)用的時間差超過40ms的情況。修改完后再測試發(fā)現(xiàn)

57、效果很好,測試部的詳細測試后也沒再反映問題。所以這一次的修改BUG過程算是完成了,也是自己的一次初次嘗試,通過這次的修改BUG過程我大致有了修改BUG的方向,這為之后修改BUG的時候提供了經(jīng)驗也節(jié)省了時間。但是由于才改了幾次BUG,所以還是不太熟練,等以后熟練了我會把經(jīng)驗總結(jié)一下以供之后的人參考。5.2 屬性修改問題登錄IPC之后新增用戶改變部分屬性后不能重啟設(shè)備。這個BUG同樣是由測試部反饋給我們的,為此,我特意申請了一個IPC,在IE端的新增用戶組里添加了新的用戶,并用新用戶重新登錄,登陸之后改變了IPC的部分屬性,我選擇的是改變制式,一般情況下,系統(tǒng)默認的用戶admin在改變屬性后有一個重啟提示,確認后IPC將重新啟動,但是新增用戶在改變屬性后卻無法重啟,而且就連用戶在剛建立時屬性都選擇不了,全是系統(tǒng)默認的屬性,這樣明顯是無法適應(yīng)用戶的使用的,所以我就開始找相應(yīng)部分的代碼。在這我要聲明一下,這次的畢業(yè)設(shè)計中我用到了很多在大學(xué)里面從來沒接觸過的函數(shù),很多功能也只是了解一些卻無法熟練使用,比如memset()、memcpy()、Json()之類,所以我是邊學(xué)習(xí)這些函數(shù)的使用方法邊寫代碼的,而且很多頭文件以及接口函數(shù)都是公司庫里面的,這么說吧,有些函數(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論