суббота, 6 октября 2012 г.

Проблемы с аудиофайлами wav и ogg в AS3

Как известно без лишних ухищрений (это ключевая фраза) в своем AS3 (и в AS2 тоже) проекте можно использовать аудиофайлы только формата .mp3 (причем обязательно с частотой 44100hz!), что не есть хорошо.

Музыку в текущем проекте я решил хранить именно в таком формате (но конвертировать все равно пришлось - частота была неподходящей), а звуки, которых насчитывается уже почти сотня, конвертировать совсем уж не хочется:  и потери качества, и прибавка в объеме неизбежна. Вернее не так: либо прибавка в объеме файлов, либо потери качества. Не хорошо.

Поскольку у меня был паки одних и тех же звуков в форматах .wav и .ogg, я решил искать библиотеки для работы с этими форматами и использовать вариант который больше понравится.

Для работы с форматом .wav я нашел прекрасную библиотеку - as3wavsound. Это был бы лучший выбор, но ограничения этой библиотеки как раз делают ее бесполезной в нашем случае - допустимый bit rate  8 или 16, когда у всех звуков в игре - 4 bitrate. Поизучал библиотеку, но это не позволило мне дописать возможность поддержки 4-битных звуков. Опять не подходит, но хотелось бы вернуться к использованию этого наилучшего варианта. На 16 битных звуках все проверял :)

Остается использовать .ogg, может быть с ним будет меньше проблем? Найдена библиотека AS3 OggVorbis Library и Mauft Frontend для нее. Результат использования библиотеки в моем проекте меня не устраивает - перед проигрыванием каждого звука происходит очень сильный лаг, при манипуляциях с массивом байтов.

Результат: звуки до сих пор не внедрены, их нужно либо снова конвертировать, либо искать проблему в Ogg библиотеке.

6 комментариев:

  1. Не совсем понятно, что конкретно требуется, поэтому просто расскажу как мы вставляли звук для одной игры. Необходимо было грузить звуки извне и иметь возможность играть их в циклах. Каждый звук обернули в SWF, грузили ее, а потом из нее доставали класс по имени и создавали звук. Звуков было тоже много, посему написали скрипт для Flash IDE, который брал звук, пихал его в библиотеку файла и собирал флэшку. В итоге имеем тонну свфок, размер их как mp3, а так как используется нативный энкодер, нет проблем с зацикливанием.

    Возможно, чем-то пригодится такой подход и в твоем проекте.

    ОтветитьУдалить
    Ответы
    1. Интересный вариант, спасибо за совет.
      Проблему я пока не решил, на выходных был занят другими вещами, но сегодня попробую использовать с той же as3wavsound новые wav-файлы, сохраненные при помощи других кодеков и соответственно с другими параметрами.

      Удалить
  2. Забыл написать, формат исходника — wav.

    ОтветитьУдалить
  3. А почему бы непосредственно в Flash IDE не импортировать wav без потери качества? И уже в нем настроить битрейт, компрессию и качество для звука. Это также позволит избежать проблем с зацикливанием музыки и звуков, потому что кодек mp3 вставляет паузу в конце

    ОтветитьУдалить
    Ответы
    1. Дело в том что я не работаю в IDE. Дорогостоящая софтина, а я не пират.
      Проблема у меня только в том, что имеющиеся библиотеки не поддерживают используемые кодеки wav. Где-то битрейт не такой, какой надо, где еще что. На выходе получаю в лучшем случае - шум. Но не конвертирую в точно поддерживаемый "из коробки" формат, потому что размер файла и качество серьезно поменяются, ищу другой выход.

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

      Удалить

Читатели