• [AS3.0] Error #2044: 未处理的 NetStatusEvent:。 level=error, code=NetStream.Record.NoAcces 解决办法


    突然又需要FMS做视频录制,却遇到一些意想不到的问题,我在想当年做的时候怎么没遇到。。。

    报错:

    Error #2044: 未处理的 NetStatusEvent:。 level=error, code=NetStream.Record.NoAcces

    问题原因:

    查资料发现,居然FMS在默认情况下不允许record文件到服务器,必须要进行设置,在服务器端的应用程序文件夹(默认位置在<FMS_Installation_Dir>/applications/live),在这个文件夹下面有一个main.far,main.far是个压缩文件(可以用winrar解压),解压后里面有两个文件main.asc 和 Application.xml, 打开Application.xml,代码如下:

    <Application>
    
        <SharedObjManager>
                <ClientAccess override="no">false</ClientAccess>
        </SharedObjManager>
    
        <StreamManager>
                <StreamRecord override="no">false</StreamRecord>
        </StreamManager>
    
    </Application>

     默认是SharedObject远程共享对象和StreamRecord录制都不允许。

    修改Application.xml如下:

    <Application>
    
        <SharedObjManager>
                <ClientAccess override="yes">true</ClientAccess>
        </SharedObjManager>
    
        <StreamManager>
                <StreamRecord override="yes">true</StreamRecord>
        </StreamManager>
    
    </Application>

    除此修改之外还要修改main.asc

    打开main.asc,找到以下函数:

    application.onConnect = function( p_client, p_autoSenseBW )
    {
        // Check if pageUrl is from a domain we know.    
        // Check pageurl
    
        // A request from Flash Media Encoder is not checked for authentication
        if( (p_client.agent.indexOf("FME")==-1) && (p_client.agent.indexOf("FMLE")==-1))
        {
    
            // Authenticating HTML file's domain for the request :
            // Don't call validate() when the request is from localhost 
            // or HTML Domains Authentication is off.
            if ((p_client.ip != "127.0.0.1") && application.HTMLDomainsAuth 
                    &&  !this.validate( p_client.pageUrl, this.allowedHTMLDomains ) )
            {
                trace("Authentication failed for pageurl: " + p_client.pageUrl + ", rejecting connection from "+p_client.ip);
                return false;
            }
        
            // Authenticating the SWF file's domain for the request :
            // Don't call validate() when the request is from localhost 
            // or SWF Domains Authentication is off.
            if ((p_client.ip != "127.0.0.1") && application.SWFDomainsAuth 
                    &&  !this.validate( p_client.referrer, this.allowedSWFDomains ) )
            {
                trace("Authentication failed for referrer: " + p_client.referrer + ", rejecting connection from "+p_client.ip);
                return false;
            }
                // Logging
            trace("Accepted a connection from IP:"+ p_client.ip 
                            + ", referrer: "+ p_client.referrer
                            + ", pageurl: "+ p_client.pageUrl);
    
        }else{
            // Logging
            trace("Adobe Flash Media Encoder connected from "+p_client.ip);
        }
        
        // As default, all clients are disabled to access raw audio and video and data bytes in a stream 
        // through the use of BitmapData.draw() and SoundMixer.computeSpectrum()., Please refer
        // Stream Data Access doccumentations to know flash player version requirement to support this restriction
        // Access permissions can be allowed for all by uncommenting the following statements
        
        //p_client.audioSampleAccess = "/";
        //p_client.videoSampleAccess = "/";    
    
        this.acceptConnection(p_client);
            
        // A connection from Flash 8 & 9 FLV Playback component based client 
        // requires the following code.
    
        if (p_autoSenseBW)
            p_client.checkBandwidth();
        else
            p_client.call("onBWDone");
            
    }

    打开以下注释:

        //p_client.audioSampleAccess = "/";
        //p_client.videoSampleAccess = "/";    

    如果想允许SharedObject远程共享对象,可以加上以下代码:

    p_client.writeAccess = "/";

    然后将修改后的文件重新打包mian.far,替换原来的,重启FMS服务器即可。

  • 相关阅读:
    senrty 配置Email
    pip安装使用详解
    C_FORCE_ROOT linux环境变量设置
    Supervisord管理
    解决外部机器通过VM内ubuntu IP 无法访问vm内web服务的问题
    C# 使用Nlog记录日志到数据库 使用LogEventInfo类获取,命名空间名称、类名、方法名
    godaddy.com 注册域名 买卖域名
    vue-15-vuex-store的用法
    vue-14-less 语法的使用
    vue-13-swiper组件的使用
  • 原文地址:https://www.cnblogs.com/frost-yen/p/6241952.html
Copyright © 2020-2023  润新知