1

我有一个内置在 FLEX 中的简单视频/聊天应用程序。我为不同的功能创建了一个 groupSpecifier、netGroup 和一个 NetStream。

NetGroup主要用于消息传递(发布)和跟踪进入的用户。

NetStream是(或将用于)控制一些功能,如同一组下的每个人的“开始视频,停止视频”。

我将在这里发布最重要的功能。第一个是setupGroup。

private function setupGroup():void{
    var groupspec:GroupSpecifier = new GroupSpecifier("vid"+GROUP_ID+"_sid_"+SESSION_ID);
    groupspec.serverChannelEnabled = true;
    groupspec.postingEnabled = true;
    groupspec.multicastEnabled = true;
    groupspec.ipMulticastMemberUpdatesEnabled = true;

    trace("Groupspec: "+groupspec.groupspecWithoutAuthorizations());

    netGroup = new NetGroup(nc,groupspec.groupspecWithoutAuthorizations());
    netGroup.addEventListener(NetStatusEvent.NET_STATUS,netStatus);

    netVideo = new NetStream(nc,groupspec.groupspecWithoutAuthorizations());
    netVideo.addEventListener(NetStatusEvent.NET_STATUS,netStatus);

    user = "user"+Math.round(Math.random()*10000);
}

第二个是sendMessage

private function sendMessage():void{

    var message:Object = new Object();
    message.sender = netGroup.convertPeerIDToGroupAddress(nc.nearID);
    message.user = txtUser.text;
    message.text = txtMessage.text;

    netGroup.post(message);
    receiveMessage(message);

    txtMessage.text = "";
}

然后开始视频

private function startVideo():void{
    netVideo.send("publishVideo");
    ns.togglePause();
}

还有另一个名为“publishVideo”的函数,我希望该组中的其他成员会调用它,但这并没有发生。大部分代码直接来自 Tom 从http://www.flashrealtime.com提供的示例。任何帮助/建议将不胜感激!

ps 由于延迟,我没​​有使用组对象复制。

4

1 回答 1

0

答案很简单。

您需要以以下方式开始视频:

netVideo.publish("channel");

NetStream.send()NetStream.client用于在接收器对象上调用回调方法。

http://www.flashrealtime.com/multicast-explained-flash-101-p2p/

于 2011-06-08T09:36:49.533 回答