Документ создан: 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-тэгов выводятся единообразно.

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

 
Recent changes RSS feed Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki Donate