Flash stream player equalizer

17 views
Skip to first unread message

gse...@gmail.com

unread,
Jul 3, 2009, 3:34:44 AM7/3/09
to Russian Adobe Flash Platform User Group
Так уж сложилось, что пришлось заняться actionscript 3.0 во флэше. А
именно проигрыванием потока (44 kHz 96kbps) со стороннего сайта (порт
8000)
И по окончании осталось не решёнными 2 вопроса:
почему-то не удаётся из превью в браузере получить reader.getSpectrum
(); В то время, как просто в превью (fla) всё проходит нормально. Как
я понял проблема в получении прав. Засунул повсюду файл
crossdomain.xml (на сайт где находится flash и сайт с которого идёт
поток)
<cross-domain-policy>
<allow-access-from domain="*"/>
</cross-domain-policy>
но результата не дало. То есть поток проигрывается, но эквалайзер
http://www.everydayflash.com/blog/index.php/2008/03/26/classic-sound-equalizer-in-flashas3/
отказывается работать.

И вторая проблема - поток при воспроизведении начинает играть с разным
темпом. То слишком медленно, то нормально, иногда быстрее обычного, с
последующими прерываниями

Уважаемое сообщество, если поможете хотя бы в чём-то буду признателен.

zall...@gmail.com

unread,
Jul 15, 2009, 9:43:04 AM7/15/09
to Russian Adobe Flash Platform User Group
может надо засетать пропертю checkPolicyFile = true перед загрузкой
файла; Мне это помогло с картинками, с аудио наверно так же.

On 3 июл, 11:34, "gse...@gmail.com" <gse...@gmail.com> wrote:
> Так уж сложилось, что пришлось заняться actionscript 3.0 во флэше. А
> именно проигрыванием потока (44 kHz 96kbps) со стороннего сайта (порт
> 8000)
> И по окончании осталось не решёнными 2 вопроса:
> почему-то не удаётся из превью в браузере получить reader.getSpectrum
> (); В то время, как просто в превью (fla) всё проходит нормально. Как
> я понял проблема в получении прав. Засунул повсюду файл
> crossdomain.xml (на сайт где находится flash и сайт с которого идёт
> поток)
> <cross-domain-policy>
>   <allow-access-from domain="*"/>
> </cross-domain-policy>

> но результата не дало. То есть поток проигрывается, но эквалайзерhttp://www.everydayflash.com/blog/index.php/2008/03/26/classic-sound-...

Татьяна Белая

unread,
Jul 15, 2009, 9:59:05 AM7/15/09
to fp...@googlegroups.com
не поможет.




--
White [0xFFFFFF.ru]

tocr...@gmail.com

unread,
Jul 16, 2009, 5:25:31 AM7/16/09
to fp...@googlegroups.com

дело в том что нужны права на все звуки всех флешек загруженных в браузер(ы) плюс если есть редиректы нужно грузить crossdomain.xml ручками Security.loadPolicyFile()!

Татьяна Белая

unread,
Jul 16, 2009, 5:27:37 AM7/16/09
to fp...@googlegroups.com
для этого нужно чтобы на каждом (вообще на каждом) сайте был кроссдомейн разрешающий обработку звука. такого нет и никогда не будет.

2009/7/16 <tocr...@gmail.com>



--
White [0xFFFFFF.ru]

tocr...@gmail.com

unread,
Jul 16, 2009, 5:35:07 AM7/16/09
to fp...@googlegroups.com
Отож Улыбка смайлик если нужно построить "Spectrum" для конкретного саунда можно пользовать фичу fp10 Sound.extract();
 и ручками разлаживать в ряды
var sourceSnd:Sound = new Sound();
var outputSnd:Sound = new Sound();
var urlReq:URLRequest = new URLRequest("test.mp3");

sourceSnd.load(urlReq);
sourceSnd.addEventListener(Event.COMPLETE, loaded);

function loaded(event:Event):void
{
    outputSnd.addEventListener(Event.SAMPLE_DATA, processSound);
    outputSnd.play();
}

function processSound(event:SampleDataEvent):void
{
    var bytes:ByteArray = new ByteArray();
    sourceSnd.extract(bytes, 4096);
    event.data.writeBytes(upOctave(bytes));
}

function upOctave(bytes:ByteArray):ByteArray
{
    var returnBytes:ByteArray = new ByteArray();
    bytes.position = 0;
    while(bytes.bytesAvailable > 0)
    {
        returnBytes.writeFloat(bytes.readFloat());
        returnBytes.writeFloat(bytes.readFloat());
        if (bytes.bytesAvailable > 0)
        {
            bytes.position += 8;
        }
    }
    return returnBytes;
}

Татьяна Белая

unread,
Jul 16, 2009, 5:40:14 AM7/16/09
to fp...@googlegroups.com
FFT из extract не получить. алгоритмы сложные, медленные и малореальные для ежекадрового использования
последний эксперимент сделан как раз на extract

2009/7/16 <tocr...@gmail.com>



--
White [0xFFFFFF.ru]

tocr...@gmail.com

unread,
Jul 16, 2009, 5:44:32 AM7/16/09
to fp...@googlegroups.com
ещё можно на серве хранить данные и потом их использовать

Татьяна Белая

unread,
Jul 16, 2009, 5:53:17 AM7/16/09
to fp...@googlegroups.com
нельзя, музыка динамическая.
например человек выбирает музыку со своего компьютера.
плюс это такие объемы данных, что проще забить на эту тему.

2009/7/16 <tocr...@gmail.com>



--
White [0xFFFFFF.ru]
Reply all
Reply to author
Forward
0 new messages