Документ создан: 15.02.2010

Кодирование в формат Nero AAC в linux

29.01.2009 г.
25.04.2009 г.
10.02.2010 г.

Для кодирования звука в формат Nero AAC в linux надо скачать и распаковать в любой каталог из PATH ("echo $PATH") содержимое файла neroAac.tar.bz2. К сожалению, источник, откуда я взял этот файл, мною утерян. Нашёл http://www.nero.com/eng/downloads-nerodigital-nero-aac-codec.php

Кроме этого поставим пакет lame (он пригодится для перекодирования):

sudo apt-get install lame

Можно кодировать

"neroAacEnc -help" поможет Вам разобраться в назначении ключей и опций. Для прослушивания копозиций на плеере, я использую битрейт 64kb/s. Вот только не надо! 64kb/s aac ≈ 196kb/s mp3 по звучанию, а по размеру поменьше будет!

Итак, для прослушивания копозиций на плеере, я использую битрейт 64kb/s. Команда выглядит следующим образом:

neroAacEnc -br 64000 -if input.wav -of output.m4a

Где:

  • "-br 64000" = 64kb/s;
  • "-if" − входной файл в формате wav;
  • "-of" − выходной файл в формета Nero AAC;

Более детальное описание команд смотрите с помощью "neroAacEnc -help"

В общем, имея в наличии wav-файл, мы легко превращаем его в m4a с соответствующим перекодированием. Однако, у меня, к примеру, не храняться файлы в этом формате. Они лежат в mp3 с bitrate 320kb/s. Алгоритм сжатия при этом битрейте - математический, без использования психоаккустического алгоритма сжатия, а значит - с минимальными потерями. И вот понадобилось мне записать на плеер все пару компоизиций группы "Ария", а они в mp3. Как быть в этом случае? Да, очень просто. На помощь нам придёт lame. Использовать его в связке с neroAac можно следующим образом:

lame --decode input.mp3 - | neroAacEnc -br 64000 -if - -of output.m4a

С этими ключами neroAacEnc уже познакоимились выше. Исключение составляет "-if -", что означает принимать со стандартного устройства ввода. Для lame:

  • "--decode" − декодировать входной файл input.mp3 в wav;
  • "-" − выводить результат на стандартное устройство вывода. Не используйте этот ключ без перенаправления - долго ждать придётся. :)

Итак, lame получает имя файла, начинает его декодировать и результат выводить на стандартное устройство вывода, которое через pipe (|) перенаправляется в neroAacEnc. neroAacEnc получает поток со стандартного устройства ввода, жмёт его и выводит в output.m4a. Всё просто!

Однако, у меня случалось большое количество файлов, которые я хотел пережать. Файлы лежат, обычно, так:

Artist1\
	Album1\
		song1
		...
		songN
	...
	AlbumN\
		song1
		...
		songN
...
ArtistN\
	Album1\
		song1
		...
		songN
	...
	AlbumN\
		song1
		...
		songN

И я решил, что лучше использовать скрипт, который сам бы за меня перекодировал. Для работы скрипта надо доставить:

sudo apt-get install id3 mpeg4ip-utils

А сам скрипт можно взять здесь.

Скрипту надо подать на вход каталог, например, Artist1, а результат он выложит в каталог, из которого был запущен. Скрипт расчитан на работу только в структуре каталогов, описанной выше. Кроме прочего, скрипт считывает id3 тэги из mp3 файла и заполняет соответствующие поля в m4a-файле. Если необходимо изменить битрейт - поправьте в скрипте значение ключа -br с "64000" на нужное Вам.


Модифицировал скрипт:

  • исправлена ошибка при работе с файлами и каталогами, в именах которых имеются пробелы;
  • при отсутствии параметров, выводится помощь в использовании скрипта;
  • теперь в каталоге запуска создаётся каталог с именем артиста, например, Artist1;
  • добавил ключ -t, указание которого приводит только к перепрописыванию тэгов без перекодирования;
  • добавлен контроль наличия ID3-тэгов разных версий и использование доступной версии;
  • задействована утилита id3 с ключом -R. Все версии ID3-тэгов выводятся единообразно.

Удачи! Если что, пишите по адресу, указанному вверху страницы. Постараюсь ответить.

 
Top.Mail.Ru
Recent changes RSS feed Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki Donate