Странные тут споры. AutoTranscoder тем и был хорош, что для консоли. Если кому гуй нужен — так, по-моему, Фубар вполне себе хорошая штука.
Мне когда-то давно попался AutoTranscoder то ли 1.3, то ли 1.4. Однако, ввиду тогдашних проблем со щелчками, двумя батниками (что, ИМХО, напрягает), и отсутствием конфигурирования, пользоваться было им не очень удобно. Я поковырялся и соорудил нечто.
В первую очередь сделал всё в одном батнике — потом, правда, как оказалось, эта давно решено. Потом сделал возможность дополнительных настроек отдельным блоком в начале батника, что б в самом цикле не ковыряться — теперь можно удобно прописать качество или битрейт, частоту передискретизации, даунмикс, выбор использовать временный wav или через конвеер, выбор удалять файлы или не удалять, возможность указать параметром запуска в командной строке директорию с эмпэтрёшками.
И в качестве особой фишки — автоматическое детектирование моно или стерео mp3 на входе. Дело в том, что при включенном даунмиксе на смеси файлов энкодер обломится — заругается, мол, не могу сделать даунмикс, кроме как со стерео в моно («Can't downmix except from stereo to mono») и получится некрасивая вещь — скрипт молотит впустую, всё продолжает работать — lame бодро отчитывается о декодированных фреймах, tag упорно пытается скопировать теги в пустой ogg. Представляете картину: ставите на ночку торбу книжек кодировать, в надежде по утрам и вечерам, давясь в транспорте на работу и с, приобщаться к шедеврам мировой классики, а утречком получаете много-много оггов нулевого размера. Причём, по лени и забывчивости копии исходников вы, конечно, не сделали. Прощай плоды бессоных ночей дежурства на торрентах и бдений на файлообменниках… А исходники, они разные бывают — одни в моно, другие в стерео, а хочется всё скопом и разом, особо не заглядывая в свойства, «настроил, запустил и забыл». Надеюсь, я эту проблему решил — во всяком случае у меня работает.
Дабы такие, как я, нечто подобное ищущие, не рыскали по всему инету, собрал набор в одном архиве:
http://narod.ru/disk/17559708000/ADMTOC11.7Z.html — полтора мегабайта. Входят:
converter.bat — сам скрипт,
lame.exe — LAME 32bits version 3.98.2,
oggenc2.exe — OggEnc v2.85 Generic (libvorbis 1.2.3),
Tag.exe — Tag 2.0.52
Ногами прошу зело не бить — не программер, но очень уж хотелось не ждать милостей от природы.
- Код: Выделить всё
@echo off
if main==%1 goto MAIN
%COMSPEC% /E:on /V:on /C call %0 main %1
exit
:MAIN
rem Alex Dragon's MP3 to OGG converter v1.1
rem bat-скрипт для конвертирования mp3-файлов в формат ogg.
rem Является развитием идеи скрипта "MP3 to OGG AutoTranscoder 1.0"
rem от VEG (http://vorbis.org.ru)
rem Использование: пропишите опции конфигурации, если не устраивают
rem по умолчанию. В качестве параметра запуска можно задать путь к требуемому
rem каталогу: converter.bat x:\some\dir
rem Все файлы в этом каталоге и подкаталогах будут обработаны автоматически.
rem Либо поместите скрипт в директорию с mp3 файлами, запустите. Подробнее
rem читайте ниже.
rem ----------------------------------------------------------------------------
rem Установка параметров кодирования Ogg.
rem Frequency - частота передискретизации (см. --resample в документации
rem по oggenc.exe), десятичное целое, если не требуется - оставить пустым,
rem будет использована частота исходного файла, значение по умолчанию - нет.
set Frequency=
rem Quality - качество ogg-файла в условных единицах от -1 до 10 (в некоторых
rem реализациях кодера в справке указано от -2, но у меня с этим параметром
rem выдаёт ошибку), см. -q в док-ции (Внимание: дробная часть отделяется
rem не точкой, а ЗАПЯТОЙ!), если не требуется - оставить пустым, кодировщик
rem использует своё внутреннее значение по умолчанию (обычно 3,0), здесь
rem в скрипте - выставлено 1,5.
set Quality=1,5
rem Bitrate - номинальная скорость сжатого потока в килобитах в секунду (kbps),
rem взаимоисключающе с Quality, если заданы оба - кодировщику в этом скрипте
rem будет передано Quality. Значение по умолчанию: нет.
set Bitrate=
rem Downmix - сведение стерео в моно, 0 - нет, 1 - включено, по умолчанию - 0.
rem Если указано отличное значение - будет принудительно установлен в ноль.
set Downmix=0
rem Для достижения максимального сжатия при более-менее приемлимом качестве для
rem речевых программ, например аудиокниг, можно порекомендовать следующие
rem параметры: Frequency=24000, Quality=0 (либо Bitrate=24), Downmix=1.
rem ----------------------------------------------------------------------------
rem TmpFile - использовать промежуточный wav-файл. lame сперва декодирует mp3
rem в несжатый wav, а затем уже oggenc перекодирует этот wav в ogg. Другая
rem стратегия - поток от lame'а будет передаваться непосредственно oggenc через
rem конвеер, при этом увеличивается общая скорость, иногда довольно
rem существенно - что особенно заметно при большом количестве файлов большой
rem длительности и на слабых машинах с медленными винтами. Возможность выбора
rem была сделана в связи с тем, что в некоторых версиях lame
rem (предположительно всех до 3.98.1) была ошибка, приводящая при поточном
rem кодировани к неприятному щелчку в конце файла. При использовании
rem промежуточного wav'а этого не происходит.
rem 0 - не использовать, 1 (или любое ненулевое значение) - использовать.
rem По умолчанию - 0
set TmpFile=0
rem DeleteSrc - удаление исходных файлов. 1 - удалять, 0 - не удалять.
rem По умолчанию - 0, отключено. Будьте внимательны! Очень легко лишиться
rem любовно собираемой коллекции.
set DeleteSrc=0
rem Frequency, Quality, Bitrate и Downmix можно не задавать - будут
rem использованы значения по умолчанию.
rem TmpFile, DeleteSrc должны быть заданы явно.
rem ----------------------------------------------------------------------------
rem Здесь можно задать дополнительные опции для lame и oggenc. Например, при
rem поточном кодировании вывод на экран lame и oggenc перекрывается, из-за чего
rem возникает эффект раздражающего мерцания и видимость мусора внизу экрана.
rem Для устранения можно подавить вывод того или другого, либо обоих сразу, для
rem чего их нужно запускать в режиме молчания (silent mode). Оба сразу
rem не рекомендуется, потому что тогда не видно, что происходит - пока
rem не начнёт работу Tag, никаких видимых изменений происходить не будет.
rem По умолчанию - пусто.
rem set LameAddOpts=--silent
rem set VorbisAddOpts=-Q
set LameAddOpts=
set VorbisAddOpts=
rem ----------------------------------------------------------------------------
rem Здесь устанавливаются дополнительные опции для Tag; если не знаете что
rem делаете - лучше не трогайте, по умолчанию - пусто.
rem Некоторые замечания относительно Tag.
rem Tag копирует только текстовую информацию, картинки не переносятся.
rem В некоторых случаях tag.exe вываливается с ошибкой и предложением сообщить
rem о ней в Microsoft после попытки скопировать теги из файлов, обработанных
rem iTunes. Причиной, судя по всему, является нестанадартное размещение или
rem кодирование картинки обложки (Cover Art). Вероятны и иные ошибки, мне
rem неизвестные.
rem Варианты обхода: попробовать определить и отключить проблемные теги. Для
rem просмотра списка имеющихся в файле тегов: tag.exe file.mp3. В моём случае
rem оказалось, что сбоит на "Cover Art (front)". Решение: перекрыть тег пустым
rem значением.
rem set Tags=-t "Cover Art (front)="
rem Для подавления вывода можно использовать комбинацию --hidetags --hideinfo
rem (--hidenames уже включено) - тогда будет высвечиваться только заголовок
rem программы с номером версии и сообщение о выполнении задачи.
set Tags=
rem ----------------------------------------------------------------------------
rem Установка путей к lame, oggenc и tag.exe. По умолчанию скрипт можно
rem запустить из любого места, при условии, что все исполняемые файлы комплекта
rem находятся с ним в одной директории:
rem x:\bat_dir\converter.bat y:\mp3_dir
rem Если вы хотите помещать сам скрипт в директорию с mp3-файлами или
rem использовать свои версии программ, то пропишите полные пути к lame, oggenc
rem и tag.exe (либо поместите их в %PATH%) и закомментируйте строчку
rem set PATH=%~dp0;%PATH%. Впрочем, помещённый в %PATH% скрипт прекрасно
rem вызывается из текущей диектории, поэтому остаётся только напечатать
rem converter.bat и расслабиться.
set LAME=lame.exe
set TAG=tag.exe
set VORBIS=oggenc2.exe
set PATH=%~dp0;%PATH%
rem ----------------------------------------------------------------------------
rem На этом опции конфигурирования заканчиваются, далее идёт окончательная
rem установка переменных и собственно выполняемая часть.
rem ----------------------------------------------------------------------------
set ERR=Ошибка: не определена переменная
if defined Frequency set Frequency=--resample %Frequency%
if defined Quality (set Quality=-q%Quality%) else if defined Bitrate set Quality=-b%Bitrate%
if not defined Downmix set Downmix=0
if not defined TmpFile set ERR=%ERR% "TmpFile"&goto ERRMSG
if not defined DeleteSrc set ERR=%ERR% "DeleteSrc"&goto ERRMSG
set VORBIS=%VORBIS% %Quality% %Frequency% %VorbisAddOpts%
set LAME=%LAME% %LameAddOpts% --decode
set Version=Alex Dragon's MP3 to OGG converter v1.1
set HR=========================================
set P=%~f2
if not defined P (set P=.\*.mp3) else (
if not exist "%P%\." ((set ERR=Неправильно задан путь)&goto ERRMSG) else set P="%P%\*.mp3"
)
for /F "delims=" %%F in ('dir /S /A-D /B /O:N %P%') do (
echo.&echo %HR%&echo %Version%&echo %HR%&echo.
if %Downmix%==1 (for /F "tokens=4 delims=, " %%M in ('%Tag% --hidetags --hidenames --simple "%%~dpnF.mp3" 2^>^&1^|^
findstr /L "Details:"') do (
if Mono==%%M set Downmix=
if Stereo==%%M set Downmix=--downmix
)
) else set Downmix=
if %TmpFile%==0 (%LAME% "%%~dpnF.mp3" - | %VORBIS% !Downmix! -o "%%~dpnF.ogg" -) else (
%LAME% "%%~dpnF.mp3" -o "%%~dpnF.wav"
%VORBIS% "%%~dpnF.wav" -o "%%~dpnF.ogg"
del "%%~dpnF.wav"
)
%TAG% --simple --hidenames %Tags% -t "ENCODEDBY=ADMTOC v1.1" --fromfile "%%~dpnF.mp3" "%%~dpnF.ogg"
if %DeleteSrc%==1 (if exist "%%~dpnF.ogg" del "%%~dpnF.mp3")
echo.
)
goto END
:ERRMSG
echo.
echo %ERR%.
:END
echo on