PDA

Просмотр полной версии : Как узнать длину NSStream аудио ролика?


gerasim13
28.02.2011, 03:27
Здравствуйте! У меня есть две проблемы с NSStream.
Во первых мне необходимо узнать длину аудио ролика который проигрывается с помощью nsstream

В браузере мой код почему то работает только после проигрывания аудио файла. Если запустить в флеш плеере, то все ок. Запускать на сервере пробовал, та же беда.
audioObj.client.onMetaData = function(infoObject:Object)
{
audioObjLength = infoObject["duration"];
};

Как достать длительность файла перед проигрыванием?

Вторая проблема состоит в том что аудио ролик повторно не проигрывается если подождать примерно 1-2 минуты после проигрывания. С чем это может быть связанно?
Я использую Stimuli Bulk Loader для загрузки аудио. Кнопку проигрывания показываю только после полной загрузки ролика. Возможно ли что NSStream "теряет" данные???

in4core
28.02.2011, 03:38
Вы форумом ошиблись вам в АС2

gerasim13
28.02.2011, 03:44
нет, ошиблись вы.

Добавлено через 32 секунды
private function onAllLoaded(evt:Event):void
{
iswearAudio = loader.getNetStream(audioFile);
iswearAudio.addEventListener(NetStatusEvent.NET_STATUS,audioSwitch);
iswearAudio.client.onMetaData = function(infoObject:Object)
{
iswearAudioLength = infoObject["duration"];
};
TweenLite.to(iswearLoading,0.4,{blurFilter:{blurY:10,blurX:5},y:iswearLoading.y - 10,alpha:0,ease:Circ.easeOut,onComplete:function(){removeChild(iswearLoading);onAudioLoaded();}});
}

gerasim13
04.03.2011, 07:06
Неужели никто не работал с netstream? Наверняка есть способ узнать длительность файла если не срабатывает onMetaData

cleptoman
04.03.2011, 09:54
вообще по опыту в метаДате много чего не бывает, но не встречал метаДату без длины(хотя, не исключаю, что может быть и такой вариант).

1 - не вижу где назначился клиент потоку
2 - попробуйте итератором просмотреть вообще все, что отдается в метадате.

gerasim13
08.03.2011, 03:02
Спасибо. Разобрался.

Есть еще одна проблема связанная с очисткой буфера.
Могу ли я запретить выполнение NetStream.Buffer.Flush ?
Если нет, то как лучше сделать так что бы ролик повторно проигрывался?

wvxvw
08.03.2011, 10:29
Нет, не можете запретить, а даже если бы и могли - то зачем? Это вам дают сообщеение о том, что содержимое буфера отдали проигрываться, и теперь буфер пустой, ну вы можете отказаться от получения этого сообщения - и что?
Что касается длины аудио или видео или чего бы то ни было загружаемого из потока - вы никогда не можете знать наперед, на то и поток! Вы можете записать в метаданные, что поток прекратится через Х байт, а можете рассчитать неправильно, например. Кроме того поток вообще не обязан иметь предел и может продолжаться до бесконечности - как вы такое опишите? Другое дело если вам нужно загрузить файл, у файла всегда оговорен размер.