Как иметь двустороннее взаимодействие в аудио через сервер red5

Я новичок в разработке Flash. Я пытаюсь создать флэш-память (я сделал это и могу сохранить поток на сервер Red 5), в котором у меня есть возможность опубликовать свой собственный поток микрофона на сервере Red5, а также у меня есть возможность прослушивать уже опубликованный поток. Эту же флэш-память я буду использовать на двух разных машинах. Я опубликую микрофон с обеих машин, дав потокам разные имена. Затем я попытаюсь открыть потоки с противоположных машин, чтобы что у меня может быть двусторонний аудиочат с двух машин.

например, с машины 1 опубликован поток Stream1. с машины 2 опубликован поток Stream2.

The stream played from machine 1 was Stream2.
The stream played from machine 2 was Stream1.

Проблема, с которой я столкнулся, заключается в том, что мне трудно установить двухстороннюю связь. То есть я не могу слышать поток 2 с 1-й машины. Когда я публикую поток со второй машины, мой первый поток отключается и переопределяется вторым потоком. Может ли кто-нибудь дать мне правильное предложение, как исправить это, чтобы получить хорошее двухстороннее соединение или как я могу передавать 2 аудио вместе.


person Vipin Nair    schedule 08.06.2012    source источник


Ответы (1)


Что ж, чтобы иметь приложение для аудиочата, использующее red5 и flex 4.5, вы можете попробовать код ниже. Конечно, он должен быть настроен для вашей цели:

Аудио чат 1

    <mx:Script>
     <![CDATA[
         import mx.controls.Alert;
         
         private var netConnection:NetConnection;
         private var InsertStream:NetStream;
         private var getStream:NetStream;
         private var connectionUrl:String="rtmp://YOURSERVER/vchat";
         
         private function init():void
         {
             netConnection=new NetConnection();
             netConnection.connect(connectionUrl);
             netConnection.addEventListener(NetStatusEvent.NET_STATUS,connectHandler);
         }                                   
         
         private function connectHandler(e:NetStatusEvent):void
         {
          if(e.info.code=="NetConnection.Connect.Success")
          {                                            
            InsertStream=new NetStream(netConnection);
              InsertStream.attachAudio(Microphone.getMicrophone());
              InsertStream.publish("stream1","live");
              getStream=new NetStream(netConnection);
              getStream.attachAudio(Microphone.getMicrophone());
              getStream.play("stream2"); // play the machine 2 stream
          }
          else
          {
              Alert.show("server Problem");
          }                                
  }
 ]]>
 </mx:Script>
 

Машина 2

    <mx:Script>
     <![CDATA[
         import mx.controls.Alert;
         
         private var netConnection:NetConnection;
         private var InsertStream:NetStream;
         private var getStream:NetStream;
         private var connectionUrl:String="rtmp://YOURSERVER/vchat";
         
         private function init():void
         {
             netConnection=new NetConnection();
             netConnection.connect(connectionUrl);
             netConnection.addEventListener(NetStatusEvent.NET_STATUS,connectHandler);
         }                                   
         
         private function connectHandler(e:NetStatusEvent):void
         {
          if(e.info.code=="NetConnection.Connect.Success")
          {                                            
              InsertStream=new NetStream(netConnection);
              InsertStream.attachAudio(Microphone.getMicrophone());
              InsertStream.publish("stream2","live");
              getStream=new NetStream(netConnection);
              getStream.attachAudio(Microphone.getMicrophone());
              getStream.play("stream1"); // play stream from the other machine
          }
          else
          {
              Alert.show("server Problem");
          }                                
  }
 ]]>
 </mx:Script>
person Future2020    schedule 09.06.2012
comment
эй спасибо за ответ, я вчера сам решил проблему, в любом случае большое спасибо за помощь - person Vipin Nair; 11.06.2012
comment
Достигли ли вы самостоятельно, используя аналогичный код, предложенный ответом Future2020? Если вы сможете ответить, это будет большим подспорьем. Спасибо. - person Matical; 23.06.2013