Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как узнать длину NSStream аудио ролика? (http://www.flasher.ru/forum/showthread.php?t=151439)

gerasim13 28.02.2011 03:27

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

В браузере мой код почему то работает только после проигрывания аудио файла. Если запустить в флеш плеере, то все ок. Запускать на сервере пробовал, та же беда.
Код AS3:

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 секунды
Код AS3:

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

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


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

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