Хочу организовать передачу видео через Cirrus так, чтобы при этом во флешке передатчике тоже отображалось видео.
В документации написано что все просто, создаете NetConnection, конектите его, в нем создаете NetStream, аттачите видео к нетСтриму и запускаете нетСтрим на воспроизведение.
Скажем так, пример из документации скомпилить мне удалось, но вот рпи попытке перенести эту ту же логику в свой проект успехом не увенчалась.
Вобщем, расскажу поподробнее чего сделал.
завел отдельный класс для соединений со статическим инициализатором
Код AS3:
public static function init():void
{
netConnection = new NetConnection();
netConnection.addEventListener(NetStatusEvent.NET_STATUS, onStatus);
netConnection.connect("rtmfp://p2p.rtmfp.net", CIRRUS_KEY);
}
создал в нем обаботчик событий
Код AS3:
private static function onStatus(event:NetStatusEvent):void
{
switch(event.info.code)
{
case "NetConnection.Connect.Success":
onConnect();
break;
case "NetStream.Play.StreamNotFound":
trace("Unable to locate video");
break;
}
}
на коннект создаю стрим и группу и отправляю событие на обработку делегату
Код AS3:
private static function onConnect():void
{
var groupSpecifier:GroupSpecifier = new GroupSpecifier(GROUP);
groupSpecifier.multicastEnabled = true;
groupSpecifier.postingEnabled = true;
groupSpecifier.serverChannelEnabled = true;
netStream = new NetStream(netConnection, groupSpecifier.groupspecWithAuthorizations());
netStream.client = new CustomClient();
netStream.addEventListener(NetStatusEvent.NET_STATUS, onStatus);
netGroup = new NetGroup(netConnection, groupSpecifier.groupspecWithAuthorizations());
netGroup.addEventListener(NetStatusEvent.NET_STATUS, onStatus);
delegate.onConnect();
}
делегат собирает у себя объект видео, размещает его в списке отображения и отдает управление обратно объекту клиенту
Код AS3:
var video:Video = new Video();
addChild(video);
Cirrus.playVideo(video, videoURL);
и класс клиент прикрепляет видео к потоку, после чего запускает воспроизведение
Код AS3:
public static function playVideo(video:Video, videoURL:String):void
{
video.attachNetStream(netStream);
netStream.play(videoURL);
}
Ну и вобщем-то СЮРПРИЗ! Ничего не работает. Даже ошибок нет.
Объясните пожалуйста, что я делаю не так, видимо я не въезжаю в логику происходящего. Попутно хотелось бы уточнить, правильно ли я понимаю, что трансляция видео файла будет осуществляться с помощью метода netStream.publish?