在多台FMS伺服器之間共用流

在多台FMS伺服器之間共用流

FMS有一個非常重要的功能,那就是可以在多台伺服器之間共用流, 利用這一功能,我們可以把源伺服器上的流分發到其他的伺服器,這些獲得流的伺服器同樣可以作為新的源伺服器使用.這個功能有點象FMS集群.

我們都知道,利用WMP插件可以獲取網上的流媒體位址製作網路電視臺,其實利用Flash和FMS同樣也可以實現.在一台伺服器上採集電視信號,然後將採集的流PUB到IP為127.0.0.1的一個APP(假設是:tvSet)內,假設該流的名稱為”cctv1″, 這樣,連接到該伺服器的FP用戶端可以很輕易地獲取該流.但連接數一多,伺服器可能就會負擔過重,這時就要開始考慮分流.分流的方案至少有兩種,一種是利用代理伺服器,一種就是我們要說的在多台伺服器之間共用流了.那怎樣把流分發下去呢?

這第一台源伺服器不用再做任何事情,它只負責接收和PUB電視信號好了,我們另找一台伺服器,在FMS應用程式的main.asc中寫入以下代碼:

//程式啟動時執行

application.onAppStart = function() {
this.myNC= new NetConnection();
this.myNC.onStatus = NC_onStatus;
this.myNC.connect(“rtmp://第一台源伺服器的位址/tvSet”);
};
function NC_onStatus(info){
switch (info.code) {
case “NetConnection.Connect.Success” :
application.myStream = Stream.get(“cctv1”);
application.myStream.onStatus = NS_onStatus;
if (application.myStream){
application.myStream.play(“cctv1”,-2,-1,false,application.myNC);
}
trace(“連接成功!”);
break;
case “NetConnection.Connect.Failed” :
trace(“連接失敗!”);
break;
case “NetConnection.Connect.Rejected” :
trace(“連接失敗!”);
break;
}
}

function NS_onStatus(info){
trace(info.code);
}

這樣新的伺服器就獲取了與第一台源伺服器同樣的流. 用戶端再連接的時候就不必再連接第一台源伺服器而連接到新的源伺服器上,新的源伺服器可以是一台,也可以是多台,這樣就將第一台源伺服器的負擔降到極小.

 

2、被動式:

FMS3新增了一個非常有用的偵聽事件,那就是application.onPublish,利用這個事件,可以很方便的把剛剛發佈到伺服器上的流再轉發到其他伺服器上,在這個過程中,新的伺服器處於被動接收的狀態。

示例代碼:

application.onPublish = function(client, myStream) {
nc = new NetConnection();
nc.connect(”rtmp://10.0.199.5/multiPointPub”);
ns = new NetStream(nc);
ns.attach(myStream);
ns.publish(myStream.name,”live”);

發佈留言