• FMS之Multi-point publishing技术


    采用该技术,能large-scale你的直播系统,结构如图所示:

    A. Live Video B. Server 1 (New York City)  C. Server 2 (Chicago) and Server 3 (Los Angeles) D. Users

    1.客户端代码:ns.publish("localnews", "live");

    2.LiveVideo代码:

    // Called when the client publishes 
    application.onPublish = function(client, myStream) { 
        trace(myStream.name + " is publishing into application " + application.name); 
        // This is an example of using the multi-point publish feature to republish 
        // streams to another application instance on the local server. 
        if (application.name == "livestreams/_definst_"){ 
            trace("Republishing the stream into livestreams/anotherinstance"); 
            nc = new NetConnection(); 
            nc.connect( "rtmp://localhost/livestreams/anotherinstance" ); 
            ns = new NetStream(nc); 
            // called when the server NetStream object has a status 
            ns.onStatus = function(info) { 
                trace("Stream Status: " + info.code) 
                if (info.code == "NetStream.Publish.Start") { 
                    trace("The stream is now publishing"); 
                }           
            } 
            ns.setBufferTime(2); 
            ns.attach(myStream); 
            ns.publish( myStream.name, "live" ); 
        } 
    }
    ns.onStatus = function(info) { 
        trace("Stream Status: " + info.code) 
        if (info.code == "NetStream.Publish.Start") { 
            trace("The stream is now publishing"); 
        }           
    }
    application.onUnpublish = function( client, myStream ) { 
        trace(myStream.name + " is unpublishing"  ); 
    }

    3.Server1 和 Server2采用正常服务器流程

      需要说明的是,FMS分为FMSS/FMIS/FMES/FMDS,FMSS因为不能配置成edge服务器,不适合提供运营级别的高性能/高分布的视频应用方案FMIS/FMES/FMDS除了都能配置成edge服务器外,还是有些区别的,FMDS是试用版本,有10个连接数的现在,FMES除了具备FMIS功能外,还多了P2P的功能;通过edge服务器,用户连接到的是edge服务器,而不是origin服务器,Edge分为是聚合大量的来自客户端的请求,并发送到源服务器,这样可以将负载的请求连接分布化,保证了流媒体高并发情况下的带宽及系统资源分配合理性,他管理连接,缓存内容,推送数据到客户端,文件缓存在edge端,降低了访问源服务器文件存储的需求量,突破了大规模视频应用的服务器瓶颈

      上述的结构解决了S->C的问题,C->S的问题是需要采用Edge服务器,就要对Edge服务器进行配置,修改<RootInstall>/conf/_defaultRoot_/_defaultVHost_/Vhost.xml中的Mode/Anonymous/CacheDir/LocalAddress/RouteTable/RouteEntry;比如有以下两个服务器:

    Edge服务器为edge1.adobe.com
    Origin服务器为fms.adobe.com

    Client连接Edge服务器就可以采用以下两中方式:

    1).Explicit显式:Anonymous字段为false,直接将edgeURL作为originURL的前缀
    rtmp://edge1.adobe.com/?rtmp://fms.adobe.com/app/instance
    2).Implicit隐式:Anonymous字段为true,修改RouteTable/RouteEntry值为Edge/Origin的IP和Port
    <RouteTable protocol="">
    <RouteEntry>edge1.adobe.com:*;fms.adobe.com:1935</RouteEntry>
    </RouteTable>
    如果是多级就以此类推,比如Edge1->Edge2->Origin,注意哥没写错
    <RouteEntry>edge1.adobe.com:*;edge2.adobe.com:1935</RouteEntry>
    <RouteEntry>edge1.adobe.com:*;fms.adobe.com:1935</RouteEntry>

     
  • 相关阅读:
    2020.1.15考试总结
    P4558 [JSOI2018]机器人 结论&DP
    2020.1.11考试总结
    2020.1.9考试总结
    如何和出题人斗智斗勇?奇技淫巧汇总
    各种公式总结
    2020.1.5考试总结
    C基础学习笔记——01-C基础第10天(内存结构)
    C基础学习笔记——01-C基础第09天(指针下)
    C基础学习笔记——01-C基础第08天(指针上)
  • 原文地址:https://www.cnblogs.com/fuland/p/3685382.html
Copyright © 2020-2023  润新知