Как преобразовать wav файл в формат mp3 с помощью sox?

Когда я запускаю sox непосредственно из командной строки как:

sox -r 8000 -c 1 <wavfilename> <mp3filename>

Появляется следующее сообщение об ошибке:

sox: Неизвестный формат выходного файла для '747a.mp3': Тип файла 'mp3' не является Известно

Моя машина запускает операционную систему CentOS.

Ответы

Ответ 1

Вам необходимо установить соответствующий MP3-кодер, например. LAME или перекомпилируйте Sox с поддержкой liblame.

Это не зависит от вашего программирования на Perl:)

Ответ 2

В качестве альтернативы (если вам нужно только закодировать Wave файл в MP3), вы можете просто использовать LAME для достижения тех же результатов, например:

lame -b 32 --resample 8 -a <wavefilename> <mp3filename>

LAME можно без проблем установить на CentOS без использования yum. Сначала вам понадобится репозиторий RPMForge:

rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

Тогда:

yum install lame

Ответ 3

Для CentOS вам нужно будет перекомпилировать SOX (базовое репо имеет sox srpm) с установленными библиотеками libmad и lame-devel (у них есть rpmforge). После этого sox -h отобразит поддерживаемые форматы. Когда mp3-библиотеки установлены,

sox -t wav -r 8000 -c 1 <wavfilename> -t mp3 <mp3filename>