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

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

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

Регистрация: Oct 2012
Сообщений: 23
По умолчанию Видео-трансляция на сервере nginx-rtmp-module. Через Х времени невозможно подключитьс

Я даже не знаю что и говорить, то есть включаем трансляцию и тут же пытаюсь посмотреть с другого компа - иногда сразу недоступно, иногда через 5-10 минут становится недоступным.
Момент, когда невозможно более подключиться к трансляции назову я момент Х.
Если я включил трансляцию, и уже после наступит момент Х, то я дальше могу смотреть видео, могу нажать стоп-старт, но подключиться по новой к данной трансляции я не смогу с другой вкладки или с другого браузера. Просто серый экран и всё.
Есть ситуация после наступления Х, когда всё же трансляция включается, то есть поток начинает идти в случаях события: "NetStream.Video.DimensionChange", а именно изменение потока, его размеров (или потока).

То есть до наступления Х после события "NetStream.Play.Start" трансляция включается нормально. Чтобы трансляция включилась нормально после момента Х, уже необходимо "DimensionChange", при этом оно возникает если саму трансляцию нажать "стоп-старт".

Так же хочу заметить, что для блока с видео videoWidth и videoHeight равны нулю. Ошибок никаких нет.

Если я включаю трансляцию по следующему коду, то происходит событие: "NetStream.Play.Start" в любом случае, так как трансляция всегда есть, но кадров в экране нет, ничего не отображается. Вот код:

Код AS3:
var SServerAddress2:String = 'rtmp://ip:1935/live';
var NCs2:NetConnection = new NetConnection();
var ns_playback2:NetStream;
var video_playback2:Video = new Video(480, 360);
 
NCs2.objectEncoding = ObjectEncoding.AMF3;
NCs2.addEventListener(NetStatusEvent.NET_STATUS, connectStatusEvent);
NCs2.connect(SServerAddress2);
 
var video_name:String = 'girl_12452_3c7ca074b799382dba05ef20c7db6d6f';
 
function connectStatusEvent(e:NetStatusEvent):void {
                ExternalInterface.call( "console.log",  'ServerStatus: ' + e.info.code);
                switch(e.info.code) {
                        case 'NetConnection.Connect.Success':
                                ns_playback2 = new NetStream(NCs2);
                                ns_playback2.addEventListener(NetStatusEvent.NET_STATUS, statusHandlerNS);
                                ns_playback2.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
                                ns_playback2.play(video_name, -1);
                                video_playback2 = new Video(480, 360);
                                video_playback2.attachNetStream(ns_playback2);
                        break;
                }
}
 
function statusHandlerNS(event:NetStatusEvent):void {
        ExternalInterface.call( "console.log", 'VIDEOSTATUS: ' + event.info.code); // NetStream.Play.Start
        if(event.info.code == 'NetStream.Play.Start') {
                        video_playback2.attachNetStream(ns_playback2);
                        stage.addChild(video_playback2);
                        ExternalInterface.call( "console.log",  'ShowVideo: ' + video_name);
                        ExternalInterface.call( "console.log",  'width: ' + video_playback2.videoWidth + ' and height: ' + video_playback2.videoHeight);
        }
}
 
function asyncErrorHandler(event:AsyncErrorEvent):void { 
        ExternalInterface.call( "console.log", 'VIDEOSTATUS ERROR: ' + event.error);
}
 
function myInt():void {
        ExternalInterface.call( "console.log",  'width: ' + video_playback2.videoWidth + ' and height: ' + video_playback2.videoHeight);
}
 
setInterval(myInt,2000);

Я прям не знаю куда копать и что искать...

Добавлено через 7 минут
Может вообще код кривой, вы так и скажите...

Старый 19.11.2013, 20:39
inpost вне форума Посмотреть профиль Отправить личное сообщение для inpost Найти все сообщения от inpost
  № 2  
Ответить с цитированием
inpost

Регистрация: Oct 2012
Сообщений: 23
Код AS3:
var SServerAddress2:String = 'rtmp://ip:1935/live';
var NCs2:NetConnection = new NetConnection();
var ns_playback2:NetStream;
var video_playback2:Video = new Video(480, 360);
 
NCs2.objectEncoding = ObjectEncoding.AMF3;
NCs2.addEventListener(NetStatusEvent.NET_STATUS, connectStatusEvent);
NCs2.connect(SServerAddress2);
 
var video_name:String = 'girl_12452_3c7ca074b799382dba05ef20c7db6d6f';
 
function connectStatusEvent(e:NetStatusEvent):void {
		ExternalInterface.call( "console.log",  'ServerStatus: ' + e.info.code);
		switch(e.info.code) {
			case 'NetConnection.Connect.Success':
				ns_playback2 = new NetStream(NCs2);
				ns_playback2.addEventListener(NetStatusEvent.NET_STATUS, statusHandlerNS);
				ns_playback2.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
				ns_playback2.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler2);
				ns_playback2.play(video_name);
				video_playback2 = new Video(480, 360);
				video_playback2.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
				video_playback2.attachNetStream(ns_playback2);
			break;
		}
}
 
function ioErrorHandler(event:IOErrorEvent):void {
	ExternalInterface.call("console.log", "ioErrorHandler: " + event);
}
function ioErrorHandler2(event:IOErrorEvent):void {
	ExternalInterface.call("console.log", "ioErrorHandler2: " + event);
}
 
function statusHandlerNS(event:NetStatusEvent):void {
	ExternalInterface.call( "console.log", 'VIDEOSTATUS: ' + event.info.code); // NetStream.Play.Start
	if(event.info.code == 'NetStream.Play.Start') {
			video_playback2.attachNetStream(ns_playback2);
			stage.addChild(video_playback2);
			ExternalInterface.call( "console.log",  'ShowVideo: ' + video_name);
			ExternalInterface.call( "console.log",  'width: ' + video_playback2.videoWidth + ' and height: ' + video_playback2.videoHeight);
	}
}
 
function asyncErrorHandler(event:AsyncErrorEvent):void { 
	ExternalInterface.call( "console.log", 'VIDEOSTATUS ERROR: ' + event.error);
}
 
function myInt():void {
	ExternalInterface.call( "console.log",  'v3: width: ' + video_playback2.videoWidth + ' and height: ' + video_playback2.videoHeight);
}
 
setInterval(myInt,2000);
Добавил, событий ошибок нет, та же ситуация.


Последний раз редактировалось inpost; 21.11.2013 в 08:23.
Создать новую тему Ответ Часовой пояс GMT +4, время: 13:10.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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