2011-01-29 3 views
2

Я реализует приложение видеоконференции равный-равному в Flex с использованием нового RTMFP протокол и Netgroups ..Как получить имя потока (RTMFP NetGroup Проблема, Flex/AS3)

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

Я слушаю событие NetStatusNetConnection и по телефону "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; 
    } 
} 

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

ответ

1

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*/); 
+0

, конечно, мне нужна опубликованная строка там .. вопрос в том, как получить название потока .. как Я спросил .. –

+0

@ radgar - как вы собираетесь его использовать? – www0z0k

+0

@ radgar - я имею в виду, что 'NetStream' не имеет свойства' name', он использует идентификатор строки для публикации/воспроизведения и имеет 'farID' /' nearNonce', если над rtmfp/rtmpe – www0z0k

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

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

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