Lame. Понижение битрейта.
Прислушавшись к замечаниям по поводу «откушенных» концовок у MP3-файлов, для которых я понижал битрейт, я провел несколько экспериментов. Результаты подтвердили мои предположения. Жаль, что это не было замечено раньше…
Для изменения битрейта я использовал (и рекомендую тем, кто имеет такую необходимость) программу FairStars Audio Converter (текущая версия 1.55). FairStars Audio Converter оперирует форматами WAV, APE, FLAC, OGG, VQF, MP3 и WMA, давая возможность перекодировать файл любого из этих форматов в любой другой в пакетном режиме. При этом в ее настройках, можно установить некоторое количество параметров для результирующего файла. Как и многие подобные программы, FairStars Audio Converter использует для конвертации оригинальные (или не очень) DLL-библиотеки. Вот здесь-то и была «зарыта собака».
Библиотека Lame_enc.dll любимого нами кодека LAME (при проведении экспериментов использовались версии 3.96.1 и 3.97) как раз и страдает замеченным «откусыванием» концовок у конвертируемых MP3-файлов. Заметно это может быть не во всех результирующих файлах, а только в тех, где концовка с затиханием. То есть где чтец, либо понижает голос, либо в конце файла просто есть пауза. Очевидно, LAME таким образом отсекает паузы в конце.
При конвертации тех же самых MP3-файлов с теми же самыми параметрами при помощи штатного Lame.exe, этот эффект полностью исчез.
Итог был понятен: для получения профессионального результата — пользуйтесь профессиональными средствами. Единственное, что опечалило, — профессиональное средство (Lame.exe) не имеет возможностей к пакетной обработке (то есть N файлов подряд). При конвертации целой аудиокниги запуск в командной строке Lame.exe с параметрами и соответствующим именем очередного обрабатываемого файла — занятие весьма утомительное…
Требовалось автоматизация. Посушив пару дней мозги, я смог достичь вполне приемлемого результата, текст которого приведен ниже.
@Echo Off
If Not «%1″==»» (Goto LameProcessing)
If Not «%TriggerFlag%»==»» (Goto End)
Set TriggerFlag=1
If Not Exist «.\OUT» MkDir «.\OUT»
Echo.
Echo «- — — = = = = — — -«
Echo.
For /F «tokens=*» %%i In (‘Dir /B /O:N *.mp3’) Do Call %0 %%i
Set TriggerFlag=
Echo.
Echo «- — = = — -«
Goto End
:LameProcessing
Echo %*
LAME.EXE —quiet -q 0 -b 128 «%*» «.\OUT\%*»
Goto End
:End
Этот текст следует скопировать (через буфер обмена) в текстовый файл (создать новый в «Блокноте») и сохранить под именем, например, LAME.BAT
Что оно делает:
1. Создает в текущем каталоге (папке) подкаталог (папку) с именем OUT.
2. В процессе работы BAT-файл рекурсивно вызывает сам себя для каждого очередного обрабатываемого файла.
3. Последовательно обрабатывает все файлы с расширением (типом) .MP3, отсортированные по их именам,.
4. Исходные MP3-файлы остаются неизменными, а результирующие, с теми же именами, создаются в папке OUT с битрейтом 128 kbps.
Технология использования:
1. Исходные файлы переписываем на диск (если они уже там — читаем дальше).
2. Копируем LAME.BAT и LAME.EXE в тот же каталог (папку), где находятся файлы, подлежащие обработке.
3. Запускаем LAME.BAT и ждем окончания его работы
4. Результирующие файлы будут расположены в созданном здесь же каталоге (папке) «OUT».
5. LAME.BAT и LAME.EXE в данном каталоге (папке) больше не нужны, их можно отсюда удалить.
N.B. Для того, чтобы не нужно было постоянно копировать куда-то LAME.EXE, его можно предварительно записать в один из каталогов, находящийся в «пути», то есть содержащийся среди каталогов, указанных в переменной среды PATH. Чтобы те, кто не искушен в работе Windows не ломали голову (хотя это и полезное занятие), скажем, что одним из этих каталогов всегда является каталог «Windows».
Таким образом, задача сводится к тому, чтобы скопировать LAME.EXE в каталог Windows.
Ограничения:
1. ID3-теги, если таковые были в исходных файлах, в результирующих файлах не сохраняются.
2. В том виде, который приведен в листинге, LAME.BAT предполагает обрабатывать только файлы, имеющие расширение (тип) .MP3 и являющиеся «правильными» по внутренней структуре MPEG-файлами.
3. Результирующие файлы будут иметь битрейт 128 kbps, что, впрочем, легко изменить (об этом — чуть ниже).
4. Работает в среде Windows (Отлажено и проверено в XP. При экспериментах в других версиях Windows просьба сообщить в этой теме о работо-неработоспособности).
Те, кому уже приходилось работать с LAME.EXE — утилитой командной строки, — знают, что у нее довольно много ключей и параметров, которые влияют режим создания результирующего файла. Для знатоков не составит труда изменить строку, которая и содержит основные параметры, управляющие процессом конвертации. Так, например, для получения результирующих файлов 32 kbps, нужно заменить для ключа -b значение 128 на значение 32. Тогда в каталоге (папке) OUT окажутся файлы с соответствующим битрейтом.
Понимая, что нет предела совершенству, предлагаю клубным умельцам присоединиться в данной теме для получения наиболее качественно работающего инструмента. Возможно, в последствии его будет интересно принять в качестве стандарта для подготовки релизов.