ГлавнаяПо делу › Конвертирование Nellymoser ASAO Codec FLV файлов в WAV/MP3

Конвертирование Nellymoser ASAO Codec FLV файлов в WAV/MP3

December 29th, 2008

История в картинках и текстах

Летом 2003го года я был нанят как программист и технический консультант проекта, краткая суть которого была в записи пользователем посредством FCS видео, дальнейшем конвертировании этого видео в более популярные форматы (так как FLV был тогда не очень популярным форматом видео) например 3GP, AVI, MPEG и так далее с целью скачивания и распространения на популярных устройствах чтения видео и аудио (мобильные телефоны, PSP).
Но как только дело дошло до работы с файлами записанными FCS возникла проблема — в конечных файлах отсутствовал звук. Это было весьма некстати, так как подрывало идею самого проекта. Поиски в интернетах ничего не дали.

И вот в конце 2005го в конференции FlashComm от инженеров Adobe, поступила информация о том, что такой магический конвертор аудио FLV2MP3 у Adobe есть и будет доступен на сайте Labs в ближайшее время. Все были несказанно рады и принялись ждать релиза этого чуда. Но релиз все как то затягивался, то не успели что то подготовить, то надо ждать своей очереди в списке релизов и так далее. Длилось это долго, и подписчики листа рассылки уже начали откровенно пинать инженеров Adobe. Через пол года выяснилось, что Adobe не может опубликовать эту утилиту для общественного доступа, так как это противоречит лицензионному соглашению все с тем же Nellymoser.

Далее в результате перманентного перетряхивания интернета на данную тему, был найден некий PDF документ, в котором некая кантора struktur AG объявляла тендер на реверс-инжениринг Nellymoser ASAO кодека, обещая заплатить за это $6000. И вот осенью 2007го, в интернет попали SDK по данному кодеку, и уже 15го Октября 2007го года группа разработчиков утилиты FFMPEG объявила о встроенной поддержке кодека Nellymoser ASAO.

Что такое Nellymoser ASAO Codec

Nellymoser ASAO — это одноканальный голосовой-аудио кодек, представленный компанией Nellymoser.

Звуковые данные группируются по 256 шестнадцатибитных сэмплов звука (512 байт), которые кодируются в 64-байтный закодированный пакет. Частота дискретизации не имеет значения. Nellymoser в FLV Nellymoser — это один из кодеков, который используется в FLV формате, помимо PCM, ADPCM и MP3.
Nellymoser продает кодек $7000-$10000 из расчёта установки на один ПК, при этом не раскрывая самого алгоритма кодирования.

The Nellymoser Crispa File Converter

Собственно сама утилита от Nellymoser, которая попала мне в руки в другом проекте.
Поддерживаемые возможности:

FFmpeg конвертер

Официальная страница FFmpeg с документацией, исходным кодом и всем чем положено.
Двоичные файлы т.е. уже скомпилированное приложение для Windows можно скачать на этой странице или же у меня в комплекте с FLV файлом записаным Flash Media Server 2
Для того что бы конвертировать FLV файл без видео в MP3 в командной строке набрать:

ffmpeg.exe -i 120.flv -vn -acodec libmp3lame -ar 22050 -ab 32k out.mp3

nelly2pcm

Утилита командной строки. Очень простая утилита. Если есть большое желание посмотреть, как же все таки устроен ASAO, можно глянуть исходный код. Исходный код можно скачать тут.
Утилита легко компилируется под UNIX, не требуя дополнительных библиотек.
nelly2pcm
Все что умеет эта маленькая утилита — это преобразовывать ASAO в PCM данные. Если ее запустить то преобразованные данные будут выводится прямо в окно вывода в таком вот виде:

Nelly2pcm output
поэтому саму по себе ее использовать нельзя. Весьма удобно использование в связке с утилитой SOX притейлив ее вызов в командной строке, как показано ниже:

nelly2pcm 120.flv | sox -t raw -c 1 -2 -r 22050 -s – test.wav

Скачать бинарные файлы nelly2pcm и SOX (под Windows) в комплекте с тестовым файлом можно у меня.

Nellynomore

Утилита для Debian Linux с пакетом libx11-dev работающая под X server то есть это не утилита командной строки, для своей работы использует Linux flash pluggin версии 7.
Хотя утилита и предназначена для работы в графической оболочке Linux, при хитром подходе к делу графическую оболочку можно эмулировать используя Xvfb. Эта утилита работает используя непосредственно flash pluggin для чтения
звука из FLV файла кодированного при помощи кодека Nellymoser. Flash pluggin, который умеет декодировать такую дорожку, используется для получения PCM аудиоданных, далее полученные данные сохраняются в WAV файл. Утилита работает с разной скоростью, которая зависит от частоты дискретизации сигнала, так например стандартный 8KHz файл перекодируется с 4х кратной скоростью, 22KHz с 2х кратной. Нагрузка на центральный процессор при этом весьма незначительна, что позволяет запустить сразу несколько процессов одновременно.
Скачать утилиту можно тут.

Другие конвертеры

Поскольку другие конверторы за время написания данного текста резко стали платными, о них речь идти не будет.

Категория: По делу Ярлыки: , , , ,

Смотрите также

Страшный XML для безстрашных пионеров начинающих флеш разработчиков. SWFObject2 Документация на русском языке.
  1. МИМОХОДОМ
    March 15th, 2012 at 18:23 | #1

    Спасибо за FFmpeg конвертер! на 7-ке вытянул звук в Nellynomore

  1. Пока нету.