Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Видео-трансляция на сервере nginx-rtmp-module. Через Х времени невозможно подключитьс (http://www.flasher.ru/forum/showthread.php?t=205122)

inpost 19.11.2013 18:55

Видео-трансляция на сервере 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 минут
Может вообще код кривой, вы так и скажите... :(

inpost 19.11.2013 20:39

Код 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);

Добавил, событий ошибок нет, та же ситуация.


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

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