2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  本科畢業(yè)論文</b></p><p><b>  中國·武漢</b></p><p><b>  二〇一七年五月</b></p><p> 題 目基于Apple Darwin的Android客戶端播放器的設(shè)計與實現(xiàn)</p><p>

2、 Design and Implementation of Android Client Player Based on Apple Darwin</p><p> 姓 名學(xué) 號</p><p> 專 業(yè)計算機科學(xué)與技術(shù)</p><p> 指導(dǎo)教師職稱/學(xué)位講師/碩士</p><p>  分類號

3、 密級</p><p>  華中農(nóng)業(yè)大學(xué)楚天學(xué)院本科畢業(yè)論文</p><p>  基于Apple Darwin的Android客戶端播放器的設(shè)計與</p><p><b>  實現(xiàn)</b></p><p>  Design and

4、Implementation of Android Client Player Based on Apple Darwin</p><p>  華中農(nóng)業(yè)大學(xué)楚天學(xué)院</p><p><b>  二〇一七年五月</b></p><p>  華中農(nóng)業(yè)大學(xué)楚天學(xué)院畢業(yè)論文(設(shè)計)</p><p><b>  原創(chuàng)性聲

5、明</b></p><p>  本人鄭重聲明:所呈交的畢業(yè)論文(設(shè)計),是本人在導(dǎo)師的指導(dǎo)下,獨立進行研究所取得的成果。除文中已經(jīng)注明引用的內(nèi)容外,本論文(設(shè)計)不包含任何其他個人或集體已經(jīng)發(fā)表或撰寫過的作品成果。本人完全意識到本聲明的法律結(jié)果由本人承擔(dān)。</p><p><b>  作者簽名:</b></p><p>  日 期

6、:  年 月 日</p><p><b>  目 錄</b></p><p><b>  摘要I</b></p><p><b>  關(guān)鍵詞I</b></p><p>  AbstractI</p><p>  Key wo

7、rdsI</p><p>  1 系統(tǒng)概述和可行性分析1</p><p>  1.1 系統(tǒng)概述1</p><p>  1.2 可行性分析1</p><p>  2 開發(fā)環(huán)境及主要技術(shù)分析2</p><p>  2.1 開發(fā)工具Android Studio2</p><p>  2.2

8、 開發(fā)環(huán)境Android平臺2</p><p>  2.3 開發(fā)語言JAVA2</p><p>  2.4 RTSP協(xié)議2</p><p>  2.5 H.264編解碼規(guī)范3</p><p>  2.6 HLS協(xié)議4</p><p>  2.7 SDP協(xié)議4</p><p>  2.

9、8 G711A音頻4</p><p>  2.9 TS流簡介4</p><p>  2.10 流媒體技術(shù)5</p><p>  3 系統(tǒng)分析與設(shè)計5</p><p>  3.1 系統(tǒng)總體結(jié)構(gòu)設(shè)計5</p><p>  3.1.1 客戶端與Darwin服務(wù)器關(guān)系5</p><p>  

10、3.1.2 Darwin流媒體服務(wù)器核心流程5</p><p>  3.2 Android客戶端結(jié)構(gòu)分析7</p><p>  3.3 軟件設(shè)計8</p><p>  3.3.1 客戶端軟件總體設(shè)計8</p><p>  3.3.2 功能時序圖9</p><p>  3.4 客戶端解碼設(shè)計11</p&

11、gt;<p>  3.4.1 直播11</p><p>  3.4.2 獲取直播列表12</p><p>  3.4.3 DirectShow采集庫中的回調(diào)12</p><p>  3.4.4 LibEasyPlayer庫中的回調(diào)13</p><p>  3.4.5 網(wǎng)絡(luò)RTSP流回調(diào)13</p><

12、;p>  3.4.6 云臺方向15</p><p>  3.5 異常分析16</p><p><b>  4 系統(tǒng)測試17</b></p><p>  4.1 測試方法17</p><p>  4.2 測試過程17</p><p>  4.2.1 登錄注冊及忘記密碼測試17<

13、;/p><p>  4.2.2 設(shè)置19</p><p>  4.2.3 Camera及移動設(shè)備列表20</p><p>  4.2.4 云臺控制功能測試21</p><p>  4.2.5 云臺遠(yuǎn)程語音功能測試22</p><p>  4.2.6 測試總結(jié)22</p><p><b

14、>  5 總結(jié)22</b></p><p><b>  參考文獻22</b></p><p><b>  致謝23</b></p><p><b>  摘 要</b></p><p>  本課題是基于Apple Darwin流媒體服務(wù)器整體方案

15、中的Android客戶端播放器部分,該客戶端主要功能是可以查看在線Camera設(shè)備、移動設(shè)備、NVR所推送的實時流媒體視頻,以及遠(yuǎn)程控制在線Camera設(shè)備的方向和發(fā)送實時語音。其主要過程是,客戶端向流媒體消息管理服務(wù)器獲取在線設(shè)備列表,選中某個在線設(shè)備后,客戶端會發(fā)送播放請求給消息管理服務(wù)器,消息管理服務(wù)器將相應(yīng)的請求發(fā)送給相對應(yīng)的Camera設(shè)備,在收到消息后,Camera設(shè)備推送視頻流到流媒體服務(wù)器,再由流媒體服務(wù)器將視頻流分發(fā)到

16、該客戶端,客戶端解碼后可播放對應(yīng)的視頻。經(jīng)測試,設(shè)備的視頻流進行顯示、播放,非常穩(wěn)定、易用。 對云臺得控制非常準(zhǔn)確,點擊相應(yīng)得方向后,云臺得反應(yīng)速度很快,遠(yuǎn)程語音播放清晰沒有雜音。</p><p><b>  關(guān)鍵詞</b></p><p>  流媒體;安卓客戶端;Apple Darwin;遠(yuǎn)程;</p><p><b>  Abst

17、ract</b></p><p>  With the rapid development of mobile Internet and the improvement of living standards, people require more and more safety in , as a result the syst

18、em is produced. This system is mainly used to meet the safety requirement, such as checking real-time videos, controlling camera, remote telephone, recording video and so on. </p><p>  In this paper, AHP(ana

19、lytic hierarchy process) is adopted to divide the whole project into five hierarchies. Starting from the basic explanation of the project to the meaning, requirement and the significations of realizing it, the paper demo

20、nstrates the algorithmic logic and the prospect and feasibility of it. Also, the paper is divided into different parts. Is also studies the platform formation of the streaming media server based on Apple Darwin. This pap

21、er mainly focuses on the framework dev</p><p><b>  Key words</b></p><p>  Stream Media;Android Client;Apple Darwin;Remote;</p><p>  1 系統(tǒng)概述和可行性分析</p><p><

22、b>  1.1 系統(tǒng)概述</b></p><p>  隨著手機的普及很多新興行業(yè)崛地而起,發(fā)展十分迅速也引發(fā)了很多互聯(lián)網(wǎng)的操作。發(fā)展安全性、實時性成了互聯(lián)網(wǎng)需要調(diào)整的目標(biāo),在信息和通訊技術(shù)上不斷開拓,構(gòu)筑開放共享、敏捷高效、安全可信的信息化架構(gòu)系統(tǒng)。通過系統(tǒng)集成,硬件數(shù)據(jù)共享接口實現(xiàn)人們的要求。</p><p>  在移動互聯(lián)網(wǎng)的飛速成長下,移動客戶端的使用數(shù)據(jù)量正在的逐

23、步的逼近PC端,而這一現(xiàn)象主要的推力應(yīng)歸公于手機APP應(yīng)用的迅速發(fā)展。不僅如此,WIFI的覆蓋范圍不斷拓寬,這也使得移動端APP應(yīng)用的發(fā)展空間有了更大的平臺,而這點一直是PC端比較難超越的限制。手機客戶端豐富的應(yīng)用程序從各方面影響著日常生活。隨著智能手機的快速發(fā)展,移動應(yīng)用程序鋪天蓋地的發(fā)展起來,日常生活已經(jīng)離不開手機APP。</p><p>  智能家居伴隨著移動互聯(lián)網(wǎng)的發(fā)展,實現(xiàn)了用戶對互聯(lián)網(wǎng)的粘連特性。智能

24、家居以住宅為平臺,利用綜合布線技術(shù)、網(wǎng)絡(luò)通信技術(shù)、安全防范技術(shù)、自動控制技術(shù)、音視頻技術(shù)將家居生活有關(guān)的設(shè)施集成,構(gòu)建高效的住宅設(shè)施與家庭日程事務(wù)的管理系統(tǒng),提升家居安全性、便利性、舒適性、藝術(shù)性,并實現(xiàn)環(huán)保節(jié)能的居住環(huán)境。</p><p>  在快速發(fā)展的互聯(lián)網(wǎng)前提下,衍生了安卓與智能家居的誕生。現(xiàn)在市面上廣泛推出的螢石、小米、Wulian等都已經(jīng)在實現(xiàn)智能家居的發(fā)展。在互聯(lián)網(wǎng)的支撐下,智能家居可以實現(xiàn)隨時隨地

25、實現(xiàn)將信息、數(shù)據(jù)等通過智能家居實現(xiàn)主動調(diào)用信息,主動向家居發(fā)出請求從而達到智能家居的移動化效果。</p><p>  在該課題中,基于Apple Darwin開發(fā)的安卓播放器主要用于智能家居對攝像頭以及對移動設(shè)備的控制,用戶可以根據(jù)開發(fā)的APP進行對攝像頭的控制、錄音、操控等功能。目前廣泛應(yīng)用于幼兒園監(jiān)控、學(xué)校監(jiān)控、家庭查看等。</p><p>  伴隨移動互聯(lián)網(wǎng)的快速發(fā)展,移動客戶端的使

26、用數(shù)據(jù)量正在的逐步的逼近PC端,而這一現(xiàn)象主要的推力應(yīng)歸公于手機APP應(yīng)用的迅速發(fā)展。不僅如此,WIFI的覆蓋范圍不斷拓寬,這也使得移動端APP應(yīng)用的發(fā)展空間有了更大的平臺,而這點一直是PC端比較難超越的限制。手機客戶端豐富的應(yīng)用程序從各方面影響著日常生活。隨著智能手機的快速發(fā)展,移動應(yīng)用程序鋪天蓋地的發(fā)展起來,日常生活已經(jīng)離不開手機APP。</p><p>  本系統(tǒng)采用當(dāng)下最為流行的Android操作系統(tǒng)作為

27、客戶端端的操作系統(tǒng)平臺,開發(fā)工具使用Android Studio,采用開源的Client開源流媒體播放器提供的SDK接口進行開發(fā)。</p><p><b>  1.2 可行性分析</b></p><p> ?。?)經(jīng)濟可行性分析:</p><p>  本系統(tǒng)主要用于安卓端,做為智能家居生活所需的基礎(chǔ)組件開發(fā),根據(jù)網(wǎng)絡(luò)ping通設(shè)備后進行連接操作

28、,并對連接的設(shè)備、攝像頭等可以進行基本的操作和處理。在經(jīng)濟上,做為智能家居的基本組件,價格低廉,可以依靠網(wǎng)絡(luò)為第二發(fā)展路徑,保證了操作的完整性,且可移動,可行性發(fā)展良好。</p><p> ?。?)用戶使用可行性分析:</p><p>  本系統(tǒng)研發(fā)成功之后安裝APP在手機端展示使用,在用戶擁有APP以及網(wǎng)絡(luò)連接成功的許可下,對智能家居組件可以實現(xiàn)基本的操作,本系統(tǒng)主要用于對安卓播放器的使

29、用,對播放器進行配置、錄音、移動攝像頭方向等,可以進行一個基本的操作。用戶只要在手機上安裝APP客戶端就可以使用本系統(tǒng),方便而實用。</p><p>  2 開發(fā)環(huán)境及主要技術(shù)分析</p><p>  2.1 開發(fā)工具Android Studio</p><p>  Android Studio是Google官方基于Intelli JIDEA開發(fā)的一款A(yù)ndroid

30、應(yīng)用開發(fā)工具,Android Studio提供了集成的Android開發(fā)工具用于開發(fā)和調(diào)試。在IDEA的基礎(chǔ)上,Android Studio提供:基于Gradle的構(gòu)建支持;Android 專屬的重構(gòu)和快速修復(fù);提示工具以捕獲性能、可用性、版本兼容性等問題;支持ProGuard和應(yīng)用簽名;基于模板的向?qū)砩沙S玫腁ndroid應(yīng)用設(shè)計和組件;功能強大的布局編輯器,可以讓你拖拉UI控件并進行效果預(yù)覽。</p><p&

31、gt;  2.2 開發(fā)環(huán)境Android平臺</p><p>  Android是一組面向移動設(shè)備的軟件包,它包含一個操作系統(tǒng)、中間件和關(guān)鍵應(yīng)用程序、Android SDK的預(yù)覽版提供必需的開發(fā)工具和應(yīng)用程序接口,基于這些,我們就可以使用編程語言在Android平臺上開發(fā)應(yīng)用程序了。</p><p>  Android系統(tǒng)架構(gòu)基本分為應(yīng)用(Application)、應(yīng)用框架(Applica

32、tion Framework)、庫函數(shù)(Libraries)、運行時環(huán)境(Android Runtime)、Linux內(nèi)核(Linux Kernel)。</p><p>  Android平臺提供了一個自由開發(fā)的環(huán)境,不會受到各種規(guī)則的阻擾。在這種環(huán)境下開發(fā)人員在此基礎(chǔ)上會開發(fā)出各種別致的應(yīng)用程序,但同時也帶來一個大的難題,如何控制血腥、暴力、情色方面的程序和游戲。</p><p>  2

33、.3 開發(fā)語言JAVA</p><p>  Java是一門面向?qū)ο缶幊陶Z言,不僅吸收了C++語言的各種優(yōu)點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特征。Java語言作為靜態(tài)面向?qū)ο缶幊陶Z言的代表,極好地實現(xiàn)了面向?qū)ο罄碚?,允許程序員以優(yōu)雅的思維方式進行復(fù)雜的編程。</p><p>  Java具有簡單性、面向?qū)ο?、分布式、健壯性、安全性、?/p>

34、臺獨立與可移植性、多線程、動態(tài)性等特點Java可以編寫桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序等。</p><p>  2.4 RTSP協(xié)議</p><p>  RTSP(Real Time Streaming Protocol)實時流媒體協(xié)議是用于在協(xié)議客戶端和協(xié)議服務(wù)器端之間創(chuàng)建實時流回話的一個協(xié)商過程,該協(xié)議是TCP/IP協(xié)議棧體系里面的一種應(yīng)用層的傳輸協(xié)議。協(xié)議

35、客戶端能夠利用實時流媒體協(xié)議來對協(xié)議客戶端以及協(xié)議服務(wù)器之間存在的多條流媒體串流進行控制,這樣就能夠?qū)崿F(xiàn)對于音視頻流數(shù)據(jù)信息的點播以及傳輸控制等操作。</p><p>  當(dāng)我們需要創(chuàng)建并且對一個或多個時間的同步且連續(xù)的音視頻的媒體數(shù)據(jù)流控制的時候,我們需要用到RTSP協(xié)議,實際上就是實時流協(xié)議。為了能夠?qū)崿F(xiàn)實時音視頻數(shù)據(jù)的按需分配流和受控(快進,暫停),這套協(xié)議之中給我們提供了能夠進行實現(xiàn)的框架。這樣的實時流控

36、制協(xié)議可以用在對多個數(shù)據(jù)發(fā)送的會話,通過UDP或者TCP方式,以及基于RTP發(fā)送方式來實現(xiàn)。</p><p>  RTSP協(xié)議在交互過程中的步驟如下:請求服務(wù)端將相關(guān)的服務(wù)請求發(fā)給服務(wù)提供端,當(dāng)服務(wù)提供端受到了相關(guān)的清求之后對其進行處理,然后把回復(fù)消息發(fā)送到請求服務(wù)端,請求服務(wù)端對回復(fù)進行接收然后對其進行處理。請求服務(wù)端既能是客戶端又能為服務(wù)器,同樣的,服務(wù)提供端既可以是客戶端又能為服務(wù)器。在進行交互的過程中,發(fā)

37、送的請求信息中主要包括請求的執(zhí)行方法和所需操作的參數(shù)。RTSP協(xié)議方法的詳細(xì)說明如表2-1所示。</p><p>  表2-1 RTSP協(xié)議的方法</p><p>  2.5 H.264編解碼規(guī)范</p><p>  標(biāo)準(zhǔn)化的視頻壓縮技術(shù)的出現(xiàn)使得圖像技術(shù)得到了更為廣泛的應(yīng)用,例如DVD視頻和數(shù)字電視徹底改變了家庭娛樂以及廣播電視的傳統(tǒng)模式。圖像視頻在互聯(lián)網(wǎng)中的應(yīng)用

38、與MPEG標(biāo)準(zhǔn)中的MPEG4有密不可分的聯(lián)系,ITU-T H.263標(biāo)準(zhǔn)是當(dāng)前大多數(shù)視頻會議使用的視頻壓縮標(biāo)準(zhǔn)。</p><p>  MPEG4視覺標(biāo)準(zhǔn)和H.263標(biāo)準(zhǔn)是在1995年開始制定的,視頻編碼以及視頻壓縮技術(shù)是這兩種標(biāo)準(zhǔn)建立的技術(shù)基礎(chǔ),對此類標(biāo)準(zhǔn)進行負(fù)責(zé)的是電影專家集團以及視頻編碼專家組。在這兩種標(biāo)準(zhǔn)的開發(fā)進行到后期的時候,出現(xiàn)了一套比和更加優(yōu)秀的新的標(biāo)準(zhǔn),也就是高級視頻編碼標(biāo)準(zhǔn),這套標(biāo)準(zhǔn)所提供的圖像視

39、頻壓縮效果更加優(yōu)秀,同時其在保證比特率非常低的同時還保證了高品質(zhì)。</p><p>  在2001年,國際標(biāo)準(zhǔn)化組織中的運動圖像專家組(MPEG)逐步認(rèn)知到H.26L標(biāo)準(zhǔn)潛在的優(yōu)點,于是聯(lián)合了視頻編碼專家組以及動態(tài)圖像專家組共同成立了一個聯(lián)合視頻組,并對的優(yōu)化以及未來的發(fā)展進行深入的研究。實現(xiàn)了把“模型”發(fā)展成一個更加完善和健全的國際標(biāo)準(zhǔn)協(xié)議規(guī)范草案,高級視頻編碼就是這套新標(biāo)準(zhǔn)的官方名稱。是這套新標(biāo)準(zhǔn)之前的擬定工

40、作名稱,是其國際電聯(lián)證件號碼,這兩個早已經(jīng)先入為主,家喻戶曉。</p><p>  H.264編解碼協(xié)議規(guī)范可以用四個方面概括其技術(shù)特點,第一個方面是關(guān)注實用性問題,摒棄了原本這類編解碼技術(shù)里面的一些存在著缺陷的編碼方案,如機遇內(nèi)容的編碼等,以更加簡潔的格式,以提升編碼效率為目的,從而運用合適的技術(shù)。第二方面則是使用了多種的新算法和新技術(shù),在混合編碼的基礎(chǔ)上,新增了4*4整數(shù)變換技術(shù)、基于內(nèi)容的變長編碼技術(shù)及多幀

41、預(yù)測和幀內(nèi)預(yù)測技術(shù)等。第三方面,對于算法而言,突出了信道的特點。從分層的角度來看,信道編碼和信源編碼在形式上采取了分離。第四方面則是使用了針對IP以及無線網(wǎng)絡(luò)的相關(guān)策略,為了方便那些經(jīng)過壓縮之后的視頻在丟包率較高和誤碼率較高的網(wǎng)絡(luò)環(huán)境之中進行傳輸,使用了一些用來對差錯進行消除的工具。</p><p>  所具有的主要優(yōu)點如下:圖像質(zhì)量非常高。H.264標(biāo)準(zhǔn)想要實現(xiàn)的是在對圖像進行還原的過程之中能夠保持較高質(zhì)量,同

42、時還為此采用了一系列的算法,其目的為實現(xiàn)圖像的高質(zhì)量;為了能夠和不同的信道相適應(yīng),以及各種應(yīng)用形式,區(qū)分各種圖像層次從而采用相應(yīng)的算法;在熵編碼等步驟中,為達到較低比特率的目標(biāo)從而采用節(jié)約碼流的算法;系統(tǒng)的健壯性增加,H.264提供了掩蓋錯誤的組件并應(yīng)用了環(huán)路濾波結(jié)構(gòu)。</p><p><b>  2.6 HLS協(xié)議</b></p><p>  HLS協(xié)議即HTTP

43、Live Streaming。一個可實現(xiàn)流媒體的直播和點播的基于HTTP的流媒體傳輸協(xié)議。HLS點播與分段HTTP點播十分相似,其差異就在于HLS點播的分段很小。</p><p>  HLS協(xié)議與其他流媒體協(xié)議差異最大的地方就是在流媒體數(shù)據(jù)傳輸時,客戶端獲取到的,并非完整的數(shù)據(jù)流。HLS協(xié)議實現(xiàn)直播的原理是服務(wù)器將流媒體數(shù)據(jù)進行切片,一段流媒體數(shù)據(jù)被分為多個連續(xù),短時長的TS文件,客戶端連續(xù)下載播放TS文件,服務(wù)

44、器無時無刻都在進行TS切片操作,新生成的流媒體數(shù)據(jù)馬上就被服務(wù)器切片,客戶端只需要按順序播放TS文件即可實現(xiàn)直播。綜上所述,我們可以理解為HLS實現(xiàn)直播的方式是通過點播的形式。而HLS的不足在于采用了切片技術(shù)不可避免直播時的延遲會比其他流媒體直播協(xié)議高。</p><p><b>  2.7 SDP協(xié)議</b></p><p>  會話描述協(xié)議SDP(Session D

45、eseription Protocol),SDP協(xié)議本身屬于一種文本性質(zhì)的協(xié)議,該協(xié)議比較簡單,且其語法能夠進行擴展。SDP文件就是SDP協(xié)議的文件形態(tài),服務(wù)器在提供音視頻流數(shù)據(jù)的同時還會產(chǎn)生對音視頻媒體屬性進行描述的SDP文件,這些音視頻媒體的屬性包含了音視頻在對數(shù)據(jù)進行傳輸?shù)臅r候所采用的編碼協(xié)議規(guī)范,音視頻媒體流的數(shù)量,協(xié)議版本號信息,流式數(shù)據(jù)服務(wù)器的具體地址等??蛻舳苏埱蟮搅艘粢曨l流數(shù)據(jù)之后,能夠通過對SDP協(xié)議描述的媒體屬性信息

46、進行解析,從而實現(xiàn)配置客戶端播放器軟件。</p><p>  2.8 G711A音頻</p><p>  G.711是國際電信聯(lián)盟ITU-T定制出來的一套語音壓縮標(biāo)準(zhǔn),它代表了對數(shù)PCM抽樣標(biāo)準(zhǔn),主要用于電話。它主要用脈沖編碼調(diào)制對音頻采樣,采樣率為8k每秒。它利用一個64Kbps未壓縮通道傳輸語音訊號。起壓縮率為1:2,即把16位數(shù)據(jù)壓縮成8位。G.711是主流的波形聲音編解碼器。<

47、;/p><p>  G.711標(biāo)準(zhǔn)下主要有兩種壓縮算法。一種是Microlaw Algorithm,主要運用于北美和日本;另一種是A-law algorithm,主要運用于歐洲和世界其他地區(qū)。其中,后者是特別設(shè)計用來方便計算機處理的。</p><p><b>  2.9 TS流簡介</b></p><p>  TS一般我們認(rèn)為是MPEG-2TS標(biāo)準(zhǔn)

48、,它是一種非常成熟的數(shù)據(jù)傳輸技術(shù),它是對音視頻數(shù)據(jù)復(fù)用的一種說明,音視頻數(shù)據(jù)經(jīng)過TS封裝之后,再通過網(wǎng)絡(luò)IP協(xié)議棧進行二次封裝,然后就可以傳輸了。但如果需要進行一些互動性的內(nèi)容,就需要對它進行擴展。TS over IP的傳輸過程如圖2-2TS的傳輸過程所示。</p><p>  圖2-2 TS over IP的傳輸過程</p><p>  這種傳輸方式同樣采用了C/S的方式,另外由于應(yīng)用在

49、IPTV領(lǐng)域,控制層可以使用RTSP協(xié)議或者HTTP協(xié)議。在DSS服務(wù)器中,為了減少網(wǎng)絡(luò)抖動更好地控制傳輸流量,我們對UDP協(xié)議數(shù)據(jù)包又增加了關(guān)于RTP協(xié)議數(shù)據(jù)封裝。這樣系統(tǒng)就能夠有效的減少網(wǎng)絡(luò)丟包,視頻卡頓等影響客戶體驗的現(xiàn)象。</p><p>  2.10 流媒體技術(shù)</p><p>  目前,流媒體傳輸技術(shù)大致上可以分為兩類,一種是流實時傳輸,另一種是流式的順序傳輸。</p&g

50、t;<p>  順序傳輸就是說按照數(shù)據(jù)的順序進行下載,所以用戶可以邊下邊看,但是服務(wù)器的數(shù)據(jù)推送和用戶對數(shù)據(jù)的接收不是同時的,而是服務(wù)器將數(shù)據(jù)推送后,用戶經(jīng)過一定的網(wǎng)絡(luò)延時才能接收到并且使用。所以這種傳輸方式用戶看到的視頻并不是實時的而是之前一段時間推送的,中間存在一定時間間隔。在這種情況下用戶只能觀看已經(jīng)下好的數(shù)據(jù)而不能跳躍時間看文件后面的節(jié)目。因此對畫面質(zhì)量要求高的傳輸可以采用這種模式,但是流式傳輸可以保證比較好的傳輸

51、質(zhì)量。顯而易見,流式傳輸更適合在網(wǎng)絡(luò)上用于點播或者直播音視頻節(jié)目。</p><p>  相反的實時流式傳輸這種傳輸模式,音視頻信息可以通過網(wǎng)絡(luò)進行實時的使用和播放。在播放數(shù)據(jù)過程中可以對觀看進度進行對節(jié)目的實時控制比如快進或者拖放,然而使用這種模式進行傳輸不能很好的保證接受質(zhì)量,會發(fā)生數(shù)據(jù)丟包等情況影響收看質(zhì)量。</p><p><b>  3 系統(tǒng)分析與設(shè)計</b>

52、</p><p>  3.1 系統(tǒng)總體結(jié)構(gòu)設(shè)計</p><p>  3.1.1 客戶端與Darwin服務(wù)器關(guān)系</p><p>  客戶端為Apple Darwin中的一部分,主要是關(guān)于開源流媒體云平臺客戶端的實現(xiàn),其主要是以Android Studio為開發(fā)工具在Android平臺上進行運行部署的語言環(huán)境,主要功能包括云平臺設(shè)備列表獲取、設(shè)備實時碼流請求與播放、設(shè)

53、備云臺控制、設(shè)備語音對講。其中客戶端與Darwin的關(guān)系如下圖3-1所示:</p><p>  圖3-1 流媒體系統(tǒng)結(jié)構(gòu)圖</p><p>  3.1.2 Darwin流媒體服務(wù)器核心流程</p><p>  Darwin流媒體服務(wù)器通過調(diào)用模塊的特定角色,來接受客戶端的請求,并進行相應(yīng)的響應(yīng)。每個角色都用來處理一個特定的任務(wù),一個模塊可以注冊多個任務(wù),Darwin

54、流媒體服務(wù)器就是通過模塊之間的相互協(xié)調(diào)而進行工作。</p><p>  Darwin流媒體服務(wù)器在啟動的時候,首先裝載的是沒有被編譯到服務(wù)器里面的動態(tài)模塊,之后再裝載被編譯為Darwin流媒體服務(wù)器一部分的靜態(tài)模塊。當(dāng)在各個流媒體服務(wù)器模塊被裝載完成之后,Darwin流媒體服務(wù)器會調(diào)用每個Darwin流媒體服務(wù)器模塊里面的注冊角色,這個角色必須保證被每個Darwin流媒體服務(wù)器模塊所支持。通過調(diào)用這個注冊角色,每

55、個Darwin流媒體服務(wù)器模塊會使用注冊角色里面的QTSS_AddRole函數(shù)來指定自己支持的其它角色,注冊了這些角色的模塊會被Darwin流媒體服務(wù)器以初始化角色來調(diào)用。如分配內(nèi)存和初始化全局的數(shù)據(jù)結(jié)構(gòu),這些初始化任務(wù)都會被注冊了初始化角色的模塊執(zhí)行。在流媒體服務(wù)器進行關(guān)閉操作的時候,服務(wù)器調(diào)用每個注冊關(guān)閉角色的模塊。如一些收拾現(xiàn)場的任務(wù),還有釋放全局的數(shù)據(jù)結(jié)構(gòu),這些任務(wù)都會在處理關(guān)閉角色的時候,會被關(guān)閉角色的模塊所執(zhí)行。</p

56、><p>  圖3-2 RTSP請求處理流程圖</p><p>  就在所有注冊了初始化角色的Darwin流媒體服務(wù)器模塊被調(diào)用了之后,就己經(jīng)為接收RTSP請求做好準(zhǔn)備了,這些請求就是客戶端的RTSP請求。當(dāng)Darwin流媒體服務(wù)器收到一個RTSP請求就會創(chuàng)建一個RTSP請求對象(RTSPSession),該RTSPSession會被加入到任務(wù)隊列中。接著Darwin流媒體服務(wù)器會根據(jù)預(yù)先定義

57、好的順序,調(diào)用各個模塊的相關(guān)角色來處理任務(wù)隊列中的請求。這個調(diào)用過程如圖3-2所示。</p><p>  當(dāng)在處理RTSP請求的時候,RTSP過濾器角色是Darwin流媒體服務(wù)器調(diào)用的第一個角色。它會調(diào)用所有注冊了RTSP過濾角色的模塊,并將RTSP請求對象(RTSPSeesion)作為參數(shù)傳遞給這些注冊了RTSP過濾器角色的模塊。每個RTSP過濾器角色都可以通過改變qtssRTSPReqFullRequest屬

58、性的值,來改變滿足請求的文件夾,如一個RTSPFilter角色可以把/foo/foo.mov改為/bar/bar.mov。當(dāng)有某個注冊了RTSPFllter角色的模塊對客戶端進行了響應(yīng),會導(dǎo)致流媒體服務(wù)器跳過其它注冊了RTSPFilter角色和RTSP角色的模塊的處理,然后立即調(diào)用該模塊的RTSPPostProcessor角色。</p><p>  如果沒有對客戶端進行響應(yīng),當(dāng)流媒體服務(wù)器對RTSP請求解析完成之

59、后,服務(wù)器會以RTSP Route角色調(diào)用所有注冊了該角色的模塊,每個RTSP Route角色都可以使用RTSP對象中的屬性值來確定是否要改變qtssRTSPReqRootDir屬性的值,進而改變用于處理當(dāng)前請求的目錄。當(dāng)某個注冊了RTSP Route角色的模塊對客戶端進行了響應(yīng),同樣會導(dǎo)致服務(wù)器跳過其它注冊了RTSP Route角色和RTSP角色的模塊的處理,然后調(diào)用該模塊的RTSP Postprocessor角色。</p>

60、;<p>  同樣沒有模塊對客戶端進行響應(yīng),流媒體服務(wù)器就會調(diào)用每個注冊RTSP Preproeessor角色的模塊。RTSP Preprocessor角色通過qtssRTSPReqAbsoluteURL屬性值來確定當(dāng)前請求和模塊處理的請求的類型是否相匹配。如果請求的類型匹配,則RTSP Preproeessor角色就調(diào)用函數(shù)QTSS_Write或者QTSS_WriteV來向客戶端發(fā)送相應(yīng)的流媒體數(shù)據(jù)包。同樣任何一個注冊了

61、RTSP Preprocessor角色的模塊對客戶端進行了響應(yīng),都會導(dǎo)致服務(wù)器跳過注冊了RTSP Preprocessor角色和RTSP角色的所有模塊,然后調(diào)用該模塊的RTSP Postprocessor角色。</p><p>  如果注冊了RTSP Preprocessor角色的模塊沒有對RTSP的請求進行響應(yīng),則Darwin流媒體服務(wù)器就調(diào)用成功注冊了RTSP Request角色的模塊。RTSP Reques

62、t角色負(fù)責(zé)響應(yīng)所有沒有被RTSP Preprocessor角色或者注冊了該角色模塊處理的RTSP請求。</p><p>  在RTSP Request角色對RTSP請求進行處理完成之后,服務(wù)器就調(diào)用注冊了RTSP Postprocessor角色的模塊。RTSP Postprocessor角色通常執(zhí)行一些統(tǒng)計任務(wù),比如記錄各種統(tǒng)計信息。</p><p>  處理RTSP Preprocess

63、or或者RTSP Request角色的模塊可能需要為有些RTSP請求生成一些流媒體數(shù)據(jù)包。通過調(diào)用模塊的QTSS_Play函數(shù)來實現(xiàn),這個函數(shù)會使模塊的RTP Send Packets角色被調(diào)用,過程如圖3-3所示。</p><p>  圖3-3 RTSP Request角色處理流程圖</p><p>  3.2 Android客戶端結(jié)構(gòu)分析</p><p>  本

64、課題主要通過網(wǎng)絡(luò)流數(shù)據(jù)接收線程->編碼數(shù)據(jù)回調(diào)||緩存->寫文件||解碼線程->播放線程得到視頻流信息為一條主線,前端框架技術(shù)主要運用Gridlayout、Recyclerview、Cardview、Swipeback幾種構(gòu)成。后端框架主要運用okhttp3、okhttp、glide、Gson等構(gòu)成,在本課題后文第三方工具介紹中Y有詳解。主要運用的協(xié)議有實時傳輸協(xié)議、實時控制協(xié)議為基礎(chǔ)以UDP協(xié)議、TCP協(xié)議為輔助完成

65、視頻協(xié)議的解析與調(diào)用,如圖3-4Android客戶端系統(tǒng)設(shè)計結(jié)構(gòu)圖。</p><p>  圖3-4 Android客戶端系統(tǒng)設(shè)計結(jié)構(gòu)圖</p><p><b>  3.3 軟件設(shè)計</b></p><p>  3.3.1 客戶端軟件總體設(shè)計</p><p>  系統(tǒng)整個流程如下圖3-5所示。主要通過登錄之后進行操作,登錄

66、成功后得到主界面列表,有2個模塊和一個操作,主要有Camera攝像機列表、移動設(shè)備列表。獲取之后對視頻源進行操作。同時主界面提供將設(shè)置,與Apple Darwin云平臺進行交互配置端口。</p><p>  圖3-5 客戶端系統(tǒng)設(shè)計流程圖</p><p>  客戶端主要先登錄,登錄失敗重新返回登錄頁面,登錄成功進入主頁面,登錄成功后第一個頁面可以進行設(shè)置,設(shè)置主要填寫Darwin云平臺的地

67、址與Darwin云平臺的端口,保存后通過與云平臺的地址和端口可以訪問得到移動設(shè)備列表。第二個頁面通過調(diào)用攝像頭的硬件許可接口得到Camera列表,選擇一個攝像機,調(diào)用攝像機的接口,啟動,請求CMS啟動攝像機視頻,通過RTSP協(xié)議獲取RTSP地址,得到實時傳輸?shù)囊曨l流,解析視頻格式流。再根據(jù)視頻視頻對攝像機進行控制。第三個頁面,連接獲取Darwin平臺提供的音視頻服務(wù),通過服務(wù)可以選擇直播信息源,選擇后得到視頻信息與云平臺進行連接,同時通

68、過HTTP協(xié)議與M5G信令進行交互。得到信息與獲取RTSP地址,得到實時傳輸?shù)囊曨l流進行解析視頻格式流。獲取到視頻信息后對攝像機進行控制。</p><p>  3.3.2 功能時序圖</p><p>  登錄界面到主界面,啟動應(yīng)用進入歡迎頁面,進行網(wǎng)絡(luò)連接,請求登錄頁面進行登錄,輸入手機號和密碼與文件進行比對。比對之后成功則返回主界面進入Camera移動設(shè)備列表頁面,比對失敗則直接退出系統(tǒng)

69、,如下圖3-6歡迎界面跳轉(zhuǎn)登錄界面邏輯時序圖所示。</p><p>  圖3-6 歡迎界面跳轉(zhuǎn)登錄界面邏輯時序圖</p><p>  主界面到Camera攝像機列表界面即主界面通過調(diào)用MainActivity發(fā)出請求通過CameraFragment調(diào)用onlineCameraAdapter請求在線的開放接口,通過okhttp3協(xié)議請求數(shù)據(jù),將得到的數(shù)據(jù)形成一個listview在頁面上進行展

70、示,如果獲取數(shù)據(jù)失敗則說明數(shù)據(jù)異常。如果沒有獲取到設(shè)備說明沒有在線的攝像頭可以進行調(diào)用選擇,如下圖3-7主頁面跳轉(zhuǎn)Camera攝像機列表邏輯時序圖所示。</p><p>  圖3-7 主頁面跳轉(zhuǎn)Camera攝像機列表邏輯時序圖</p><p>  Camera設(shè)備列表查看攝像頭對展示的列表進行選擇得到一個可以查看的攝像機向CMS發(fā)出請求采集數(shù)據(jù),請求同意后啟動視頻,對獲取到的攝像機開放的接

71、口進行RTSP解析,推送數(shù)據(jù)源進行展示。通過回調(diào)方法進行穩(wěn)定的數(shù)據(jù)源的輸出,如下圖3-8Camera設(shè)備列表查看邏輯時序圖所示。</p><p>  圖3-8 Camera設(shè)備列表查看邏輯時序圖</p><p>  主頁面到移動設(shè)備頁面即在主頁面通過點擊移動設(shè)備列表界面到FramentManager進行管理,通過Andriod進行跳轉(zhuǎn)到AndriodFragment進而通過okhttp發(fā)出

72、請求,得到開放的移動設(shè)備攝像源,再通過expandListAdapter整合成list數(shù)據(jù)返回到頁面上進行填充。如果數(shù)據(jù)請求失敗說明系統(tǒng)異常。如果沒有數(shù)據(jù)則說明無直播信息,如下圖3-9主頁面跳轉(zhuǎn)移動設(shè)備邏輯時序圖所示。</p><p>  圖3-9 主頁面跳轉(zhuǎn)移動設(shè)備邏輯時序圖</p><p>  在移動設(shè)備頁面通過移動設(shè)備列表頁面選擇一個移動設(shè)備,通過得到移動設(shè)備信息進入AndriodF

73、ragement得到視頻源,通過適配器得到數(shù)據(jù)源,對數(shù)據(jù)源進行解析返回匹配的數(shù)據(jù)格式進行直播,播放直播信息,調(diào)用回調(diào)函數(shù)穩(wěn)定得到視頻源,如下圖3-10移動設(shè)備頁面跳轉(zhuǎn)查看頁面邏輯時序圖所示。</p><p>  圖3-10 移動設(shè)備頁面跳轉(zhuǎn)查看頁面邏輯時序圖</p><p>  進入主頁面點擊設(shè)置按鈕跳轉(zhuǎn)到設(shè)置頁面信息。對設(shè)置頁面的IP和端口進行填寫。點擊保存對配置文件里面的配置進行修改,

74、修改成功則返回主界面,修改失敗則退出應(yīng)用,如下圖3-11主頁面跳轉(zhuǎn)設(shè)置頁面邏輯時序圖所示。</p><p>  圖3-11 主頁面跳轉(zhuǎn)設(shè)置頁面邏輯時序圖</p><p>  3.4 客戶端解碼設(shè)計</p><p><b>  3.4.1 直播</b></p><p>  直播在采集模塊中采集網(wǎng)絡(luò)流時提到過,也是直接調(diào)用類

75、Class PlayerManager接口實現(xiàn):</p><p>  開始播放需要調(diào)StartPlay函數(shù),需要傳遞szURL(播放地址參數(shù))、HWND(播放流)。調(diào)用成功后需要對播放器進行一個配置屬性,當(dāng)播放完畢后關(guān)閉流,調(diào)用停止播放函數(shù)。</p><p>  int CSourceManager::StartPlay(char* szURL,HWND hShowWnd);</p&

76、gt;<p>  圖3-12 流播放函數(shù)流程圖</p><p>  3.4.2 獲取直播列表</p><p>  進入直播頁面之后會調(diào)用Androidfragment中的刷新頁面的方法onRefresh()方法,該方法將調(diào)用getDevice()方法通過服務(wù)器端口號和地址找到相對應(yīng)得CMS服務(wù)器,CMS響應(yīng),即調(diào)用RTSPliveVO.getDarwin().getBody.

77、getDevice();將所有的信息封裝在一個里面,隨即用liveVOAdapter得到屏幕大小,直播條數(shù),空間大小,長寬高等等信息,如圖3-13直播流程圖所示。</p><p>  圖3-13 直播流程圖</p><p>  3.4.3 DirectShow采集庫中的回調(diào)</p><p>  DirectShow采集庫中的回調(diào)機制有Darwin Client中Di

78、rectShow采集音視頻流程及幾種采集方式,兩種模式都是通過統(tǒng)一的設(shè)置回調(diào)函數(shù)接口函數(shù)實現(xiàn):</p><p>  WINAPI SetDShowCaptureCallback();</p><p>  回調(diào)函數(shù)的設(shè)置函數(shù)通常都帶有一個設(shè)置參數(shù),該設(shè)置參數(shù)通常是一個指針變量,主要用于在</p><p>  回調(diào)函數(shù)體中進行調(diào)用控制;最常用的做法是:將其設(shè)置為當(dāng)前類的

79、實例指針this,通過該指針調(diào)用不同的實例類的處理函數(shù)對回調(diào)數(shù)據(jù)進行處理,如3-14圖采集庫回調(diào)函數(shù)流程圖。</p><p>  圖3-14 采集庫回調(diào)函數(shù)流程圖</p><p>  3.4.4 LibEasyPlayer庫中的回調(diào)</p><p>  LibEasyPlayer庫提供的設(shè)置回調(diào)函數(shù)的接口主要來自其所依賴的庫RTSPClient,該回調(diào)函數(shù)主要是回調(diào)

80、網(wǎng)絡(luò)接收的RTSP流解析的音視頻編碼流數(shù)據(jù),用于轉(zhuǎn)發(fā)或者解碼播放,具體實現(xiàn)如圖3-15LibEasyPlayer庫中的回調(diào)流程圖;</p><p>  圖3-15 LibEasyPlayer庫中的回調(diào)流程圖</p><p>  3.4.5 網(wǎng)絡(luò)RTSP流回調(diào) </p><p>  流回調(diào)函數(shù)在客戶端中提供了設(shè)置接口函數(shù),底層用libEasyPlayer提供

81、的接口函數(shù)中進行設(shè)置,對應(yīng)RTSPClient庫提供的接口函數(shù)進行設(shè)置,客戶端中的回調(diào)設(shè)置函數(shù)接口。</p><p>  回調(diào)接口主要傳遞參數(shù)szURL(播放地址參數(shù))、HWND(播放流)、RENDER_FORMAT(播放格式化對象)、rtpovertcp(rtp控制對象)、username,(用戶名)、password(密碼)、MediaSourceCallBack(設(shè)置回調(diào)機制)、userPtr(構(gòu)建使用者)

82、。當(dāng)接口參數(shù)傳遞完畢開始關(guān)閉回調(diào)函數(shù),如果返回的資源數(shù)大于0時則關(guān)閉返回-1回去表示回調(diào)成功。</p><p>  接口中主要是有流對于Player_OpenStream對象需要傳遞一樣的參數(shù)只是返回值不同,流底層進行了二次封裝返回rtp協(xié)議控制完成信號。libEasyPlayer中主要的功能在類CChannelManager中實現(xiàn),該類提供了回調(diào)設(shè)置函數(shù)接口。</p><p>  主要參

83、數(shù)url(播放地址參數(shù))、HWND(播放流)、RENDER_FORMAT(播放格式化對象)、rtpovertcp(rtp控制對象)、username(用戶名)、password(密碼)、MediaSourceCallBack(設(shè)置回調(diào)機制)、userPtr(構(gòu)建使用者)。這個時候后臺啟動一個線程隊列,線程隊列判斷是否超時,不超時返回-1。解析播放地址參數(shù)。對地址參數(shù)和服務(wù)進行循環(huán)解析根據(jù)MAX_CHANNEL_NUM。當(dāng)線程處理成功時直

84、接調(diào)出循環(huán)確認(rèn)成功,如果判斷線程處理失敗重新調(diào)用RTSP_Init初始化方法進行初始化,然后RTSP_SetCallback調(diào)用RTSP控制協(xié)議進行控制同時換為NVSource,屏蔽聲音。RTSP_OpenStream輸出流重新調(diào)用打開,參數(shù)重新進行實例化輸出一遍最后CreatePlayThread調(diào)用線程序列進行判斷記錄LeaveCriticalSection回調(diào)次數(shù),以保證循環(huán)完成后調(diào)出循環(huán),如圖3-16流回調(diào)函數(shù)流程圖所示。<

85、;/p><p>  圖3-16 流回調(diào)函數(shù)流程圖</p><p>  其中,調(diào)用的RTSPClient庫函數(shù)接口RTSP_SetCallback(pRealtimePlayT hread [iNvsIdx].nvsHandle,RTSPSourceCallBack)實現(xiàn)網(wǎng)絡(luò)流編碼數(shù)據(jù)的回調(diào)函數(shù)的設(shè)置;在以上代碼中,除了初始化RTSPClient庫的操作以及設(shè)置回調(diào)函數(shù)外,還創(chuàng)建了兩個線程,分別

86、用于解碼和播放。</p><p>  對于解碼,首先創(chuàng)建線程池隊列,隊列里面有解碼線程,首先對于播放線程必須要在解碼線程前創(chuàng)建,然后判斷當(dāng)播放線程指針指向解碼線程是否成功的標(biāo)識時來判斷是否創(chuàng)建新的解碼線程還是進行下一步,如果解碼成功線程休眠等待解碼線程解碼完畢播放線程開始進行調(diào)用。當(dāng)播放線程完成播放后兩個線程結(jié)束。</p><p>  需要重要說明的是,在類CChannelManager中

87、一個重要的成員結(jié)構(gòu)體指針變量pRealtimePlayThread,該變量是貫穿整個程序流程,涉及到網(wǎng)絡(luò)流數(shù)據(jù)接收線程->編碼數(shù)據(jù)回調(diào)||緩存->寫文件||解碼線程->播放線程整個流程,在其中扮演了重要的角色。</p><p>  其中,編碼數(shù)據(jù)和解碼數(shù)據(jù)分別緩存在隊列結(jié)構(gòu)pAVQueue和數(shù)組yuvFrame中,程序中用這個結(jié)構(gòu)做了2級緩存,保證接收和解碼播放過程的流暢性,其中,解碼數(shù)據(jù)緩存只

88、有3幀,確保播放的實時性,當(dāng)然在機器性能或者網(wǎng)絡(luò)資源不夠的情況下可能出現(xiàn)卡幀或者花屏的情況,當(dāng)然,程序中采用了先進的丟幀機制,確保花屏的情況最大限度的減少。</p><p>  此外,pRealtimePlayThread這個結(jié)構(gòu)指針,創(chuàng)建的是一個最大64的數(shù)組,也就是相當(dāng)于的64個CChannelManager類的實例的Player對應(yīng)的處理(當(dāng)然,類實例只有一個CChannelManager*g_pChann

89、elManager),如圖3-17播放解碼流程圖所示。</p><p>  圖3-17 播放解碼流程圖</p><p>  3.4.6 云臺方向</p><p>  通過點擊界面的上下左右的按鈕獲取點擊監(jiān)聽事件調(diào)用setOnTouchListener()方法,根據(jù)點擊方向獲取方向值“Up”、“Down”、“Left”、“Right”,轉(zhuǎn)換成字符串,調(diào)用sendCon

90、trolCommand()方法將方向值封裝在一個url字符串中通過Okhttp網(wǎng)絡(luò)框架將url發(fā)送到CMS,再有CMS發(fā)送信令給Camera,Camera收到信令后隨即作出對應(yīng)的命令操作,在這個同時會反應(yīng)給Darwin服務(wù)器視頻流,客戶端會受到視頻流并且顯示,如圖3-18云臺控制流程圖。</p><p>  圖3-18 云臺控制流程圖</p><p><b>  3.5 異常分析

91、</b></p><p>  通過MobclickAgent實現(xiàn)類調(diào)用onResume函數(shù)和onPause函數(shù)實現(xiàn)記錄異常數(shù)據(jù)的功能。通過對接SDK的功能實現(xiàn)統(tǒng)計bug。當(dāng)APP發(fā)生異常退出時,可通過友盟統(tǒng)計得到異常錯誤如圖3-19友盟異常統(tǒng)計數(shù)據(jù)圖。</p><p>  圖3-19 友盟異常統(tǒng)計數(shù)據(jù)圖</p><p><b>  4 系統(tǒng)測試

92、</b></p><p><b>  4.1 測試方法</b></p><p>  軟件開發(fā)的最基本要求是按時、高質(zhì)量的發(fā)布軟件產(chǎn)品,而軟件測試是軟件質(zhì)量保證的最重要的手段之一。對軟件產(chǎn)品測試的方法有很多,主要分為靜態(tài)測試和動態(tài)測試,靜態(tài)測試主要是單元測試中最重要的手段之一,適用于新開發(fā)的和重用的代碼。通常在代碼完成并無錯誤的通過編譯或匯編后進行,采用工具

93、掃描分析、代碼評審等方法。動態(tài)測試需要設(shè)計更充分的測試用例以驗證業(yè)務(wù)邏輯合理性和單元的實際表現(xiàn)行為。在對本系統(tǒng)的測試中,主要使用動態(tài)測試進行測試。</p><p>  在動態(tài)測試中分為白盒測試和黑盒測試,白盒測試主要測試程序的代碼結(jié)構(gòu),黑盒測試主要測試軟件的功能。本次測試使用黑盒測試測試系統(tǒng)的所有功能。</p><p><b>  4.2 測試過程</b></p

94、><p>  將AppleDarwin先配置云平臺服務(wù)器,并對接一些Camera設(shè)備部署在云平臺服務(wù)器上,在客戶端上首先登錄,與設(shè)置中的文件名相同可進入主界面進行測試。</p><p>  4.2.1 登錄注冊及忘記密碼測試</p><p>  登陸界面測試:打開客戶端首頁可以進行登錄操作如圖4-1登陸界面所示。登錄頁面主要通過手機號或者郵箱進行登錄驗證,當(dāng)填寫存在的手

95、機號,錯誤的密碼,結(jié)果提示密碼錯誤。當(dāng)填寫不存在的手機號,隨意的密碼,結(jié)果提示:用戶不存在。當(dāng)填寫正確的手機號,正確的密碼,結(jié)果提示:登錄成功,跳轉(zhuǎn)到主頁面。結(jié)果跳轉(zhuǎn)到主頁面與測試用例相符。</p><p><b>  表4-1 登陸測試</b></p><p><b>  圖4-1 登陸界面</b></p><p>  

96、注冊界面測試:在登錄頁面有立即注冊的功能,點擊立即注冊打開頁面如圖4-2注冊界面所示。</p><p>  填寫手機號,點擊獲取驗證碼,得到手機驗證碼。填寫密碼,確認(rèn)密碼是否一致,密碼一致,對密碼進行MD5算法加密再進行登錄,當(dāng)填寫兩個不一樣的密碼,結(jié)果提示兩次密碼不一致,與測試用例相符。當(dāng)填寫同一密碼,規(guī)范手機號,結(jié)果提示:注冊成功,與測試用例相符。</p><p><b> 

97、 表4-2 注冊測試</b></p><p><b>  圖4-2 注冊界面</b></p><p>  忘記密碼界面:點擊忘記密碼跳轉(zhuǎn)到該頁面如圖4-3忘記密碼頁面所示。輸入手機號,獲取該手機號的驗證碼。如果沒有該手機號,則返回。如果手機號存在則繼續(xù)。輸入新密碼,確認(rèn)密碼,新密碼與確認(rèn)密碼一樣重置成功,重新進行登錄。</p><p&g

98、t;  表4-3 忘記密碼測試</p><p>  圖4-3 忘記密碼頁面</p><p><b>  4.2.2 設(shè)置</b></p><p>  設(shè)置模塊如圖4-4設(shè)置界面顯所示。添加服務(wù)器IP,添加服務(wù)器端口,與云平臺客戶端進行對接,完成配置進行保存。</p><p><b>  表4-4 設(shè)置測試<

99、;/b></p><p><b>  圖4-4 設(shè)置</b></p><p>  4.2.3 Camera及移動設(shè)備列表</p><p>  Camera列表:獲取硬件攝像機移動廠家給的對接服務(wù),通過后臺完成對接得到攝像機,并控制攝像機的音視頻、對講等動作。如圖4-5Camera列表顯示。</p><p>  表4

100、-5 Camera列表測試</p><p>  圖4-5 Camera列表</p><p>  移動設(shè)備列表:在設(shè)置中完成了與云平臺的對接,以Andriod手機作為攝像機的視頻源接入到Darwin的云平臺對外視頻服務(wù)上得到移動設(shè)備列表。如圖4-6移動設(shè)備列表所示。</p><p>  表4-6 移動設(shè)備列表測試</p><p>  圖4-6

101、移動設(shè)備列表</p><p>  4.2.4 云臺控制功能測試</p><p>  選取一個在線Camera設(shè)備點擊可以設(shè)備所推送的視頻流,并可以對設(shè)備進行實時控制即可以通過手機屏幕上面的上下左右進行控制攝像頭的方向進行控制云臺方向。測試點擊相應(yīng)按鈕查看圖像是否上下左右移動如圖4-7云臺控制界面所示。</p><p>  表4-7 云臺控制方向功能測試</p&

102、gt;<p>  圖4-7 云臺控制界面</p><p>  4.2.5 云臺遠(yuǎn)程語音功能測試</p><p>  選取一個在線Camera設(shè)備點擊可以設(shè)備所推送的視頻流,并可以對設(shè)備進行遠(yuǎn)程對講、發(fā)聲達到智能家居實現(xiàn)的實時傳輸、實時控制的效果。還可以通過手機屏幕上面的上下左右進行控制攝像頭的方向進行查看。測試點擊遠(yuǎn)程語音按鈕觀察云臺設(shè)備是否播放發(fā)送的語音。</p>

103、;<p>  表4-8 云臺遠(yuǎn)程語音功能測試</p><p>  4.2.6 測試總結(jié)</p><p>  在本次測試中主要是用黑盒測試通過上述一系列的測試過程,黑盒測試是常用的軟件測試的方法,用這種方法測試時,把被測試程序當(dāng)作一個黑盒,在不考慮程序內(nèi)部結(jié)構(gòu)和內(nèi)部特性,測試者只知道該程序的輸入和輸出之間的關(guān)系或程序的功能的情況下,依靠能反應(yīng)這一關(guān)系和程序功能需求規(guī)格的說明書,

104、來確定測試用例和推斷測試結(jié)構(gòu)的正確性。軟件的黑盒測試被用來證實軟件功能的爭正確性和可操作性。其應(yīng)用領(lǐng)域十分廣泛,因此掌握好黑盒測試很重要。經(jīng)過測試本課題中的基本功能已經(jīng)全部實現(xiàn)。得到理想的結(jié)果,通過測試也知道軟件所存在的不足并加以改進使軟件更加好用。</p><p><b>  5 總結(jié)</b></p><p>  Apple Darwin是蘋果公司發(fā)布的開源代碼,在

105、編寫系統(tǒng)的時候?qū)夹g(shù)的了解非常重要。在一開始做需求分析的時候反復(fù)與導(dǎo)師討論,對于視頻控制時,所采用的TCP/UDP等協(xié)議進行了一個深入的探究,在研究實時傳流的時候,也需要對RTSP做一個確切的解讀。</p><p>  Apple Darwin的開源框架在使用時調(diào)用實時控制協(xié)議、實時傳輸協(xié)議的目的是和云平臺構(gòu)建一個實時傳輸且能夠在控制攝像頭時及時更新和調(diào)用數(shù)據(jù),有很多欠缺的技術(shù)同時在需求方面需要反復(fù)斟酌拿到最好的

106、解決方案。所以在后期完成系統(tǒng)方面,也學(xué)習(xí)到了很多知識。</p><p>  整體設(shè)計方案主要來源于和團隊的合作與溝通,因為完成這個的基礎(chǔ)不止在于自己的系統(tǒng)還需要團隊合作搭建一套完整的開源流媒體框架。最初在一起討論的結(jié)果得知大體框架是有客戶端發(fā)送命令到CMS,再由CMS處理命令之后發(fā)送Camera,Camera收到命令開始傳流Darwin服務(wù)器,再由Darwin服務(wù)器通過RTSP協(xié)議傳入實時流給客戶端端,所以需要大

107、家互相提供接口,對于Camera的調(diào)用和使用需要去開放RTSP接口能讓這個系統(tǒng)進行錄音、控制等才能完整的實現(xiàn)一套完整的流程。</p><p>  總之,在完成畢業(yè)論文上讓我深刻體會到了技術(shù)的學(xué)習(xí)、團隊的合作、需求的設(shè)定、整體的設(shè)計都是不可缺少的,還有一個最重要的東西就是耐心。作為一個大四的畢業(yè)生,作為一個即將步入社會的軟件工程師,耐心是我們必不可少的,在遇到問題的時候不要慌張和泄氣,遇到問題解決問題才是我們應(yīng)該做

108、的,這也是在此次完成畢業(yè)設(shè)計我學(xué)到的能力。</p><p><b>  參考文獻</b></p><p>  [1] 劉炎芬.流媒體技術(shù)及其應(yīng)用[J].山西科技,2014:4-5</p><p>  [2] 韓超,梁泉.Android系統(tǒng)原理及開發(fā)要點詳解 [J],2016:1125-1179</p><p>  [3]

109、 馬躍,高春,董慶文等.流媒體音視頻切換矩陣的設(shè)計與實現(xiàn)[J].小型微型計算機系統(tǒng),2015:2534-2537</p><p>  [4] 張偉,都志輝,李三立.達爾文流媒體服務(wù)器用戶認(rèn)證擴展與應(yīng)用[J].小型微型計算機系統(tǒng) ,2014:706-710</p><p>  [5] 劉衛(wèi)國,姚昱禹.Android與J2ME平臺間即時通信的研究與實現(xiàn)[J].計算機系統(tǒng)應(yīng)用,2014

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論