Декодирование аудио / аудио воспроизведения (AS3) - PullRequest
1 голос
/ 03 июля 2010

Мне интересно узнать, как декодировать и воспроизводить аудио в ActionScript 3. Я понимаю, как записывать байты в объект Sound, используя событие SAMPLE_DATA, так что на самом деле это не проблема. Что я хочу понять, так это то, как я могу реализовать альтернативные аудиоформаты для собственного воспроизведения внутри Flash Player.

Я думаю, что я спрашиваю: как мне взять что-то в формате X и "преобразовать / декодировать" это в формат WAV и записать байты в объект Sound, воспроизводя аудио? Я заинтересован в написании декодера для аудио FLAC и, возможно, аудио OGG, поскольку они, похоже, являются одними из наиболее широко используемых аудиоформатов с открытым исходным кодом.

Может кто-нибудь дать мне совет по этому поводу?

Ответы [ 2 ]

2 голосов
/ 03 июля 2010

Если вы хотите написать декодер, первое, на что вам следует обратить внимание - это спецификация формата, который вы хотите декодировать.

Спецификацию ogg / vorbis можно найти здесь: http://xiph.org/vorbis/doc/Vorbis_I_spec.html.

Кроме того, может быть полезно взглянуть (или, может быть, портировать) какую-то другую библиотеку с открытым исходным кодом, которая уже делает это (я не знаю ни о каком написанном в Actionscript), такую ​​как эта, в Java:http://www.jcraft.com/jorbis/ (я не знаю эту библиотеку, я только что нашел, что она гуглит "ogg vorbis open source".

В любом случае, вам придется приложить некоторые усилия, чтобы получить ееработает, и я не хочу, чтобы это вас обескуражило, но я не уверен, что Actionscript достаточно быстр для декодирования звука в реальном времени.

1 голос
/ 03 июля 2010

Вы можете попробовать, но у вас не останется много сил, чтобы заняться другими делами.До Flash 10 я написал статью о том, как взломать для подачи данных PCM в звуковой вывод во Flash .Кто-то связался, потому что они написали O3-декодер AS3, но ... даже после полной оптимизации кода выяснилось, что AVM2 на самом деле не так уж и хорош.По сути, он довольно медленный, а декодирование OGG довольно интенсивно использует процессор.С тех пор я не вижу, чтобы что-то сильно изменилось, потому что процессоры стали «шире» и не намного быстрее.ActionScript является однопоточным, поэтому вы не можете перенести его на другое ядро.

Возможно, стоит проверить это ... возможно, производительность повысилась.

РЕДАКТИРОВАТЬ: Сказаввсе это, как сказал Хуан, не обескураживает этим ответом.Я подозреваю, что вычислительные требования для декодирования FLAC, вероятно, значительно меньше, чем OGG, и если DSP возбуждает вас, то потратить время на то, чтобы выяснить все это, стоит 100%, даже если маршрут Flash (возможно) приводит к разочарованию.Лично я думаю, что MediaStreamSource для Silverlight выглядит действительно многообещающе, но на самом деле не особо балуется.

...