·您当前的位置:首页 > 技术教程 > Rtmp技术 >

[RTMP]多台FMS流媒体服务器之间共享视频流的做法

时间:2013-02-04 09:26hi.baidu.com
FMS有一个非常重要的功能,那就是可以在多台服务器之间共享流.利用这一功能,我们可以把源服务器上的流分发到其它的服务器,这些获得流的服务器同样可以作为新的源服务器使用.这个功能有点象FMS集群

  FMS有一个非常重要的功能,那就是可以在多台服务器之间共享流.利用这一功能,我们可以把源服务器上的流分发到其它的服务器,这些获得流的服务器同样可以作为新的源服务器使用.这个功能有点象FMS集群.我们都知道,利用WMP插件可以获取网上的流媒体地址制作网络电视台,其实利用Flash和FMS同样也可以实现.

  在一台服务器上采集电视信号,然后将采集的流PUB到IP为127.0.0.1的一个APP(假设是:tvSet)内,假设该流的名称为"cctv1",

  这样,连接到该服务器的FP客户端可以很轻易地获取该流.但连接数一多,服务器可能就会负担过重,这时就要开始考虑分流.

  分流的方案至少有两种,一种是利用代理服务器,一种就是我们要说的在多台服务器之间共享流了.

  那怎样把流分发下去呢?

  这第一台源服务器不用再做任何事情,它只负责接收和PUB电视信号好了,我们另找一台服务器,在FMS应用程序的main.asc中写入以下代码:

  1. //程序启动时执行 
  2. application.onAppStart = function() { 
  3. this.myNCnew NetConnection();   
  4. this.myNC.onStatus = NC_onStatus
  5. this.myNC.connect("rtmp://cuplayer.com/tvSet"); 
  6. }; 
  7.  
  8. function NC_onStatus(info){    
  9.      switch (info.code) { 
  10.    case "NetConnection.Connect.Success" : 
  11.       application.myStream = Stream.get("cctv1"); 
  12.     application.myStream.onStatus = NS_onStatus
  13.     if (application.myStream){ 
  14.      application.myStream.play("cctv1",-2, -1,false,application.myNC); 
  15.     } 
  16.       trace("CuPlayer.com提示:连接成功!");    
  17.     break; 
  18.    case "NetConnection.Connect.Failed" : 
  19.     trace("CuPlayer.com提示:连接失败!"); 
  20.     break; 
  21.    case "NetConnection.Connect.Rejected" : 
  22.     trace("CuPlayer.com提示:连接失败!"); 
  23.     break; 
  24. function NS_onStatus(info){   
  25.    trace(info.code);    

  这样新的服务器就获取了与第一台源服务器同样的流.

  客户端再连接的时候就不必再连接第一台源服务器而连接到新的源服务器上,新的源服务器可以是一台,也可以是多台,这样就将第一台源服务器的负担降到极小.

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器