Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Воспроизвсти rtmp через Vidеo\NetConnection\NetStream (http://www.flasher.ru/forum/showthread.php?t=159615)

Eliont 03.07.2011 05:39

Воспроизвсти rtmp через Vidеo\NetConnection\NetStream
 
Здравствуйте.
Помогите пожалуйста. Нашёл тут рецептик, с http/flv работает, но с rtmp/f4v упорно не хочет, хотя в доках написано что он и его должен проигрывать.

Похоже, не происходит событие, вызывающее onNetStatus(), хотя с flv всё работает.
connect() происходит - в label выводится адрес, но дальше дело не идёт...

Где тут косяк?

Код:

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
 * * *xmlns:s="library://ns.adobe.com/flex/spark"
 * * *xmlns:mx="library://ns.adobe.com/flex/mx"
 * * *applicationComplete="connect()"
 * * *backgroundAlpha="0.0" contentBackgroundAlpha="0.0"
 * * *creationComplete="init()">
       
        <fx:Script>
 *<![CDATA[
 *        import mx.utils.ObjectUtil;
 *       
 *        [Bindable] private var nc:NetConnection;
 *        private var ns:NetStream;
 *        private var video:Video;
 *        private var meta:Object;
 *        private var nsClient:Object = {};
 *       
 *        private function init():void {
 * *nsClient.onMetaData = ns_onMetaData;
 * *nsClient.onCuePoint = ns_onCuePoint;
 *        }
 *       
 *        private function connect():void {
 * *nc = new NetConnection();
 * *nc.addEventListener(NetStatusEvent.NET_STATUS,onNetStatus);
 * *nc.connect("rtmp://fmsexamples.adobe.com/vod/mp4:_cs4promo_1000.f4v");
 * *lb.text = nc.uri;
 *        }
 *
 *        private function onNetStatus():void { *       
 * *lb.text = nc.uri;
 * *
 * *ns = new NetStream(nc)
 * *ns.client = nsClient;       
 * *
 * *video = new Video();
 * *video.attachNetStream(ns);
 * *uic.addChild(video);
 * *ns.play(nc);
 *        }


Issildur 04.07.2011 16:28

попробуй просто добавить в приложение

Код AS3:

<s:VideoDisplay source="rtmp://fmsexamples.adobe.com/vod/mp4:_cs4promo_1000.f4v" autoPlay="true"/>

пропиши любой другой стрим.
если твой играть не будет - проблема в нем

Eliont 06.07.2011 06:45

Дело в том что видео дисплэй как раз играет.
Но он имеет свой внутренний стрим. до которого нельзя добраться чтобы снимать информациюо количестве скачанных байт в единицу времени.

_SoWa 06.07.2011 09:48

Я код чутка поменял(в целях быстрого разбора полетов).
1. NetConnection обычно соединяется с такой структурой: адрес/приложение/инстанс. Т.е. на мой взгляд, коннект сюда -> rtmp://fmsexamples.adobe.com/vod/mp4:_cs4promo_1000.f4v неверен.
2. NetStream`y желательно скармливать название того потока, который нужно играть.

Код AS3:

private var nc:NetConnection;
                                private var ns:NetStream;
                                private var video:Video;
                                private var meta:Object;
                                private var nsClient:Object = {};
 
 
 
                                private function connect():void
                                {
                                        nsClient.onBWDone = function():void        {trace("BWDone");}
                                        nsClient.onMetaData = function():void {trace("onMetaData");}
                                        nsClient.onCuePoint = function():void {trace("onCuePoint");}
 
                                        nc = new NetConnection();
                                        nc.client = nsClient;
                                        nc.addEventListener(NetStatusEvent.NET_STATUS,onNetStatus);
                                        nc.connect("rtmp://fmsexamples.adobe.com/vod/");
                                }
 
                                private function onNetStatus(event:NetStatusEvent):void
                                {       
                                        if (event.info.code == "NetConnection.Connect.Success")
                                        {
                                                ns = new NetStream(nc);
                                                ns.client = nsClient;
                                                ns.play("mp4:_cs4promo_1000.f4v");
 
                                                video = new Video();
                                                video.attachNetStream(ns);
                                                uic.addChild(video);
                                        }
                                }

Код работает, видео играется.

Eliont 11.07.2011 09:16

Большое спасибо, ща проверю, и в новом проекте попробую заменить VideoDisplay на такую связку.

Добавлено через 30 часов 44 минуты
Блин, работать то работает, но свойства ns.bytesLoaded и ns.bytesTotal, а также значения буферов по нулям. А мне байты нужны что измерить скорость входящего видеопотока.


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

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