宜昌本地软件开发与弱电工程服务商
项目咨询 · 快速响应
您当前的位置: > 博客2 > Rtmp技术

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

2016-10-13 00:16:48 点击量:11 标签: 收藏本文

  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);    

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

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

ABOUT US
宜昌农人网络科技有限公司

我们是一家提供综合软件外包与弱电工程服务的技术公司。

业务涵盖定制软件、管理系统、网站、小程序、APP、系统集成、网络布线、监控安防、门禁、机房建设及长期技术维护。

公司地址:湖北省宜昌市伍家岗区东站二路6号三峡(宜昌)大数据产业园海洋馆二楼A203室