![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2012
Сообщений: 68
|
Здравствуйте. Пытаюсь разобраться с p2p соединением посредством RTMFP.
Естественно перед тем как спросить я не один час провел в гугле прежде чем написать на форум. И так, что собственно сейчас пытаюсь сделать... Флешка, в которой есть 2 окошка, в одном показывается видео с камеры пользователя, в другом с камеры подключенного пользователя, тоесть такой приватный как бы чат... Что понял и сделал: Получил код разработчика на сайте, создал NetConnection, подключился, создал sendStream, тобишь канал по которому собираюсь передавать видео и звук. Ну и получил peerID. На этом все. Дальше я закопался в примерах и в конец запутался. Поэтому прошу помощи у вас, товарищи... вот собственно код: 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. |
|
|||||
|
http://labs.adobe.com/technologies/cirrus/samples/
Это превосходный пример на вашу тему. Там всё просто и понятно в исходниках. Сейчас у меня нет возможности поковыряться в вашем случае. И спрячьте ваш developer key. С одной стороны ничего страшного, но и ничего полезного тоже.
__________________
:) |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 68
|
Благодарю вас за пример, но к сожалению я его уже пытался копать и не разобрался.
Ключ разработчика спрятал, спасибо за замечание. Ну может кто еще поможет.... initRecvStream() запускается, но событий с него не получается никаких....может я до конца не понимаю весь механизм обмена peerID или еще чего... Нужен просто человек который сможет внятно обьяснить....можно по скайпу или аське, можно тут.... я как бы в as не дуб дубом, но просто с NetConnection как-то не доводилось работать....а тут узнал про него, и открываются такие перспективы если понять как он работает.... А вот этот пример мне нужно срочно сделать.... Спасибо большое всем кто ответит или что посоветует.... Добавлено спустя пару минут: Рассматриваю вариант использования без netgroup, сначала хотя бы просто понять как обмениваться видеопотоками. насчет этого я вас потом замучаю, хотя оооочень надеюсь что нет. Последний раз редактировалось ashIndie; 25.02.2012 в 18:11. |
|
|||||
|
Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
|
|
|
|||||
|
Регистрация: Feb 2012
Сообщений: 68
|
Silicium, спасибо. Видел эту статью, щас попробую изучить ее более детально. Но там обмен Peer ID идет через php&mySQL, это не совсем подходит, так как именно этот обмен без php хочется реализовать...а сам механизм непонятен.
Ну жду еще помощи. Последний раз редактировалось ashIndie; 25.02.2012 в 18:19. |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 68
|
Aquahawk, каким образом тогда они находят друг друга?
правильно ли я указываю видео поток вот таким способом: вот этот код мне не понятен, он не срабатывает в принципе: var sendStreamClient:Object = new Object(); sendStreamClient.onPeerConnect = function(callers:NetStream):Boolean { farPeerID = callers.farID; trace("onPeerConnect "+farPeerID); return true; } sendStream.client = sendStreamClient; |
|
|||||
|
Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
|
Либо нетгруп, либо свой трекер.
|
|
|||||
|
Регистрация: Feb 2012
Сообщений: 68
|
да я не против нетгруп, только не понимаю как это реализуется....
|
|
|||||
|
Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
|
Цитата:
Так Вы хотите узнать, как реализуется р2р посредством нетгрупп или без, я так и не пойму. Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 18:04. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| rtmfp |
|
|