OMCS開發手冊(03) -- 多媒體服務器


      前面我們已經詳細介紹了基於OMCS開發網絡多媒體應用的客戶端程序所必需掌握的內容,現在我們來看一下OMCS服務端的開發。對於使用者而言,OMCS的服務端就非常簡單了,只要實現一個用戶驗證的接口,掛接到OMCS框架上,就可以了。OMCS多媒體服務器的主要職責有:

(1)統一管理多媒體設備的某些公共配置參數。

(2)管理所有在線的OMCS客戶端。

(3)協助OMCS客戶端之間建立P2P通道。

(4)在OMCS客戶端之間轉發信息。

 一.MultimediaServer類

      OMCS服務端的核心類是OMCS.Server.MultimediaServer,它將OMCS多媒體服務端的各個組件裝配起來,構成一個整體運行。在二次開發時,我們只要正確地實例化MultimediaServer,然后將其宿留任何形式的應用程序中(像WinForm、Windows服務、甚至控制台程序等)即可。所以,作為OMCS使用者,我們只需要關心它的構造函數:

 public MultimediaServer(int port, IUserVerifier userVerifier, OMCSConfiguration config, bool securityLogEnabled, string platformServerIPE)

      port 參數用於指定當前OMCS服務器通過哪個端口提供服務(使用TCP協議)。

      userVerifier 用於驗證登錄的客戶端的帳號密碼。如果客戶端提交的帳號密碼不正確,多媒體設備管理器IMultimediaManager的Initialize方法將拋出異常。OMCS服務端開發唯一需要做的就是實現這個接口。

      securityLogEnabled 參數用於指定是否記錄安全日志,一般在調試程序的時候,將其設為true,而正式發布運行時,將其設為false。

      platformServerIPE 用於設定OMCS群集平台服務器的地址,在非群集的OMCS系統中,我們可以先忽略它,直接傳入null。

      MultimediaServer類的構造函數中最關鍵的參數是OMCSConfiguration,我們將在下面詳細討論。

二.OMCS多媒體服務器配置參數

      OMCSConfiguration是多媒體服務器的最關鍵配置,其類圖如下所示:        

     

(1)音頻:WaveSampleRate 用於設定麥克風的采樣率(8k/16K/32K),默認值我為16000。AudioEncodingQuality 用於設定音頻數據的編碼質量(Low/Middle/High),默認值為High。

(2)視頻:CameraFramerate 用於設定攝像頭的采集幀頻(1~25),默認值為5。

(3)遠程桌面:DesktopFramerate 用於設定遠程桌面的采集幀頻(1~25),默認值為5。

(4)電子白板:WhiteboardWidth和WhiteboardHeight用於設定電子白板的尺寸(比如800*600,具體取值需要綜合考慮所有guest的屏幕大小)。

       電子白板的尺寸用於限制其可操作區域,超出區域之外的地方,是不能進行繪圖操作的。

(5)SystemToken 用於區分不同的基於OMCS開發的系統,並隔離它們。

       OMCS的客戶端也能設置SystemToken,如果客戶端與服務端的SystemToken的值不一致,則客戶端就無法成功登錄到OMCS服務端。

      OMCSConfiguration 對四種多媒體設備都有對應的參數設置,在客戶端的多媒體設備管理器初始化之前,多媒體管理器會先從服務器獲取OMCSConfiguration對象,然后再根據其設定的值初始化本地的各個多媒體設備。       

三.默認的多媒體服務器

      如果不需要用戶驗證,可以直接使用OMCS提供的默認的多媒體服務器OMCS.Server.exe(文末將提供其可執行程序和源碼的下載):

(1)使用IUserVerifier接口的默認實現類DefaultUserVerifier,其VerifyUser方法始終返回true。

(2)SystemToken的值為""。

       如果需要驗證用戶帳號密碼,或設定SystemToken,則可以將源碼修改一下,實現IUserVerifier接口,並替換DefaultUserVerifier,然后重新發布。

(3)OMCSConfiguration其它項的設置可以在配置文件OMCS.Server.exe.config中進行修改。 

<configuration>
  <appSettings>
    
    <!--服務器監聽的端口-->
    <add key="Port" value="9900"/>
    <!--主窗體上是否顯示用戶列表。對於高並發應用,建議關閉該顯示-->
    <add key="ShowUserList" value="true"/>
    <!--是否記錄安全日志文件 Omcs.txt-->
    <add key="SecurityLogEnabled" value="false"/>    
    <!--UserID的最大長度-->
    <add key="MaxLengthOfUserID" value="11"/>
    
    <!--攝像頭采集視頻的幀率-->
    <add key="CameraFramerate" value="6"/>   
    <!--音頻編碼質量,Low/Middle/High。-->
    <add key="AudioQuality" value="High"/>
    <!--音頻采樣率,8000,16000,32000。-->
    <add key="WaveSampleRate" value="16000"/>    
    <!--桌面幀率-->
    <add key="DesktopFramerate" value="1"/>  
    <!--白板寬度-->
    <add key="WhiteboardWidth" value="800"/>
    <!--白板高度-->
    <add key="WhiteboardHeight" value="600"/>  
      
  </appSettings>
</configuration>

       配置文件中除了可以設置OMCSConfiguration相關項外,還有其它幾個設置項:

(1)Port 用於指定當前OMCS服務器通過哪個TCP端口提供服務。【將被傳入MultimediaServer類的構造函數】

(2)ShowUserList 用於控制采用默認的UI主界面時,是否顯示在線用戶列表。

       一般,只有在調試和測試階段,我們才會開啟顯示用戶列表。因為,當在線用戶數很多時,窗體實時刷新每個用戶的狀態數據,其消耗CPU是不可忽視的。 

(3)SecurityLogEnabled 用於指定是否記錄安全日志。【將被傳入MultimediaServer類的構造函數】

(4)MaxLengthOfUserID 用於設定客戶端登錄帳號的最大長度,默認值為11,如果所需長度大於這個值,必需重新設定。

       而且,客戶端的設定必須同服務器一致,OMCS客戶端可以通過調用GlobalUtil類的靜態方法SetMaxLengthOfUserID來設定該值。

 

      默認的OMCS.Server.exe以WinForm的形式宿留了MultimediaServer對象。其運行起來后,如下圖所示:

     

      界面上顯示了所有在線的用戶列表,以及服務器相關的狀態信息。

      注意:OMCS多媒體服務器使用了兩個端口,一個是通過MultimediaServer的構造參數指定的TCP端口,另一個是自動綁定的UDP端口(默認為TCP端口號加1)。

      UDP端口是OMCS多媒體服務器內部集成的P2P服務器所使用的,用於協助客戶端之間創建P2P通道。

      OMCS.Server.exe有對應的配置文件OMCS.Server.exe.config,我們可以通過修改該配置文件來設定一些參數信息。       

四.下載

      OMCS多媒體服務器(帶源碼) 

      就基於OMCS進行二次開發而言,在我們掌握了概述、多媒體設備管理器、多媒體連接器、多媒體服務器這些內容后,就已經足夠了。后面我們會介紹使用OMCS的更多技巧,以及給出更多的demo來演示如何基於OMCS開發網絡多媒體應用系統。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM