PDA

Просмотр полной версии : NetStream (live) как проверить, есть ли видео?


inpost
01.04.2013, 19:26
Всем привет. В прошлый раз помогли, хотя и спрашивал уже давно! Но всё равно спасибо. Надеюсь, что выручите меня снова.
Видео-трансляция идёт rtmp. Вот код:

ns_playback2 = new NetStream(NCs2);
ns_playback2.addEventListener(NetStatusEvent.NET_STATUS, statusHandlerNS);
ns_playback2.play(userInfo2.enemy_sex2 + userInfo2.enemy_id2, -1);
ExternalInterface.call( "console.log" , "VIDEO LOADER: " + userInfo2.enemy_sex2 + userInfo2.enemy_id2);

video_playback2 = new Video(480, 360);
video_playback2.attachNetStream(ns_playback2);

function statusHandlerNS(event:NetStatusEvent):void {
ExternalInterface.call("console.log" , 'VIDEOSTATUS ' + event.info.code);
}

Получается следующее, если человек не запускал трансляцию вовсе, то play не происходит, то есть NET_STATUS не меняется, и можно отследить, есть ли трансляция сейчас или нет.
А вот если только недавно была запущена, а потом произошел обрыв соединения или браузер повис или по другой причине трансляция не идет, то play всё равно срабатывает. При этом video_playback2 - выводит пустой черный экран.

Вопрос следующий: как мне проверить, есть ли видео-поток сейчас прежде, чем его выводить на экран?
Если не грамотно спросил, то уточните детали...

GBee
01.04.2013, 19:40
Там, кажется, событий несколько, да еще и с разными подробностями.

Добавлено через 1 минуту
http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/events/NetStatusEvent.html#info

inpost
01.04.2013, 23:28
addEventListener(NetStatusEvent.NET_STATUS)
То есть указать другое событие надо тут? Вместо NET_STATUS, NET_ERROR ?

Просто я вижу:
"NetStream.Publish.Idle" status Сервер публикации потока свободен и не передает данных.

Но в логи попадает только 2 вещи:
reset (старый стрим сбросился) и start() - новый начал вещание. Но вещание пустое!

viclight
02.04.2013, 00:17
Какой медиасервер? У меня такие проблемы были только с ерливидео.
Если ерливидео, попробуйте в конфиге прописать следующее
{rtmp_default_wait, false}
В этом случае, если попытка проиграть не существующий поток будет возращатся статус, что потока не существует, точно не помню. Правда почемуто не всегда.

inpost
02.04.2013, 04:20
У меня crtmp .
Дело в том, что абсолютно не существующего не проигрывается. Только те, которые не вручную были остановлены, а именно оборваны повисанием браузера или разрывом соединения.

Добавлено через 38 часов 0 минут
Народ, может есть способ проверить объем передаваемых байт? То есть чёрный экран, явно ничего не передаётся, а висит как мертвый стрим?
До сих пор нет решения...
ns_playback2.addEventListener(NetStatusEvent.NET_STATUS, statusHandlerNS);
В Логи идут только 2 основных команды: reset, play() в случаях если есть стрим и в случаях, если он уже умер минут 10-15 назад...