Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 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.
Старый 25.02.2012, 17:58
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 2  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
http://labs.adobe.com/technologies/cirrus/samples/
Это превосходный пример на вашу тему. Там всё просто и понятно в исходниках. Сейчас у меня нет возможности поковыряться в вашем случае. И спрячьте ваш developer key. С одной стороны ничего страшного, но и ничего полезного тоже.
__________________
:)

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

Регистрация: Feb 2012
Сообщений: 68
Благодарю вас за пример, но к сожалению я его уже пытался копать и не разобрался.
Ключ разработчика спрятал, спасибо за замечание.
Ну может кто еще поможет....
initRecvStream() запускается, но событий с него не получается никаких....может я до конца не понимаю весь механизм обмена peerID или еще чего...
Нужен просто человек который сможет внятно обьяснить....можно по скайпу или аське, можно тут....
я как бы в as не дуб дубом, но просто с NetConnection как-то не доводилось работать....а тут узнал про него, и открываются такие перспективы если понять как он работает....
А вот этот пример мне нужно срочно сделать....
Спасибо большое всем кто ответит или что посоветует....

Добавлено спустя пару минут:
Рассматриваю вариант использования без netgroup, сначала хотя бы просто понять как обмениваться видеопотоками.
насчет этого я вас потом замучаю, хотя оооочень надеюсь что нет.


Последний раз редактировалось ashIndie; 25.02.2012 в 18:11.
Старый 25.02.2012, 18:13
Silicium вне форума Посмотреть профиль Отправить личное сообщение для Silicium Найти все сообщения от Silicium
  № 4  
Ответить с цитированием
Silicium
 
Аватар для Silicium

Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
http://melnaron.net/development/peer...-chat-in-flash

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

Регистрация: Feb 2012
Сообщений: 68
Silicium, спасибо. Видел эту статью, щас попробую изучить ее более детально. Но там обмен Peer ID идет через php&mySQL, это не совсем подходит, так как именно этот обмен без php хочется реализовать...а сам механизм непонятен.
Ну жду еще помощи.


Последний раз редактировалось ashIndie; 25.02.2012 в 18:19.
Старый 25.02.2012, 18:17
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 6  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
Цитата:
без netgroup
А в чате один на один нетгруп и не нужен совсем. Это практически два разных механизма взаимодействия с нетгреппой и один на один.
__________________
:)

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

Регистрация: Feb 2012
Сообщений: 68
Aquahawk, каким образом тогда они находят друг друга?
правильно ли я указываю видео поток вот таким способом:
Код AS3:
video = new Video(320, 240);
			video.attachNetStream(recvStream);
			addChild(video);
вот этот код мне не понятен, он не срабатывает в принципе:
Код AS3:
var sendStreamClient:Object = new Object();
			sendStreamClient.onPeerConnect = function(callers:NetStream):Boolean {
				farPeerID = callers.farID;
				trace("onPeerConnect "+farPeerID);
				return true;
			}
			sendStream.client = sendStreamClient;
а этот не отправляет события никакие:
Код AS3:
recvStream = new NetStream(netConnection, myPeerID);
			recvStream.addEventListener(NetStatusEvent.NET_STATUS, netStreamHandler);

Старый 25.02.2012, 18:25
Silicium вне форума Посмотреть профиль Отправить личное сообщение для Silicium Найти все сообщения от Silicium
  № 8  
Ответить с цитированием
Silicium
 
Аватар для Silicium

Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
Либо нетгруп, либо свой трекер.

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

Регистрация: Feb 2012
Сообщений: 68
да я не против нетгруп, только не понимаю как это реализуется....

Старый 25.02.2012, 18:33
Silicium вне форума Посмотреть профиль Отправить личное сообщение для Silicium Найти все сообщения от Silicium
  № 10  
Ответить с цитированием
Silicium
 
Аватар для Silicium

Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
Цитата:
да я не против нетгруп
а я против - их использование требует разрешения использовать пиринговые сети.
Так Вы хотите узнать, как реализуется р2р посредством нетгрупп или без, я так и не пойму.

Цитата:
вот этот код мне не понятен, он не срабатывает в принципе:
Он выполняется, когда к Вашему публикующему потоку присоединяются слушаетли

Создать новую тему Ответ Часовой пояс GMT +4, время: 18:04.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
rtmfp

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 18:04.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.