Как получить имя потока (RTMFP NetGroup Problem, Flex / AS3) - PullRequest
2 голосов
/ 29 января 2011

Я реализую одноранговое приложение для видеоконференций во Flex, используя новый протокол RTMFP и NetGroups ..

Допустим, имягруппа это группа1.То, что я хочу сделать, это;Когда новый узел подключается к Group1;создать новый видеодисплей для каждого присоединяющегося партнера и сразу же воспроизвести его / ее поток.

Я слушаю событие NetStatus NetConnection и "NetStream.Connect.Success";Я хочу добавить нового партнера и воспроизвести его / ее поток.

Но моя проблема заключается в следующем:

Как узнать имя потока, чтобы я мог воспроизвести этот поток для этого присоединяющегося партнера?,NetStream.Connect.Success даст мне только свойство event.info.stream, но я не могу найти имя потока, который будет воспроизводиться для этого конкретного пира.

Вот краткая версия кода:

private function connect():void
{
    var conn:NetConnection = new NetConnection();
    conn.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus);
    conn.connect(rtmfpServer);
}

private function setupGroup():void
{
    var gspec:GroupSpecifier = new GroupSpecifier("Group1");
    gspec.multicastEnabled = true;
    gspec.postingEnabled = true;
    gspec.serverChannelEnabled = true;
    var group:NetGroup = new NetGroup(conn, gspec.groupspecWithAuthorizations());
    group.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus);
}

protected function onNetStatus(e:NetStatusEvent):void
{
    switch (e.info.code)
    {
        case "NetConnection.Connect.Success": //connected to the server
        setupGroup(); //create and connect to the group
        break;

        case "NetGroup.Connect.Success": //connected to the group
        publishMyVideo(); //create a player for my own video and publish it to the group
        break;

        case "NetStream.Connect.Success": //a new stream is connected
        if (NetStream(e.info.stream) != myStream) //if this is not my own stream; it's a new joining peer...
        {
            createPlayerForPeer(); //Create a video player for each joning peer
            playPeersVideo(); //what is the stream name to play?
        }
        break;
    }
}

Любая помощь приветствуется .. спасибо ..

Ответы [ 2 ]

2 голосов
/ 01 июня 2011
     case "NetGroup.MulticastStream.PublishNotify":
          trace(event.info.name)
          break;

     case "NetGroup.MulticastStream.UnpublishNotify":
      trace(event.info.name)
      break;

Вы можете получить имя потока из приведенного выше кода ..... вы опубликуете свой поток с некоторым именем, и это имя появится здесь, я думаю, что при запуске NetStream.Connect.Success эта информация также появляется не уверенно .... ..cheers

1 голос
/ 30 января 2011

streamIn = new NetStream(conn, NetStream(e.info.stream).farID

//...
streamIn.receiveVideo(true);
streamIn.receiveAudio(true); 
streamIn.play(/*here you need to use the string you pass to NetStream.publish() on the other side*/);
...