Показать сообщение отдельно
Старый 25.02.2012, 17:52
ashIndie вне форума Посмотреть профиль Отправить личное сообщение для ashIndie Найти все сообщения от ashIndie
  № 1  
Ответить с цитированием
ashIndie

Регистрация: Feb 2012
Сообщений: 68
Attention RTMFP, обьясните по пальцам!

Здравствуйте. Пытаюсь разобраться с p2p соединением посредством RTMFP.
Естественно перед тем как спросить я не один час провел в гугле прежде чем написать на форум.
И так, что собственно сейчас пытаюсь сделать...
Флешка, в которой есть 2 окошка, в одном показывается видео с камеры пользователя, в другом с камеры подключенного пользователя, тоесть такой приватный как бы чат...
Что понял и сделал:
Получил код разработчика на сайте, создал NetConnection, подключился, создал sendStream, тобишь канал по которому собираюсь передавать видео и звук.
Ну и получил peerID. На этом все. Дальше я закопался в примерах и в конец запутался. Поэтому прошу помощи у вас, товарищи...

вот собственно код:
Код AS3:
package  {
 
	public class Main extends MovieClip {
 
		private const CIRRUS_ADDRESS:String = "rtmfp://p2p.rtmfp.net";
		private const DEVELOPER_KEY:String = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxx";			
		private var netConnection:NetConnection;
		private var myPeerID;
		private var farPeerID;
		//streams
		private var sendStream:NetStream;
		private var recvStream:NetStream;
		private var video:Video;
 
		var netGroup:NetGroup;
		private const GROUP:String = "ashIndie";
 
		public function Main() {			
			netConnection = new NetConnection();			
			// Добавляем детектор (listener) для получаения информации о статусе соединения			
			netConnection.addEventListener(NetStatusEvent.NET_STATUS, netConnectionHandler);			
			// Соединяемся со Cirrus 			
			netConnection.connect(CIRRUS_ADDRESS, DEVELOPER_KEY);
		}
 
		function netConnectionHandler(e:NetStatusEvent):void {
			if (e.info.code=="NetConnection.Connect.Success") {
				trace(e.info.code);
				myPeerID = netConnection.nearID;
				initSendStream();
			}
		}
 
		// для отправки потока данных пиру
		private function initSendStream() {
			trace("initSendStream()");
			sendStream = new NetStream(netConnection, NetStream.DIRECT_CONNECTIONS);
			sendStream.addEventListener(NetStatusEvent.NET_STATUS, netStreamHandler);
			sendStream.publish("media");
			sendStream.attachAudio(Microphone.getMicrophone());
			sendStream.attachCamera(Camera.getCamera());
 
			var sendStreamClient:Object = new Object();
			sendStreamClient.onPeerConnect = function(callers:NetStream):Boolean {
				farPeerID = callers.farID;
				trace("onPeerConnect "+farPeerID);
				return true;
			}
			sendStream.client = sendStreamClient;
		}
 
		private function initRecvStream() {
			trace("initRecvStream()");
			trace("myPerrID = ", myPeerID);
			recvStream = new NetStream(netConnection, myPeerID);
			recvStream.addEventListener(NetStatusEvent.NET_STATUS, netStreamHandler);
			recvStream.play("media");
 
			video = new Video(320, 240);
			video.attachNetStream(recvStream);
			addChild(video);
 
			recvStream.client = this;
		}
 
		function netStreamHandler(e:NetStatusEvent):void {
			trace(e.info.code);
			if (e.info.code=="NetStream.Publish.Start") {
				initRecvStream();
			}
		}
 
	}
 
}
для удобства чтения импорты убрал
Прошу помогите, на самом деле срочно нужно сделать...


Последний раз редактировалось ashIndie; 25.02.2012 в 18:00.