1

为什么连接不上?当我运行应用程序时,我在输出中收到 NetConnection.failed。你能仔细看看我的代码吗?我相信我的字符串 url 是正确的。我不确定我的 FMS 是否已关闭或是否存在代码错误。

谢谢你

import flash.net.NetConnection;
import flash.events.NetStatusEvent;
import flash.net.NetStream;
import flash.media.Camera;
import flash.media.Video;
import flash.media.Microphone;
import fl.controls.Button;

var nc:NetConnection;
var ns:NetStream;
var cam:Camera;
var microphone:Microphone;
var vid:Video;
var connectButton:Button;

//Connecting to Flash Media Server
nc = new NetConnection();

nc.connect("rtmfp:/fms/streamExample");

nc.addEventListener(NetStatusEvent.NET_STATUS, netHandler);

function netHandler(event:NetStatusEvent):void
{
    switch (event.info.code)
    {
        case "NetConnection.Connect.Success":
        {
            connectButton.label = "Disconnect";
            connectButton.enabled = true;
            sendButton.enabled = true;
            onConnect();
            break;
        }

        case "NetConnection.Connect.Closed":
        {
            connectButton.label = "Connect";
            connectButton.enabled = true;
            sendButton.enabled = false;
            nc.close();
            break;
        }

        case "NetConnection.Connect.Failed":
        {
            trace("Sorry your connection failed");
            break;
        }

        case "NetConnection.Connect.Rejected":
        {
            trace("Oops the connection has been rejected");
            break;
        }
    }
}
ns = new NetStream(nc);

ns.publish("live", "viewing");

ns.attachCamera();


//Setting the video
var vid:Video = new Video();
vid.height = cam.height;
vid.width = cam.width;
vid.x = 10;
vid.y = 10;
addChild(vid);

cam = Camera.getCamera();
cam.setMode(400, 300, 20);
cam.setQuality(0, 85);
cam.setKeyFrameInterval(18);
vid.attachCamera();
addChild(cam);

//Setting the audio
microphone = Microphone.getMicrophone();
microphone.codec = SoundCodec.SPEEX;
microphone.framesPerPacket = 1;
microphone.setSilenceLevel(0, 200);
microphone.gain = 50;
NetStream.attachAudio(microphone);
4

1 回答 1

1

如果您的 Flash Media Server 与测试应用程序的计算机位于同一台计算机上,则应将服务器的 URL 更改为rtmfp://localhost/streamExample 如果您的服务器位于另一台计算机上,则只需替换localhost为运行服务器。

NetConnection在执行connect()呼叫之前,您还应该在您的上添加事件侦听器。

为了帮助您了解失败的原因,您可能还需要跟踪事件的描述。

这是一个包含所有这些迹象的样本:

nc = new NetConnection();
nc.addEventListener(NetStatusEvent.NET_STATUS, netHandler);
nc.connect("rtmfp:/localhost/streamExample");

function netHandler(event:NetStatusEvent):void
{
    switch (event.info.code)
    {
        case "NetConnection.Connect.Success":
        {
            connectButton.label = "Disconnect";
            connectButton.enabled = true;
            sendButton.enabled = true;
            onConnect();
            break;
        }
        case "NetConnection.Connect.Closed":
        {
            connectButton.label = "Connect";
            connectButton.enabled = true;
            sendButton.enabled = false;
            nc.close();
            break;
        }
        case "NetConnection.Connect.Failed":
        {
            trace("Sorry your connection failed");
            trace("Reason is: " + event.info.description);
            break;
        }
        case "NetConnection.Connect.Rejected":
        {
            trace("Oops the connection has been rejected");
            break;
        }
    }
}
于 2013-03-20T01:49:12.037 回答