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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.07.2011, 05:39
Eliont вне форума Посмотреть профиль Отправить личное сообщение для Eliont Найти все сообщения от Eliont
  № 1  
Ответить с цитированием
Eliont

Регистрация: Jun 2011
Сообщений: 8
Question Воспроизвсти 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);
 *	}

Старый 04.07.2011, 16:28
Issildur вне форума Посмотреть профиль Отправить личное сообщение для Issildur Найти все сообщения от Issildur
  № 2  
Ответить с цитированием
Issildur

Регистрация: Oct 2010
Сообщений: 18
попробуй просто добавить в приложение

Код AS3:
<s:VideoDisplay source="rtmp://fmsexamples.adobe.com/vod/mp4:_cs4promo_1000.f4v" autoPlay="true"/>
пропиши любой другой стрим.
если твой играть не будет - проблема в нем

Старый 06.07.2011, 06:45
Eliont вне форума Посмотреть профиль Отправить личное сообщение для Eliont Найти все сообщения от Eliont
  № 3  
Ответить с цитированием
Eliont

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

Старый 06.07.2011, 09:48
_SoWa вне форума Посмотреть профиль Отправить личное сообщение для _SoWa Найти все сообщения от _SoWa
  № 4  
Ответить с цитированием
_SoWa
 
Аватар для _SoWa

Регистрация: Oct 2009
Сообщений: 72
Я код чутка поменял(в целях быстрого разбора полетов).
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);
					}
				}
Код работает, видео играется.


Последний раз редактировалось _SoWa; 06.07.2011 в 09:51.
Старый 11.07.2011, 09:16
Eliont вне форума Посмотреть профиль Отправить личное сообщение для Eliont Найти все сообщения от Eliont
  № 5  
Ответить с цитированием
Eliont

Регистрация: Jun 2011
Сообщений: 8
Большое спасибо, ща проверю, и в новом проекте попробую заменить VideoDisplay на такую связку.

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

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

Теги
flex , rtmp , streaming , video
Опции темы
Опции просмотра

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

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


 


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


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