




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 本科畢業(yè)設(shè)計(jì)(論文)基于openRTMFP的在線遠(yuǎn)程培訓(xùn)點(diǎn)播系統(tǒng)服務(wù)器控制程序設(shè)計(jì)與實(shí)現(xiàn) 學(xué) 院 軟件學(xué)院 專 業(yè) 軟件工程 學(xué)生姓名 學(xué)生學(xué)號(hào) 指導(dǎo)教師 提交日期 2014 年 06 月 01 日摘 要本文詳細(xì)介紹了基于openRTMFP的P2P視頻點(diǎn)播系統(tǒng)服務(wù)器應(yīng)用相關(guān)原理及該服務(wù)器后臺(tái)控制程序的實(shí)現(xiàn)過程。采用基于openRTMFP的P2P視頻點(diǎn)播系統(tǒng)方案能減少視頻點(diǎn)播時(shí)寬帶消耗,提升傳送速度,以及快速連接恢復(fù)。因此,采用這種方案針對(duì)視頻點(diǎn)播系統(tǒng)的實(shí)現(xiàn)將有利于開發(fā)者快速部署應(yīng)用環(huán)境,降低開發(fā)成本。實(shí)時(shí)流媒體應(yīng)用中能提供優(yōu)秀的的用戶體驗(yàn)。openRTMFP(Cumulus Server)是
2、一個(gè)完全開源和跨平臺(tái)的可擴(kuò)展的RTMFP協(xié)議媒體服務(wù)器,支持P2P點(diǎn)到點(diǎn)服務(wù)、修改Lua腳本創(chuàng)建自己的應(yīng)用程序、實(shí)現(xiàn)實(shí)時(shí)應(yīng)用的高并發(fā)擴(kuò)展及負(fù)載均衡等功能。通過修改腳本創(chuàng)建個(gè)性化的服務(wù)端應(yīng)用程序來擴(kuò)展Cumulus的功能,再創(chuàng)建一個(gè)類似客戶端的應(yīng)用與該服務(wù)端建立連接和數(shù)據(jù)通信。服務(wù)器端控制程序的設(shè)計(jì)與實(shí)現(xiàn)是基于openRTMFP的P2P點(diǎn)播系統(tǒng)的一個(gè)子課題。首先需要熟悉該openRTMFP服務(wù)器框架及運(yùn)行原理,其中包括openRTMFP源程序安裝和編譯,對(duì)POCO庫(kù)、openssl、Lua腳本的學(xué)習(xí)等,修改該服務(wù)器腳本創(chuàng)建自己的應(yīng)用程序來擴(kuò)展Cumulus功能,開發(fā)出的程序界面應(yīng)該簡(jiǎn)潔友好,便于
3、用戶理解和操作。服務(wù)器端控制程序?qū)崿F(xiàn)的主要功能是查看當(dāng)前用戶的連接數(shù)量,流量監(jiān)控,重連,斷開服務(wù)。本文先對(duì)當(dāng)前基于P2P視頻點(diǎn)播系統(tǒng)應(yīng)用設(shè)計(jì)技術(shù)和背景作簡(jiǎn)單介紹,對(duì)本課題用到的開發(fā)工具和任務(wù)安排簡(jiǎn)單說明;接著闡述RTMFP協(xié)議特點(diǎn)、開源openRTMFP項(xiàng)目的開放接口及Lua腳本語(yǔ)言,服務(wù)器編譯安裝說明;然后是支持在線遠(yuǎn)程培訓(xùn)后臺(tái)管理控制程序的設(shè)計(jì)與實(shí)現(xiàn)過程,涉及到需求、程序概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)和程序測(cè)試等。最后總結(jié)與展望對(duì)該項(xiàng)目的學(xué)習(xí)和設(shè)計(jì)過程。關(guān)鍵詞:openRTMFP;RTMFP;P2P;實(shí)時(shí)流媒體;控制程序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課題背景和簡(jiǎn)介 隨著計(jì)算機(jī)網(wǎng)絡(luò)和視頻流媒體技術(shù)的發(fā)展,人們對(duì)互聯(lián)網(wǎng)視頻點(diǎn)播系統(tǒng)的需求與期望更高。傳統(tǒng)的客戶端/服務(wù)器模式的流媒體服務(wù)系統(tǒng)已不可以滿足流媒體對(duì)服務(wù)器性能以及高帶寬的要求,這類視頻應(yīng)用限制了視頻的傳輸速度和清晰度,影響用戶體驗(yàn)。針對(duì)這類問題,采用P2P對(duì)等網(wǎng)絡(luò)技術(shù)實(shí)現(xiàn)的視頻通信應(yīng)用能減低對(duì)服務(wù)器的壓力,降低通信延遲和寬帶開銷。隨著P2P技術(shù)發(fā)展的逐步完善,在視頻點(diǎn)播/在線直播,用戶文件共享,分布式計(jì)算領(lǐng)域得到廣泛應(yīng)用。目前流行的基于P2P的視頻點(diǎn)播系統(tǒng)有:暴風(fēng)
13、影音、在線電視直播PPLive、Flash Player播放器等應(yīng)用?,F(xiàn)有的流媒體協(xié)議包括有RSVP(資源預(yù)留協(xié)議)、RTP(實(shí)時(shí)傳輸協(xié)議)、RTCP(實(shí)時(shí)傳輸控制協(xié)議)、MMS(微軟流媒體服務(wù)協(xié)議)、RTSP(實(shí)時(shí)流傳輸協(xié)議)、MIME(多目因特網(wǎng)電子郵件擴(kuò)展協(xié)議)、RTMP(Adobe實(shí)時(shí)消息協(xié)議)、RTMFP(Adobe實(shí)施消息流協(xié)議即P2P協(xié)議)。Adobe公司的產(chǎn)品Flash Player和Air1.5 率先使用對(duì)等網(wǎng)絡(luò)實(shí)時(shí)流媒體協(xié)議RTMFP,提供媒體服務(wù)端的支持使得可以實(shí)現(xiàn)應(yīng)用層組播和P2P功能。openRTMFP(Cumulus Server)是一個(gè)完全開源和跨平臺(tái)的可擴(kuò)展的R
14、TMFP協(xié)議媒體服務(wù)器腳本,Cumulus Server遵循基于GPL 框架下的優(yōu)勢(shì)、速度、跨平臺(tái)、輕量和高質(zhì)量代碼。支持現(xiàn)場(chǎng)直播和視頻聊天、支持P2P點(diǎn)到點(diǎn)服務(wù)、支持push、RPC、pull切換,并能和服務(wù)器端與所有AMF客戶端通信、支持修改腳本創(chuàng)建自己的應(yīng)用程序來擴(kuò)展Cumulus的功能、負(fù)載均衡等功能。 1.2主要研究工作 本課題運(yùn)用開源的openRTMFP服務(wù)器開發(fā)一個(gè)基于flash的p2p點(diǎn)播系統(tǒng)。采用基于openRTMFP的P2P視頻點(diǎn)播系統(tǒng)方案將能減少視頻點(diǎn)播時(shí)寬帶消耗,提升傳送速度,以及快速連接恢復(fù)。openRTMFP服務(wù)器采用的RTMFP協(xié)議是基于UDP的,在減少延時(shí)和丟包
15、容忍上有很大優(yōu)勢(shì),同時(shí)客戶端數(shù)據(jù)可直接傳送,適合大范圍部署。利用現(xiàn)有的openRTMFP服務(wù)器程序,開發(fā)一個(gè)界面控制,主要功能有:查看當(dāng)前用戶的連接數(shù)量,流量監(jiān)控,重連,斷開服務(wù),主要難點(diǎn):配置安裝openRTMFP服務(wù)器,讀懂該服務(wù)器代碼,了解服務(wù)器工作原理,進(jìn)而進(jìn)行界面開發(fā)。因此設(shè)計(jì)與實(shí)現(xiàn)基于openRTMFP的P2P點(diǎn)播系統(tǒng)服務(wù)器控制程序,對(duì)了解P2P視頻通信應(yīng)用,學(xué)習(xí)配置基于RTMFP協(xié)議的服務(wù)器Cumulus有重要意義。熟悉該服務(wù)器框架并開發(fā)控制程序,監(jiān)控和維護(hù)該視頻點(diǎn)播系統(tǒng)中客戶端和服務(wù)器連接使用情況。 1.3相關(guān)開發(fā)工具與技術(shù)介紹 Microsoft Visual Studio
16、2010開發(fā)工具 Visual Studio是目前最流行的Windows平臺(tái)應(yīng)用程序開發(fā)環(huán)境。Microsoft Visual C+是Microsoft公司推出的開發(fā)Win32環(huán)境程序,面向?qū)ο蟮目梢暬删幊滔到y(tǒng)。它不但具有程序框架自動(dòng)生成、靈活方便的類管理、代碼編寫和界面設(shè)計(jì)集成交互操作、可開發(fā)多種程序等優(yōu)點(diǎn),而且通過簡(jiǎn)單的設(shè)置就可使其生成的程序框架支持?jǐn)?shù)據(jù)庫(kù)接口、OLE2,WinSock網(wǎng)絡(luò)、3D控制界面,支持開發(fā)面向Windows 7的應(yīng)用程序。除了Microsoft SQL Server,它還支持 IBM DB2和Oracle數(shù)據(jù)庫(kù)。目前有專業(yè)版、高級(jí)版、旗艦版、
17、學(xué)習(xí)版和測(cè)試版五個(gè)版本。本項(xiàng)目編譯Cumulus服務(wù)器開源項(xiàng)目使用到的是VS2010的旗艦版。 POCO C+庫(kù) POCO C+庫(kù)是開源的用于簡(jiǎn)化和加速C+開發(fā)面向網(wǎng)絡(luò)、可移植應(yīng)用程序的C+庫(kù)集。包含4個(gè)核心庫(kù)及一些附加庫(kù). 這4個(gè)核心庫(kù)分別是: Foundation, XML, Util 和 Net. 附加庫(kù)中其中2個(gè)是NetSSL和Data,NetSSL為Net庫(kù)中的網(wǎng)絡(luò)類提供SSL支持, Data庫(kù)提供訪問不同SQL數(shù)據(jù)庫(kù)的一致性接口。Foundation庫(kù)包含底層平臺(tái)的封裝層,也包含經(jīng)常使用的工具類和函數(shù)如:數(shù)字和字符處理類,日期時(shí)間處理類,stream類用于寫二進(jìn)制數(shù)據(jù)到流中,多線程
18、的封裝等;XML類庫(kù)支持處理,讀取和寫XML文件;Net庫(kù)包含包含socket類, 支持TCP流和server sockets, UDP sockets, multicast sockets, ICMP 及 raw sockets;Util庫(kù)包含創(chuàng)建命令行和服務(wù)器應(yīng)用框架和管理配置信息。成功編譯openTMFP服務(wù)器需要安裝POCO庫(kù)支持,因?yàn)镃umulus中Cumuluslib是rtmfp主體實(shí)現(xiàn),大量用到poco庫(kù)中socket、thread、IO線程等。 OpenSSL庫(kù)OpenSSL是安全套接字層密碼庫(kù),大致可分為SSL協(xié)議庫(kù),應(yīng)用程序和密碼算法庫(kù)。編譯服務(wù)器時(shí)需要在系統(tǒng)安裝OpenS
19、SL,安裝Perl,配置VC環(huán)境變量,編譯動(dòng)態(tài)鏈接庫(kù)等過程。LuaJIT(lua腳本編譯器)Lua,輕巧的腳本語(yǔ)言,用于嵌入到應(yīng)用程序?yàn)槠涮峁U(kuò)展和定制個(gè)性化功能。在本開源服務(wù)器項(xiàng)目中的CumulusServer其實(shí)是根據(jù)CumulusLib而設(shè)計(jì)的可擴(kuò)展服務(wù)器框架,用來支持lua以及服務(wù)器直接負(fù)載均衡。JavaScriptJavaScript是一種基于對(duì)象和事件驅(qū)動(dòng)并且具有一定的安全性的客戶端腳本語(yǔ)言。它是一種動(dòng)態(tài)、弱類型、基于原型的語(yǔ)言,JavaScript內(nèi)置支持類。一個(gè)完整的 JavaScript 是由以下 3 個(gè)不同部分組成的:核心(ECMAScript)、文檔對(duì)象模型(簡(jiǎn)稱DOM)
20、、瀏覽器對(duì)象模型(簡(jiǎn)稱BOM)。JavaScript的一個(gè)重要功能就是面向?qū)ο蟮墓δ?,通過基于對(duì)象的程序設(shè)計(jì),可以用更直觀、模塊化和可重復(fù)使用的方式進(jìn)行程序開發(fā)。1.4論文內(nèi)容安排 本文主要介紹了openRTMFP服務(wù)器的編譯安裝、實(shí)現(xiàn)對(duì)服務(wù)器應(yīng)用擴(kuò)展以及設(shè)計(jì)實(shí)現(xiàn)支持在線遠(yuǎn)程培訓(xùn)后臺(tái)管理系統(tǒng),并對(duì)該系統(tǒng)進(jìn)行系統(tǒng)測(cè)試。本文主要內(nèi)容分為八章,其組織結(jié)構(gòu)如下:第一章為引言,引言的主要內(nèi)容是對(duì)課題背景意義、研究工作、開發(fā)工具的介紹。說明了在何種背景下完成該項(xiàng)目和本文完成的工作第二章為相關(guān)技術(shù)介紹,是對(duì)課題涉及的P2P、RTMFP協(xié)議、流媒體技術(shù)簡(jiǎn)單分析。熟悉這些技術(shù)有利于如何實(shí)現(xiàn)本文涉及的項(xiàng)目。第三章
21、為openRTMFP服務(wù)器的介紹,主要內(nèi)容為對(duì)openRTMFP源代碼的學(xué)習(xí)分析,了解其架構(gòu)和核心實(shí)現(xiàn),并利用lua腳本實(shí)現(xiàn)服務(wù)器的應(yīng)用擴(kuò)展meeting服務(wù)器應(yīng)用。第四章、第五章、第六章、第七章是對(duì)支持在線遠(yuǎn)程培訓(xùn)后臺(tái)管理系統(tǒng)整個(gè)開發(fā)實(shí)現(xiàn)過程的分析和介紹,包括需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、系統(tǒng)應(yīng)用測(cè)試四個(gè)方面; 最后一章為總結(jié)與展望,對(duì)本文研究的內(nèi)容進(jìn)行總結(jié)以及對(duì)未來的展望。第二章 相關(guān)技術(shù)介紹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課題背景和簡(jiǎn)介IV1.2主要研究工作IV1.3相關(guān)開發(fā)工具與技術(shù)介紹V1.4論文內(nèi)容
30、安排VI第二章 相關(guān)技術(shù)介紹VII2.1 P2PVII介紹VII2.2 RTMFP協(xié)議VIII2.2.1 RTMFP原理VIII2.2.2 RTMFP特點(diǎn)IX2.3 流媒體技術(shù)IX第三章 openRTMFP服務(wù)器X3.1 openRTMFP服務(wù)器介紹X3.2 openRTMFP服務(wù)器編譯及安裝X3.3負(fù)載均衡及可擴(kuò)展性XI3.4 openRTMFP常用的 API和套接字XII3.4.1常用的APIXII3.4.2 openRTMFP的Socket 使用XII3.5 openRTMFP源碼淺析XIII3.5.1 openRTMFP服務(wù)器的啟動(dòng)流程XIII3.5.2 Cumulus服務(wù)器主線程分析
31、XV3.6 CumulusServer服務(wù)器應(yīng)用及簡(jiǎn)單實(shí)例XVI3.6.1 如何創(chuàng)建自定義的服務(wù)器應(yīng)用XVI3.6.2 加載全局配置XVII3.6.3 應(yīng)用間通信XVII3.6.4 自定義服務(wù)器應(yīng)用實(shí)例XVII第四章 系統(tǒng)需求分析XX4.1需求分析的目的和意義XX4.2功能性需求分析XX4.2.1后臺(tái)用戶管理功能需求描述XX4.2.1流量、節(jié)點(diǎn)監(jiān)控功能需求描述XXI4.2.2廣告插播功能需求描述XXII4.2.3視頻控制管理功能XXIII4.2.4自動(dòng)轉(zhuǎn)換格式及碼率功能需求描述XXIV4.3 非功能性需求分析XXIV第五章 系統(tǒng)概要設(shè)計(jì)XXVI5.1系統(tǒng)總體架構(gòu)設(shè)計(jì)XXVI5.2系統(tǒng)后臺(tái)服務(wù)模
32、塊設(shè)計(jì)XXVI5.2.1后臺(tái)用戶管理模塊XXVI5.2.2視頻管理模塊XXVII5.2.3廣告管理模塊XXVII5.2.4系統(tǒng)信息模塊XXVIII5.3后臺(tái)管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)XXVIII第六章 后臺(tái)管理系統(tǒng)實(shí)現(xiàn)XXXI6.1 后臺(tái)用戶管理模塊實(shí)現(xiàn)XXXI6.1.1 后臺(tái)用戶登錄與注銷XXXI6.1.2后臺(tái)管理用戶添加和刪除XXXII6.2 視頻管理模塊實(shí)現(xiàn)XXXIV6.2.1添加視頻功能實(shí)現(xiàn)XXXIV6.2.2刪除視頻功能實(shí)現(xiàn)XXXIV6.3 廣告管理模塊實(shí)現(xiàn)XXXVI6.3.1廣告添加功能XXXVI6.3.2廣告刪除功能XXXVI6.4系統(tǒng)信息(監(jiān)控)模塊實(shí)現(xiàn)XXXVII6.4.1節(jié)點(diǎn)數(shù)量監(jiān)
33、控實(shí)現(xiàn)XXXVII6.4.2服務(wù)器所在系統(tǒng)流量監(jiān)控實(shí)現(xiàn)XXXVII第七章 后臺(tái)管理系統(tǒng)應(yīng)用及測(cè)試XXXIX7.1用戶管理模塊應(yīng)用與測(cè)試XXXIX7.2 視頻管理功能應(yīng)用與測(cè)試XXXIX7.3 廣告管理功能應(yīng)用與測(cè)試XXXIX7.4 系統(tǒng)信息監(jiān)控功能測(cè)試XL7.5 后臺(tái)管理系統(tǒng)應(yīng)用測(cè)試小結(jié)XL第八章 結(jié)論與展望XLI8.1 結(jié)論XLI8.2 展望XLI參考文獻(xiàn)XLII致謝XLIII2.2 RTMFP協(xié)議 2.2.1 RTMFP原理 RTMFP實(shí)時(shí)媒體流協(xié)議(Real-Time- Media Flow Protocol)是 Adobe 公司開發(fā)的一個(gè)專有的通信協(xié)議,通過 C/S 和 P2P 模型能
34、夠在網(wǎng)絡(luò)中高效的傳送多媒體信息如音樂視頻文件等。RTMFP協(xié)議可以讓Adobe Flash Player的所在終端用戶之間實(shí)現(xiàn)直接點(diǎn)對(duì)點(diǎn)等多種通信。RTMFP將直接減少實(shí)時(shí)通信流量帶寬成本,如音頻通話、視頻聊天和多人游戲等應(yīng)用。 RTMFP的工作原理是:首先,客戶連接到基于RTMFP協(xié)議服務(wù)器,如Flash Media Server、openRTMFP(又稱Cumulus),連接成功后獲得唯一的客戶端標(biāo)識(shí)碼ID。然后獲得ID后的客戶端就可以使用UDP協(xié)議發(fā)布數(shù)據(jù)、音頻或者視頻信息。和該客戶端連接在同一個(gè)服務(wù)器上的其他客戶端應(yīng)用可根據(jù)ID接收它已發(fā)布的流信息。當(dāng)然其它客戶端也要事先連接到同一個(gè)服
35、務(wù)器,獲取自己的ID,以及流資源的一些信息,便于訂閱用戶所需要的流資源。RTMFP協(xié)議實(shí)現(xiàn)涉及的技術(shù)支持有:客戶端涉及到組播的實(shí)現(xiàn),每一個(gè)連到服務(wù)器的端應(yīng)用如果相互可見就會(huì)在服務(wù)器端形成一個(gè)組Group。一個(gè)Group同時(shí)保存組內(nèi)個(gè)成員間的路由信息,因此組內(nèi)任何兩節(jié)點(diǎn)間存在直接或間接的通信連接。Flash Player10.1版本后允許實(shí)現(xiàn)應(yīng)用層組播技術(shù),尋找合適分發(fā)路徑,把資源通過P2P方式分發(fā)到相應(yīng)的組。組播通信流是一個(gè)或者多個(gè)發(fā)布者可在group中全體組員發(fā)布組播流信息及數(shù)據(jù)。服務(wù)器端需要支持RTMFP協(xié)議,支持覆蓋網(wǎng)絡(luò),對(duì)象復(fù)制特性,同時(shí)在不同地址的服務(wù)器通過TCP連接實(shí)現(xiàn)共享用戶資源
36、信息等。2.2.2 RTMFP特點(diǎn)因?yàn)镽TMFP之間傳遞數(shù)據(jù)通信是在最終用戶客戶端之間傳遞數(shù)據(jù),而不是客戶端與服務(wù)器之間,服務(wù)器的帶寬不被大量占用,是成本最低的解決方案。RTMFP 使用戶通過麥克風(fēng)和攝像頭能夠直接與其他用戶連接和通信,也可以發(fā)送消息。RTMFP 協(xié)議是基于UDP協(xié)議來實(shí)現(xiàn)數(shù)據(jù)傳送,UDP協(xié)議不可靠但傳送音頻視頻數(shù)據(jù)速度快。終端用戶和終端用戶之間實(shí)時(shí)通信對(duì)實(shí)時(shí)性要求較高,因此可容忍部分丟包、錯(cuò)包的現(xiàn)象存在。RTMFP 協(xié)議有如下這些特點(diǎn),可能有助于減少連接失敗錯(cuò)誤等一下相關(guān)影響。(1)較安全且低時(shí)延:傳輸?shù)臄?shù)據(jù)利用AES加密,終端通信安全。UDP協(xié)議實(shí)時(shí)性降低時(shí)延。(2)快速連
37、接恢復(fù):網(wǎng)絡(luò)連接中斷后能快速恢復(fù)連接。例如,當(dāng)一個(gè)無(wú)線網(wǎng)絡(luò)連接,經(jīng)歷中斷,重新連接成功后即有數(shù)據(jù)傳輸能力。(3)IP 允許變動(dòng):即使客戶端更改到一個(gè)新的 IP 地址,這個(gè)活動(dòng)的網(wǎng)絡(luò)的會(huì)話依然會(huì)保持且在激活狀態(tài)。2.3 流媒體技術(shù)流媒體系統(tǒng)的架構(gòu)主要分四部分:媒體服務(wù)器,播放器,媒體編碼器,文件存儲(chǔ)器。制約流媒體性能服務(wù)的關(guān)鍵因素是對(duì)傳輸質(zhì)量的控制。比如如何支持較多的用戶并發(fā)數(shù),保證端和端之間的QoS(服務(wù)質(zhì)量)。另外多媒體數(shù)據(jù)網(wǎng)絡(luò)傳輸和控制協(xié)議有RTP/RTCP協(xié)議、RSVP協(xié)議、RTSP協(xié)議,RTMP協(xié)議、RTMFP協(xié)議。第三章 openRTMFP服務(wù)器3.1 openRTMFP服務(wù)器介紹o
38、penRTMFP(也稱Cumulus Server)是支持Lunix、Windows、Mac等主流系統(tǒng)的跨平臺(tái),可擴(kuò)展的完全開源服務(wù)器。該服務(wù)器遵循GPL框架下的優(yōu)勢(shì)、跨平臺(tái)、速度、代碼輕量且高質(zhì)量。用戶可以通過Cumulus官網(wǎng)去免費(fèi)下載源代碼并在需要的平臺(tái)上編譯安裝Cumulus Server。它具有點(diǎn)到點(diǎn)P2P服務(wù)、現(xiàn)場(chǎng)音頻視頻直播以及pull/ push/RPC切換支持等特點(diǎn), 支持服務(wù)器之間通信來實(shí)現(xiàn)負(fù)載均衡,而且支持任何AMF終端應(yīng)用和服務(wù)器端進(jìn)行通信,通過修改腳本(主要用Lua腳本語(yǔ)言)來創(chuàng)建應(yīng)用程序、擴(kuò)展Cumulus來實(shí)現(xiàn)更個(gè)性化的功能。3.2 openRTMFP服務(wù)器編譯及
39、安裝編譯安裝Cumulus Server需要OpenSSL密碼庫(kù)、POCO庫(kù)、LuaJIT編譯器等框架的支持,所以安裝前要到、、、 OpenRTMFP/ Cumulus官網(wǎng)下載好需要的庫(kù)以及cumulus源代碼。下載過程注意選擇支持所用操作系統(tǒng)以及編譯工具如(VS2010)的正確版本,以免安裝過程出錯(cuò)。在Windows系統(tǒng),VS2010開發(fā)環(huán)境安裝步驟主要有以下幾個(gè)步驟:1. 安裝POCO C+庫(kù)。命令行下cd進(jìn)入該庫(kù)解壓目錄,分別輸入以下命令編譯:先"%VS100COMNTOOL
40、S%vsvars32.bat" 再buildwin 100 build static_mt both Win32 nosamples devenv 編譯成功后,添加它的包目錄和庫(kù)目錄到CumulusServer_2010.sln工程。2. 安裝和編譯OpenSSL。編譯完成后添加openssl的inc32包目錄和out32dll庫(kù)目錄到CumulusServer_2010.sln工程。3. 安裝和編譯LuaJIT編譯器。命令行下進(jìn)入LuaJIT的src資源目錄,分別輸入 "%VS100COMNTOOLS%vsvars32.bat" 和
41、msvcbuild.bat命令編譯安裝完成后,再添加LuaJIT的src目錄到CumulusServer_2010.sln工程的VC+庫(kù)目錄。4. 至此,openRTMFP的編譯準(zhǔn)備工作完成,然后開始編譯工程,把src包中的lua51.dll復(fù)制到ColumnsServer.exe所在的目錄下。安裝編譯openRTMFP服務(wù)器工作有一定的難度,安裝過程會(huì)發(fā)生各種不同的問題,大部分是由于操作系統(tǒng)動(dòng)態(tài)庫(kù)缺失、編譯工具差異引起。因此發(fā)生問題時(shí)仔細(xì)分析出錯(cuò)問題原因,上網(wǎng)查詢出錯(cuò)原因及解決方法。成功啟動(dòng)openRTMFP后界面顯示如下:圖3-1 openRTMFP編譯成功界面 安裝成功后,在服務(wù)器的可執(zhí)
42、行目錄(即Cumulus.exe的目錄)中默認(rèn)會(huì)生成一個(gè)logs的文件夾,文件夾里面會(huì)生成log.0格式的文件,用windows寫字板打開后可查看服務(wù)器啟動(dòng)時(shí)的時(shí)間、端口等基本信息。還會(huì)生成名字為www的文件夾,里面存放是利用lua腳本語(yǔ)言擴(kuò)展cumulus后開發(fā)的服務(wù)器應(yīng)用。3.3負(fù)載均衡及可擴(kuò)展性 RTMFP是一個(gè)P2P協(xié)議,需要有一個(gè)服務(wù)器端點(diǎn)處理所有客戶端之間的點(diǎn)對(duì)點(diǎn)連接。但基于UDP的特性,RTMFP只有處理如實(shí)時(shí)視頻/音頻流的能力,在經(jīng)典的B/S模式不使用P2P功能 。這種情況下一直使用服務(wù)器負(fù)載,需要中央可用性。當(dāng)然,一臺(tái)機(jī)器總會(huì)有一些硬件上的限制(CPU /內(nèi)存),這時(shí)負(fù)載變得
43、特別重要,一個(gè)CumulusServer實(shí)例將遠(yuǎn)遠(yuǎn)不夠的。為了解決負(fù)荷需求,CumuluServer中的完整框架可使多個(gè)CumulusServer實(shí)例通信,放大計(jì)算和接收能力。它允許配置多個(gè)CumulusServer環(huán)境,提供檢測(cè)服務(wù)器連接和斷開的,服務(wù)器之間的數(shù)據(jù)交換,客戶端與服務(wù)器的重定向來部署系統(tǒng)的負(fù)載均衡,例如在同步客戶端信息和與NetGroup的RTMFP選項(xiàng)。服務(wù)器之間的通信使用原始的TCP方式進(jìn)行。負(fù)載均衡及可擴(kuò)展性體現(xiàn)在如下方面:1. 服務(wù)器應(yīng)用之間交換數(shù)據(jù)和資源。新的服務(wù)器應(yīng)用加入時(shí),分享已有發(fā)布者信息。2. 負(fù)載均衡和會(huì)合服務(wù)??蛻舳诉B接時(shí)接受到多個(gè)服務(wù)器應(yīng)用地址,RTMF
44、P啟動(dòng)多個(gè)并聯(lián)連接嘗試,最先建立連接的服務(wù)器應(yīng)用將會(huì)成功連接到客戶端3.4 openRTMFP常用的 API和套接字本節(jié)介紹一些常用的CumulusServer服務(wù)器應(yīng)用的事件和開發(fā)接口,方便如何建立服務(wù)器應(yīng)用。另外簡(jiǎn)單分析 openRTMFP套接字運(yùn)用。3.4.1常用的API表3-1 常用API說明對(duì)象屬性方法名事件對(duì)象說明CommonnotionsvaluemethodonManage一些共同的聲明CumulusClients, groups,Configs, servers,publicAddresscreateTCPClient(),absolutePath(path)publish(
45、name)/全局對(duì)象,提供對(duì)本身元素的訪問Clientscountpairs(),(id/rawId)/連接服務(wù)器客戶端集合Clientid, rawId, address, flashVersion,path ,pageUrl,writer/onManage一個(gè)已連接的客戶端對(duì)象Publicationname,publisherId,listeners, audioQOS,videoQOSpushAudioPacket(.)pushVideoPacket,pushDataPacket,flush(),close()發(fā)布者Listenerid,audioQOS, receiveAudio等/一
46、個(gè)發(fā)布的一個(gè)訂閱者ServerAddress, is TargetpublicAddress/描述服務(wù)器間連接的一個(gè)對(duì)象CumulusServer在服務(wù)器應(yīng)用腳本中調(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的服務(wù)器應(yīng)用使用LUA機(jī)制,可以添加一些需要的特性去擴(kuò)展它。通常用到LUASocket去添加LUA的套接字,但是這種擴(kuò)展有3種缺點(diǎn):1. 所有接受和發(fā)送數(shù)據(jù)的方法默認(rèn)使用阻塞模式,如果修改,就不能在TCP中正確工作,LUA本質(zhì)是單線程的,每個(gè)腳本處理機(jī)管理的結(jié)果必須返回給Cumulus。2. LUASocket 在Windows系統(tǒng)上并不會(huì)一直出色運(yùn)行。3. 它無(wú)效地重復(fù)套接字的跨平臺(tái)特性。為了創(chuàng)建一個(gè)UDP套接字,需要調(diào)用createUDPSocket(allowBroadcast)方法創(chuàng)建
49、一個(gè)socket對(duì)象,包含address和peerAddress (連接到這個(gè)套接字的點(diǎn)端地址),這里列舉一個(gè)簡(jiǎn)單的例子來理解這個(gè)運(yùn)用如下:socket = cumulus: createUDPSocket () function socket: onReception (data, address) NOTE ("Reception from " .address) self: send (data, address) end err = socket: bind(":1234") 啟動(dòng)服務(wù)器 if error then ERROR (e
50、rr) end3.5 openRTMFP源碼淺析 Cumulus服務(wù)器源碼主要包括兩大部分,CumulusLib和CumulusServer,其中CumulusLib是RTMFP協(xié)議的主體實(shí)現(xiàn)部分,里面大量使用到了poco庫(kù)相關(guān)的thread處理,socket處理,IO線程和work線程池等其它相關(guān)工具,因此它基本是服務(wù)器本身的一個(gè)大概框架。而CumulusServer是使用CumulusLib中的相關(guān)類而擴(kuò)展出去的一個(gè)服務(wù)器框架,里面的代碼用于支持寫Lua腳本語(yǔ)言開發(fā)服務(wù)器應(yīng)用,以及支持服務(wù)器間的負(fù)載均衡。CumulusServer部分代碼包含服務(wù)器啟動(dòng)和處理客戶端相關(guān)請(qǐng)求的所有方法,并提供
51、lua接口供開發(fā)者搭建自己的服務(wù)端應(yīng)用,利用這些接口能快速寫上層業(yè)務(wù)邏輯,也能有效的與下層解耦,不容易出錯(cuò)。3.5.1 openRTMFP服務(wù)器的啟動(dòng)流程 Cumulus啟動(dòng)入口在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àng)目沒有實(shí)現(xiàn)這個(gè)功能,是個(gè)空函數(shù)。return CumulusServer().run(argc, argv)語(yǔ)句,創(chuàng)建CumulusServer的匿名對(duì)象,并調(diào)用run(argc, argv)。CumulusServer類繼承于ServerApplication,而ServerApplication類繼承于Application類。CumulusServer 類的對(duì)象調(diào)用 run(argc, argv) 函數(shù),實(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)用時(shí)拋出異常,則不會(huì)執(zhí)行 main() 函數(shù),但仍然會(huì)執(zhí)行 uninitialize() 函數(shù):關(guān)于CumulusServer類的相關(guān)屬性和方法如下: /構(gòu)造、析構(gòu)函數(shù) /顯示幫助信息 /幫助請(qǐng)求 /初始化服務(wù)器配置信息 /日志路徑 /CumulusServer的main函數(shù)3-3 CumulusServer類說明CumulusServer在執(zhí)行 main() 函數(shù)之前,會(huì)啟動(dòng) initialize() 函數(shù)來初始化配置信息,調(diào)用l
54、oadConfiguration(const string& path)裝入配置,path為CumulusServer.ini文件的路徑。CumulusServer在執(zhí)行 自身的main() 函數(shù)的流程如下:1. 查看是否需要幫助信息,調(diào)用displayHelp()函數(shù)實(shí)現(xiàn)2. 不需要顯示幫助時(shí)進(jìn)入啟動(dòng)狀態(tài),先創(chuàng)建RTMFPServerParams對(duì)象params,存儲(chǔ)OpenRTMFP/CumulusServer的基本配置port、udpBufferSize等信息3. Server server(*this,config(); server.start(_params);服務(wù)器啟動(dòng)4
55、. waitForTerminationRequest();/等待終止運(yùn)行的操作請(qǐng)求,然后server.stop();執(zhí)行main()函數(shù)后是uninitialize()反初始化,其中CumulusServer類還包含一些其它函數(shù),如命令行選項(xiàng)設(shè)定defineOptions()函數(shù),命令行選項(xiàng)處理函數(shù)handleOption(),處理日志流函數(shù)logHandler(),manageLogFile()處理日志文件大小限制產(chǎn)生的問題等函數(shù)。kill()停止服務(wù)器運(yùn)行,該函數(shù)是ApplicationKiller類的一個(gè)純虛函數(shù),繼承ApplicationKiller類的CumulusServer中必須實(shí)現(xiàn)。3.5.2 Cumulus服務(wù)器主線程分析main.cpp文件中會(huì)啟動(dòng)server,Server類繼承自Cumulus:REMFPServer,而,RTMFP繼承自Cumulus:Startable、Cumulus:Gateway、Cumulus:Handler。而Cumulus:Startable繼承自Poco:Runnable,在CumulusServer中,該線程就是服務(wù)器的主進(jìn)程。main()方法中調(diào)用server.sta
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單位住房裝修合同范本
- 家具加工合同范本
- 場(chǎng)地門面出租合同范例二零二五年
- 二零二五漁業(yè)養(yǎng)殖承包合同
- 二零二五版游樂場(chǎng)地租賃合同
- 農(nóng)村灌溉安裝合同范本
- 生日宴慶典合同范本
- 2025年廣東江門中醫(yī)藥職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試歷年(2019-2024年)真題考點(diǎn)試卷含答案解析
- 2025年常州機(jī)電職業(yè)技術(shù)學(xué)院高職單招高職單招英語(yǔ)2016-2024歷年頻考點(diǎn)試題含答案解析
- 2025年常州信息職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)試近5年常考版參考題庫(kù)含答案解析
- 茶葉生產(chǎn)關(guān)鍵影響因素與高產(chǎn)栽培技術(shù)研究
- 施工質(zhì)量獎(jiǎng)懲考核實(shí)施細(xì)則
- 人教版五年級(jí)音樂下冊(cè)(簡(jiǎn)譜)第二單元《阿嘍嘍》教學(xué)設(shè)計(jì)
- 杭州2025年浙江杭州余杭區(qū)余杭街道招聘編外勞務(wù)派遣人員25人筆試歷年參考題庫(kù)附帶答案詳解
- 江蘇省2024年中職職教高考文化統(tǒng)考機(jī)電一體化專業(yè)綜合理論真題試卷
- 2025年入團(tuán)考試練習(xí)試題(100題)附答案
- (二模)溫州市2025屆高三第二次適應(yīng)性考試地理試卷(含答案)
- 河南省安陽(yáng)市滑縣2024-2025學(xué)年九年級(jí)下學(xué)期3月月考英語(yǔ)試題(原卷版+解析版)
- 頸動(dòng)脈斑塊的識(shí)別與處理
- 幼兒園獲獎(jiǎng)公開課:小班語(yǔ)言活動(dòng)《熊寶寶的小芽芽》課件
- 《電子束輻照》課件
評(píng)論
0/150
提交評(píng)論