基于openRTMFP在線遠程培訓點播系統(tǒng)服務器控制程序設計與實現(xiàn)_第1頁
基于openRTMFP在線遠程培訓點播系統(tǒng)服務器控制程序設計與實現(xiàn)_第2頁
基于openRTMFP在線遠程培訓點播系統(tǒng)服務器控制程序設計與實現(xiàn)_第3頁
基于openRTMFP在線遠程培訓點播系統(tǒng)服務器控制程序設計與實現(xiàn)_第4頁
基于openRTMFP在線遠程培訓點播系統(tǒng)服務器控制程序設計與實現(xiàn)_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 本科畢業(yè)設計(論文)基于openRTMFP的在線遠程培訓點播系統(tǒng)服務器控制程序設計與實現(xiàn) 學 院 軟件學院 專 業(yè) 軟件工程 學生姓名 學生學號 指導教師 提交日期 2014 年 06 月 01 日摘 要本文詳細介紹了基于openRTMFP的P2P視頻點播系統(tǒng)服務器應用相關原理及該服務器后臺控制程序的實現(xiàn)過程。采用基于openRTMFP的P2P視頻點播系統(tǒng)方案能減少視頻點播時寬帶消耗,提升傳送速度,以及快速連接恢復。因此,采用這種方案針對視頻點播系統(tǒng)的實現(xiàn)將有利于開發(fā)者快速部署應用環(huán)境,降低開發(fā)成本。實時流媒體應用中能提供優(yōu)秀的的用戶體驗。openRTMFP(Cumulus Server)是

2、一個完全開源和跨平臺的可擴展的RTMFP協(xié)議媒體服務器,支持P2P點到點服務、修改Lua腳本創(chuàng)建自己的應用程序、實現(xiàn)實時應用的高并發(fā)擴展及負載均衡等功能。通過修改腳本創(chuàng)建個性化的服務端應用程序來擴展Cumulus的功能,再創(chuàng)建一個類似客戶端的應用與該服務端建立連接和數(shù)據(jù)通信。服務器端控制程序的設計與實現(xiàn)是基于openRTMFP的P2P點播系統(tǒng)的一個子課題。首先需要熟悉該openRTMFP服務器框架及運行原理,其中包括openRTMFP源程序安裝和編譯,對POCO庫、openssl、Lua腳本的學習等,修改該服務器腳本創(chuàng)建自己的應用程序來擴展Cumulus功能,開發(fā)出的程序界面應該簡潔友好,便于

3、用戶理解和操作。服務器端控制程序實現(xiàn)的主要功能是查看當前用戶的連接數(shù)量,流量監(jiān)控,重連,斷開服務。本文先對當前基于P2P視頻點播系統(tǒng)應用設計技術和背景作簡單介紹,對本課題用到的開發(fā)工具和任務安排簡單說明;接著闡述RTMFP協(xié)議特點、開源openRTMFP項目的開放接口及Lua腳本語言,服務器編譯安裝說明;然后是支持在線遠程培訓后臺管理控制程序的設計與實現(xiàn)過程,涉及到需求、程序概要設計、詳細設計和程序測試等。最后總結與展望對該項目的學習和設計過程。關鍵詞:openRTMFP;RTMFP;P2P;實時流媒體;控制程序Abstract This article describes the relat

4、ed principles of openRTMFP-based and P2P VOD System server applications and the implementation process of implementing a server control program. The scheme of P2P VOD System OpenRTMFP-based can reduce the time consumption of broadband video-on-demand, improve transmission speed, and restoring connec

5、tion quickly . Therefore, using this scheme for video-on-demand system will be beneficial to developers to quickly deploy applications and reduce the cost of development. Real-time streaming media applications can provide users excellent with experience.The openRTMFP (Cumulus Server) is a completely

6、 open-source , cross-platform and scalable RTMFP protocol media server. Supporting for P2P-point service, modifying Lua script to create their own applications, high concurrent expansion and load balancing capabilities. By modifying the script to create a personalized Cumulus server application to e

7、xtend functions, and then create a similar application client to establish a connection and data communication with the server.The design and implementation of server-side control program is a sub-topic that based on openRTMFP of P2P video-on-demand system. First, need to be familiar with the openRT

8、MFP server framework and operating principles, including openRTMFP source compilation and installation of the POCO libraries, openssl, Lua script learning. Modifying the server script to create their own server applications to extend Cumulus functions, the interface of the program should be simple a

9、nd friendly, easy for users to understand and operate. The main fuction of the server-side control program is to view the current clients numbers of connections, traffic monitoring , reconnect, disconnect the service between the client and server.This article firstly make a brief introduction of P2P

10、-based video-on-demand on the current system application design techniques and background , a explanation of development tools and tasks arrangement for this study; then introduce the RTMFP protocol features, API of open source projects openRTMFP and Lua scripting language, the server compiler insta

11、llation instructions; then summarize the design and implementation of designing server control program, involving requirements, procedures outline design, detailed design and program testing. In the end,Concludes with the prospect of learning and design process for the project. Keyword: openRTMFP, R

12、TMFP, P2P, real time streaming media, control program第一章 引言1.1課題背景和簡介 隨著計算機網(wǎng)絡和視頻流媒體技術的發(fā)展,人們對互聯(lián)網(wǎng)視頻點播系統(tǒng)的需求與期望更高。傳統(tǒng)的客戶端/服務器模式的流媒體服務系統(tǒng)已不可以滿足流媒體對服務器性能以及高帶寬的要求,這類視頻應用限制了視頻的傳輸速度和清晰度,影響用戶體驗。針對這類問題,采用P2P對等網(wǎng)絡技術實現(xiàn)的視頻通信應用能減低對服務器的壓力,降低通信延遲和寬帶開銷。隨著P2P技術發(fā)展的逐步完善,在視頻點播/在線直播,用戶文件共享,分布式計算領域得到廣泛應用。目前流行的基于P2P的視頻點播系統(tǒng)有:暴風

13、影音、在線電視直播PPLive、Flash Player播放器等應用。現(xiàn)有的流媒體協(xié)議包括有RSVP(資源預留協(xié)議)、RTP(實時傳輸協(xié)議)、RTCP(實時傳輸控制協(xié)議)、MMS(微軟流媒體服務協(xié)議)、RTSP(實時流傳輸協(xié)議)、MIME(多目因特網(wǎng)電子郵件擴展協(xié)議)、RTMP(Adobe實時消息協(xié)議)、RTMFP(Adobe實施消息流協(xié)議即P2P協(xié)議)。Adobe公司的產(chǎn)品Flash Player和Air1.5 率先使用對等網(wǎng)絡實時流媒體協(xié)議RTMFP,提供媒體服務端的支持使得可以實現(xiàn)應用層組播和P2P功能。openRTMFP(Cumulus Server)是一個完全開源和跨平臺的可擴展的R

14、TMFP協(xié)議媒體服務器腳本,Cumulus Server遵循基于GPL 框架下的優(yōu)勢、速度、跨平臺、輕量和高質量代碼。支持現(xiàn)場直播和視頻聊天、支持P2P點到點服務、支持push、RPC、pull切換,并能和服務器端與所有AMF客戶端通信、支持修改腳本創(chuàng)建自己的應用程序來擴展Cumulus的功能、負載均衡等功能。 1.2主要研究工作 本課題運用開源的openRTMFP服務器開發(fā)一個基于flash的p2p點播系統(tǒng)。采用基于openRTMFP的P2P視頻點播系統(tǒng)方案將能減少視頻點播時寬帶消耗,提升傳送速度,以及快速連接恢復。openRTMFP服務器采用的RTMFP協(xié)議是基于UDP的,在減少延時和丟包

15、容忍上有很大優(yōu)勢,同時客戶端數(shù)據(jù)可直接傳送,適合大范圍部署。利用現(xiàn)有的openRTMFP服務器程序,開發(fā)一個界面控制,主要功能有:查看當前用戶的連接數(shù)量,流量監(jiān)控,重連,斷開服務,主要難點:配置安裝openRTMFP服務器,讀懂該服務器代碼,了解服務器工作原理,進而進行界面開發(fā)。因此設計與實現(xiàn)基于openRTMFP的P2P點播系統(tǒng)服務器控制程序,對了解P2P視頻通信應用,學習配置基于RTMFP協(xié)議的服務器Cumulus有重要意義。熟悉該服務器框架并開發(fā)控制程序,監(jiān)控和維護該視頻點播系統(tǒng)中客戶端和服務器連接使用情況。 1.3相關開發(fā)工具與技術介紹 Microsoft Visual Studio

16、2010開發(fā)工具 Visual Studio是目前最流行的Windows平臺應用程序開發(fā)環(huán)境。Microsoft Visual C+是Microsoft公司推出的開發(fā)Win32環(huán)境程序,面向對象的可視化集成編程系統(tǒng)。它不但具有程序框架自動生成、靈活方便的類管理、代碼編寫和界面設計集成交互操作、可開發(fā)多種程序等優(yōu)點,而且通過簡單的設置就可使其生成的程序框架支持數(shù)據(jù)庫接口、OLE2,WinSock網(wǎng)絡、3D控制界面,支持開發(fā)面向Windows 7的應用程序。除了Microsoft SQL Server,它還支持 IBM DB2和Oracle數(shù)據(jù)庫。目前有專業(yè)版、高級版、旗艦版、

17、學習版和測試版五個版本。本項目編譯Cumulus服務器開源項目使用到的是VS2010的旗艦版。 POCO C+庫 POCO C+庫是開源的用于簡化和加速C+開發(fā)面向網(wǎng)絡、可移植應用程序的C+庫集。包含4個核心庫及一些附加庫. 這4個核心庫分別是: Foundation, XML, Util 和 Net. 附加庫中其中2個是NetSSL和Data,NetSSL為Net庫中的網(wǎng)絡類提供SSL支持, Data庫提供訪問不同SQL數(shù)據(jù)庫的一致性接口。Foundation庫包含底層平臺的封裝層,也包含經(jīng)常使用的工具類和函數(shù)如:數(shù)字和字符處理類,日期時間處理類,stream類用于寫二進制數(shù)據(jù)到流中,多線程

18、的封裝等;XML類庫支持處理,讀取和寫XML文件;Net庫包含包含socket類, 支持TCP流和server sockets, UDP sockets, multicast sockets, ICMP 及 raw sockets;Util庫包含創(chuàng)建命令行和服務器應用框架和管理配置信息。成功編譯openTMFP服務器需要安裝POCO庫支持,因為Cumulus中Cumuluslib是rtmfp主體實現(xiàn),大量用到poco庫中socket、thread、IO線程等。 OpenSSL庫OpenSSL是安全套接字層密碼庫,大致可分為SSL協(xié)議庫,應用程序和密碼算法庫。編譯服務器時需要在系統(tǒng)安裝OpenS

19、SL,安裝Perl,配置VC環(huán)境變量,編譯動態(tài)鏈接庫等過程。LuaJIT(lua腳本編譯器)Lua,輕巧的腳本語言,用于嵌入到應用程序為其提供擴展和定制個性化功能。在本開源服務器項目中的CumulusServer其實是根據(jù)CumulusLib而設計的可擴展服務器框架,用來支持lua以及服務器直接負載均衡。JavaScriptJavaScript是一種基于對象和事件驅動并且具有一定的安全性的客戶端腳本語言。它是一種動態(tài)、弱類型、基于原型的語言,JavaScript內(nèi)置支持類。一個完整的 JavaScript 是由以下 3 個不同部分組成的:核心(ECMAScript)、文檔對象模型(簡稱DOM)

20、、瀏覽器對象模型(簡稱BOM)。JavaScript的一個重要功能就是面向對象的功能,通過基于對象的程序設計,可以用更直觀、模塊化和可重復使用的方式進行程序開發(fā)。1.4論文內(nèi)容安排 本文主要介紹了openRTMFP服務器的編譯安裝、實現(xiàn)對服務器應用擴展以及設計實現(xiàn)支持在線遠程培訓后臺管理系統(tǒng),并對該系統(tǒng)進行系統(tǒng)測試。本文主要內(nèi)容分為八章,其組織結構如下:第一章為引言,引言的主要內(nèi)容是對課題背景意義、研究工作、開發(fā)工具的介紹。說明了在何種背景下完成該項目和本文完成的工作第二章為相關技術介紹,是對課題涉及的P2P、RTMFP協(xié)議、流媒體技術簡單分析。熟悉這些技術有利于如何實現(xiàn)本文涉及的項目。第三章

21、為openRTMFP服務器的介紹,主要內(nèi)容為對openRTMFP源代碼的學習分析,了解其架構和核心實現(xiàn),并利用lua腳本實現(xiàn)服務器的應用擴展meeting服務器應用。第四章、第五章、第六章、第七章是對支持在線遠程培訓后臺管理系統(tǒng)整個開發(fā)實現(xiàn)過程的分析和介紹,包括需求分析、概要設計、詳細設計、系統(tǒng)應用測試四個方面; 最后一章為總結與展望,對本文研究的內(nèi)容進行總結以及對未來的展望。第二章 相關技術介紹2.1 P2P目錄摘 要IIAbstractIIIThis article describes the related principles of openRTMFP-based and P2P VO

22、D System server applications and the implementation process of implementing a server control program. The scheme of P2P VOD System OpenRTMFP-based can reduce the time consumption of broadband video-on-demand, improve transmission speed, and restoring connection quickly . Therefore, using this scheme

23、 for video-on-demand system will be beneficial to developers to quickly deploy applications and reduce the cost of development. Real-time streaming media applications can provide users excellent with experience.IIIThe openRTMFP (Cumulus Server) is a completely open-source , cross-platform and scalab

24、le RTMFP protocol media server. Supporting for P2P-point service, modifying Lua script to create their own applications, high concurrent expansion and load balancing capabilities. By modifying the script to create a personalized Cumulus server application to extend functions, and then create a simil

25、ar application client to establish a connection and data communication with the server.IIIThe design and implementation of server-side control program is a sub-topic that based on openRTMFP of P2P video-on-demand system. First, need to be familiar with the openRTMFP server framework and operating pr

26、inciples, including openRTMFP source compilation and installation of the POCO libraries, openssl, Lua script learning. Modifying the server script to create their own server applications to extend Cumulus functions, the interface of the program should be simple and friendly, easy for users to unders

27、tand and operate. The main fuction of the server-side control program is to view the current clients numbers of connections, traffic monitoring , reconnect, disconnect the service between the client and server.IIIThis article firstly make a brief introduction of P2P-based video-on-demand on the curr

28、ent system application design techniques and background , a explanation of development tools and tasks arrangement for this study; then introduce the RTMFP protocol features, API of open source projects openRTMFP and Lua scripting language, the server compiler installation instructions; then summari

29、ze the design and implementation of designing server control program, involving requirements, procedures outline design, detailed design and program testing. In the end,Concludes with the prospect of learning and design process for the project.III第一章 引言IV1.1課題背景和簡介IV1.2主要研究工作IV1.3相關開發(fā)工具與技術介紹V1.4論文內(nèi)容

30、安排VI第二章 相關技術介紹VII2.1 P2PVII介紹VII2.2 RTMFP協(xié)議VIII2.2.1 RTMFP原理VIII2.2.2 RTMFP特點IX2.3 流媒體技術IX第三章 openRTMFP服務器X3.1 openRTMFP服務器介紹X3.2 openRTMFP服務器編譯及安裝X3.3負載均衡及可擴展性XI3.4 openRTMFP常用的 API和套接字XII3.4.1常用的APIXII3.4.2 openRTMFP的Socket 使用XII3.5 openRTMFP源碼淺析XIII3.5.1 openRTMFP服務器的啟動流程XIII3.5.2 Cumulus服務器主線程分析

31、XV3.6 CumulusServer服務器應用及簡單實例XVI3.6.1 如何創(chuàng)建自定義的服務器應用XVI3.6.2 加載全局配置XVII3.6.3 應用間通信XVII3.6.4 自定義服務器應用實例XVII第四章 系統(tǒng)需求分析XX4.1需求分析的目的和意義XX4.2功能性需求分析XX4.2.1后臺用戶管理功能需求描述XX4.2.1流量、節(jié)點監(jiān)控功能需求描述XXI4.2.2廣告插播功能需求描述XXII4.2.3視頻控制管理功能XXIII4.2.4自動轉換格式及碼率功能需求描述XXIV4.3 非功能性需求分析XXIV第五章 系統(tǒng)概要設計XXVI5.1系統(tǒng)總體架構設計XXVI5.2系統(tǒng)后臺服務模

32、塊設計XXVI5.2.1后臺用戶管理模塊XXVI5.2.2視頻管理模塊XXVII5.2.3廣告管理模塊XXVII5.2.4系統(tǒng)信息模塊XXVIII5.3后臺管理系統(tǒng)數(shù)據(jù)庫設計XXVIII第六章 后臺管理系統(tǒng)實現(xiàn)XXXI6.1 后臺用戶管理模塊實現(xiàn)XXXI6.1.1 后臺用戶登錄與注銷XXXI6.1.2后臺管理用戶添加和刪除XXXII6.2 視頻管理模塊實現(xiàn)XXXIV6.2.1添加視頻功能實現(xiàn)XXXIV6.2.2刪除視頻功能實現(xiàn)XXXIV6.3 廣告管理模塊實現(xiàn)XXXVI6.3.1廣告添加功能XXXVI6.3.2廣告刪除功能XXXVI6.4系統(tǒng)信息(監(jiān)控)模塊實現(xiàn)XXXVII6.4.1節(jié)點數(shù)量監(jiān)

33、控實現(xiàn)XXXVII6.4.2服務器所在系統(tǒng)流量監(jiān)控實現(xiàn)XXXVII第七章 后臺管理系統(tǒng)應用及測試XXXIX7.1用戶管理模塊應用與測試XXXIX7.2 視頻管理功能應用與測試XXXIX7.3 廣告管理功能應用與測試XXXIX7.4 系統(tǒng)信息監(jiān)控功能測試XL7.5 后臺管理系統(tǒng)應用測試小結XL第八章 結論與展望XLI8.1 結論XLI8.2 展望XLI參考文獻XLII致謝XLIII2.2 RTMFP協(xié)議 2.2.1 RTMFP原理 RTMFP實時媒體流協(xié)議(Real-Time- Media Flow Protocol)是 Adobe 公司開發(fā)的一個專有的通信協(xié)議,通過 C/S 和 P2P 模型能

34、夠在網(wǎng)絡中高效的傳送多媒體信息如音樂視頻文件等。RTMFP協(xié)議可以讓Adobe Flash Player的所在終端用戶之間實現(xiàn)直接點對點等多種通信。RTMFP將直接減少實時通信流量帶寬成本,如音頻通話、視頻聊天和多人游戲等應用。 RTMFP的工作原理是:首先,客戶連接到基于RTMFP協(xié)議服務器,如Flash Media Server、openRTMFP(又稱Cumulus),連接成功后獲得唯一的客戶端標識碼ID。然后獲得ID后的客戶端就可以使用UDP協(xié)議發(fā)布數(shù)據(jù)、音頻或者視頻信息。和該客戶端連接在同一個服務器上的其他客戶端應用可根據(jù)ID接收它已發(fā)布的流信息。當然其它客戶端也要事先連接到同一個服

35、務器,獲取自己的ID,以及流資源的一些信息,便于訂閱用戶所需要的流資源。RTMFP協(xié)議實現(xiàn)涉及的技術支持有:客戶端涉及到組播的實現(xiàn),每一個連到服務器的端應用如果相互可見就會在服務器端形成一個組Group。一個Group同時保存組內(nèi)個成員間的路由信息,因此組內(nèi)任何兩節(jié)點間存在直接或間接的通信連接。Flash Player10.1版本后允許實現(xiàn)應用層組播技術,尋找合適分發(fā)路徑,把資源通過P2P方式分發(fā)到相應的組。組播通信流是一個或者多個發(fā)布者可在group中全體組員發(fā)布組播流信息及數(shù)據(jù)。服務器端需要支持RTMFP協(xié)議,支持覆蓋網(wǎng)絡,對象復制特性,同時在不同地址的服務器通過TCP連接實現(xiàn)共享用戶資源

36、信息等。2.2.2 RTMFP特點因為RTMFP之間傳遞數(shù)據(jù)通信是在最終用戶客戶端之間傳遞數(shù)據(jù),而不是客戶端與服務器之間,服務器的帶寬不被大量占用,是成本最低的解決方案。RTMFP 使用戶通過麥克風和攝像頭能夠直接與其他用戶連接和通信,也可以發(fā)送消息。RTMFP 協(xié)議是基于UDP協(xié)議來實現(xiàn)數(shù)據(jù)傳送,UDP協(xié)議不可靠但傳送音頻視頻數(shù)據(jù)速度快。終端用戶和終端用戶之間實時通信對實時性要求較高,因此可容忍部分丟包、錯包的現(xiàn)象存在。RTMFP 協(xié)議有如下這些特點,可能有助于減少連接失敗錯誤等一下相關影響。(1)較安全且低時延:傳輸?shù)臄?shù)據(jù)利用AES加密,終端通信安全。UDP協(xié)議實時性降低時延。(2)快速連

37、接恢復:網(wǎng)絡連接中斷后能快速恢復連接。例如,當一個無線網(wǎng)絡連接,經(jīng)歷中斷,重新連接成功后即有數(shù)據(jù)傳輸能力。(3)IP 允許變動:即使客戶端更改到一個新的 IP 地址,這個活動的網(wǎng)絡的會話依然會保持且在激活狀態(tài)。2.3 流媒體技術流媒體系統(tǒng)的架構主要分四部分:媒體服務器,播放器,媒體編碼器,文件存儲器。制約流媒體性能服務的關鍵因素是對傳輸質量的控制。比如如何支持較多的用戶并發(fā)數(shù),保證端和端之間的QoS(服務質量)。另外多媒體數(shù)據(jù)網(wǎng)絡傳輸和控制協(xié)議有RTP/RTCP協(xié)議、RSVP協(xié)議、RTSP協(xié)議,RTMP協(xié)議、RTMFP協(xié)議。第三章 openRTMFP服務器3.1 openRTMFP服務器介紹o

38、penRTMFP(也稱Cumulus Server)是支持Lunix、Windows、Mac等主流系統(tǒng)的跨平臺,可擴展的完全開源服務器。該服務器遵循GPL框架下的優(yōu)勢、跨平臺、速度、代碼輕量且高質量。用戶可以通過Cumulus官網(wǎng)去免費下載源代碼并在需要的平臺上編譯安裝Cumulus Server。它具有點到點P2P服務、現(xiàn)場音頻視頻直播以及pull/ push/RPC切換支持等特點, 支持服務器之間通信來實現(xiàn)負載均衡,而且支持任何AMF終端應用和服務器端進行通信,通過修改腳本(主要用Lua腳本語言)來創(chuàng)建應用程序、擴展Cumulus來實現(xiàn)更個性化的功能。3.2 openRTMFP服務器編譯及

39、安裝編譯安裝Cumulus Server需要OpenSSL密碼庫、POCO庫、LuaJIT編譯器等框架的支持,所以安裝前要到、、、 OpenRTMFP/ Cumulus官網(wǎng)下載好需要的庫以及cumulus源代碼。下載過程注意選擇支持所用操作系統(tǒng)以及編譯工具如(VS2010)的正確版本,以免安裝過程出錯。在Windows系統(tǒng),VS2010開發(fā)環(huán)境安裝步驟主要有以下幾個步驟:1. 安裝POCO C+庫。命令行下cd進入該庫解壓目錄,分別輸入以下命令編譯:先"%VS100COMNTOOL

40、S%vsvars32.bat" 再buildwin 100 build static_mt both Win32 nosamples devenv 編譯成功后,添加它的包目錄和庫目錄到CumulusServer_2010.sln工程。2. 安裝和編譯OpenSSL。編譯完成后添加openssl的inc32包目錄和out32dll庫目錄到CumulusServer_2010.sln工程。3. 安裝和編譯LuaJIT編譯器。命令行下進入LuaJIT的src資源目錄,分別輸入 "%VS100COMNTOOLS%vsvars32.bat" 和

41、msvcbuild.bat命令編譯安裝完成后,再添加LuaJIT的src目錄到CumulusServer_2010.sln工程的VC+庫目錄。4. 至此,openRTMFP的編譯準備工作完成,然后開始編譯工程,把src包中的lua51.dll復制到ColumnsServer.exe所在的目錄下。安裝編譯openRTMFP服務器工作有一定的難度,安裝過程會發(fā)生各種不同的問題,大部分是由于操作系統(tǒng)動態(tài)庫缺失、編譯工具差異引起。因此發(fā)生問題時仔細分析出錯問題原因,上網(wǎng)查詢出錯原因及解決方法。成功啟動openRTMFP后界面顯示如下:圖3-1 openRTMFP編譯成功界面 安裝成功后,在服務器的可執(zhí)

42、行目錄(即Cumulus.exe的目錄)中默認會生成一個logs的文件夾,文件夾里面會生成log.0格式的文件,用windows寫字板打開后可查看服務器啟動時的時間、端口等基本信息。還會生成名字為www的文件夾,里面存放是利用lua腳本語言擴展cumulus后開發(fā)的服務器應用。3.3負載均衡及可擴展性 RTMFP是一個P2P協(xié)議,需要有一個服務器端點處理所有客戶端之間的點對點連接。但基于UDP的特性,RTMFP只有處理如實時視頻/音頻流的能力,在經(jīng)典的B/S模式不使用P2P功能 。這種情況下一直使用服務器負載,需要中央可用性。當然,一臺機器總會有一些硬件上的限制(CPU /內(nèi)存),這時負載變得

43、特別重要,一個CumulusServer實例將遠遠不夠的。為了解決負荷需求,CumuluServer中的完整框架可使多個CumulusServer實例通信,放大計算和接收能力。它允許配置多個CumulusServer環(huán)境,提供檢測服務器連接和斷開的,服務器之間的數(shù)據(jù)交換,客戶端與服務器的重定向來部署系統(tǒng)的負載均衡,例如在同步客戶端信息和與NetGroup的RTMFP選項。服務器之間的通信使用原始的TCP方式進行。負載均衡及可擴展性體現(xiàn)在如下方面:1. 服務器應用之間交換數(shù)據(jù)和資源。新的服務器應用加入時,分享已有發(fā)布者信息。2. 負載均衡和會合服務??蛻舳诉B接時接受到多個服務器應用地址,RTMF

44、P啟動多個并聯(lián)連接嘗試,最先建立連接的服務器應用將會成功連接到客戶端3.4 openRTMFP常用的 API和套接字本節(jié)介紹一些常用的CumulusServer服務器應用的事件和開發(fā)接口,方便如何建立服務器應用。另外簡單分析 openRTMFP套接字運用。3.4.1常用的API表3-1 常用API說明對象屬性方法名事件對象說明CommonnotionsvaluemethodonManage一些共同的聲明CumulusClients, groups,Configs, servers,publicAddresscreateTCPClient(),absolutePath(path)publish(

45、name)/全局對象,提供對本身元素的訪問Clientscountpairs(),(id/rawId)/連接服務器客戶端集合Clientid, rawId, address, flashVersion,path ,pageUrl,writer/onManage一個已連接的客戶端對象Publicationname,publisherId,listeners, audioQOS,videoQOSpushAudioPacket(.)pushVideoPacket,pushDataPacket,flush(),close()發(fā)布者Listenerid,audioQOS, receiveAudio等/一

46、個發(fā)布的一個訂閱者ServerAddress, is TargetpublicAddress/描述服務器間連接的一個對象CumulusServer在服務器應用腳本中調(diào)用的事件包括:onStart(path)、onStop(path)、onConnection(client,.)、onDisconnection(client)、onFailed(client,error)、onJoinGroup(client,group)、onUnjoinGroup(client,group)、onPublish(client,publication)、onUnpublish(client,publicatio

47、n)、onVideoPacket(client,publication,time,packet)、onSubscribe(client,listener)、onAudioPacket(client,publication,time,packet)、onManage()、onDataPacket(client,publication,name,packet)、onServerDisconnection(server)、onUnsubscribe(client,listener)、onServerConnection(server)、onHandshake(address,path,propert

48、ies,attempts)3.4.2 openRTMFP的Socket 使用CumulusServer的服務器應用使用LUA機制,可以添加一些需要的特性去擴展它。通常用到LUASocket去添加LUA的套接字,但是這種擴展有3種缺點:1. 所有接受和發(fā)送數(shù)據(jù)的方法默認使用阻塞模式,如果修改,就不能在TCP中正確工作,LUA本質是單線程的,每個腳本處理機管理的結果必須返回給Cumulus。2. LUASocket 在Windows系統(tǒng)上并不會一直出色運行。3. 它無效地重復套接字的跨平臺特性。為了創(chuàng)建一個UDP套接字,需要調(diào)用createUDPSocket(allowBroadcast)方法創(chuàng)建

49、一個socket對象,包含address和peerAddress (連接到這個套接字的點端地址),這里列舉一個簡單的例子來理解這個運用如下:socket = cumulus: createUDPSocket () function socket: onReception (data, address) NOTE ("Reception from " .address) self: send (data, address) end err = socket: bind(":1234") 啟動服務器 if error then ERROR (e

50、rr) end3.5 openRTMFP源碼淺析 Cumulus服務器源碼主要包括兩大部分,CumulusLib和CumulusServer,其中CumulusLib是RTMFP協(xié)議的主體實現(xiàn)部分,里面大量使用到了poco庫相關的thread處理,socket處理,IO線程和work線程池等其它相關工具,因此它基本是服務器本身的一個大概框架。而CumulusServer是使用CumulusLib中的相關類而擴展出去的一個服務器框架,里面的代碼用于支持寫Lua腳本語言開發(fā)服務器應用,以及支持服務器間的負載均衡。CumulusServer部分代碼包含服務器啟動和處理客戶端相關請求的所有方法,并提供

51、lua接口供開發(fā)者搭建自己的服務端應用,利用這些接口能快速寫上層業(yè)務邏輯,也能有效的與下層解耦,不容易出錯。3.5.1 openRTMFP服務器的啟動流程 Cumulus啟動入口在main.cpp文件中,main.cpp定義了CumulusServer類,聲明了程序入口int main(int argc, char* argv)函數(shù);其中具體如下:int main(int argc, char* argv) DetectMemoryLeak();/內(nèi)存泄露return CumulusServer().run(argc, argv)DetectMemoryLeak()方法用來檢查內(nèi)存泄露,目前的

52、項目沒有實現(xiàn)這個功能,是個空函數(shù)。return CumulusServer().run(argc, argv)語句,創(chuàng)建CumulusServer的匿名對象,并調(diào)用run(argc, argv)。CumulusServer類繼承于ServerApplication,而ServerApplication類繼承于Application類。CumulusServer 類的對象調(diào)用 run(argc, argv) 函數(shù),實際是 ServerApplication 的 run() 函數(shù),ServerApplication 的 run() 函數(shù)則是調(diào)用 Application 的函數(shù),而該 run(.)

53、函數(shù)則是先調(diào)用 initialize() 函數(shù),然后調(diào)用 main() 函數(shù),然后調(diào)用 uninitialize() 函數(shù)。如果 initialize() 函數(shù)被調(diào)用時拋出異常,則不會執(zhí)行 main() 函數(shù),但仍然會執(zhí)行 uninitialize() 函數(shù):關于CumulusServer類的相關屬性和方法如下: /構造、析構函數(shù) /顯示幫助信息 /幫助請求 /初始化服務器配置信息 /日志路徑 /CumulusServer的main函數(shù)3-3 CumulusServer類說明CumulusServer在執(zhí)行 main() 函數(shù)之前,會啟動 initialize() 函數(shù)來初始化配置信息,調(diào)用l

54、oadConfiguration(const string& path)裝入配置,path為CumulusServer.ini文件的路徑。CumulusServer在執(zhí)行 自身的main() 函數(shù)的流程如下:1. 查看是否需要幫助信息,調(diào)用displayHelp()函數(shù)實現(xiàn)2. 不需要顯示幫助時進入啟動狀態(tài),先創(chuàng)建RTMFPServerParams對象params,存儲OpenRTMFP/CumulusServer的基本配置port、udpBufferSize等信息3. Server server(*this,config(); server.start(_params);服務器啟動4

55、. waitForTerminationRequest();/等待終止運行的操作請求,然后server.stop();執(zhí)行main()函數(shù)后是uninitialize()反初始化,其中CumulusServer類還包含一些其它函數(shù),如命令行選項設定defineOptions()函數(shù),命令行選項處理函數(shù)handleOption(),處理日志流函數(shù)logHandler(),manageLogFile()處理日志文件大小限制產(chǎn)生的問題等函數(shù)。kill()停止服務器運行,該函數(shù)是ApplicationKiller類的一個純虛函數(shù),繼承ApplicationKiller類的CumulusServer中必須實現(xiàn)。3.5.2 Cumulus服務器主線程分析main.cpp文件中會啟動server,Server類繼承自Cumulus:REMFPServer,而,RTMFP繼承自Cumulus:Startable、Cumulus:Gateway、Cumulus:Handler。而Cumulus:Startable繼承自Poco:Runnable,在CumulusServer中,該線程就是服務器的主進程。main()方法中調(diào)用server.sta

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論