Ответ 1
Вам необходимо установить соответствующий MP3-кодер, например. LAME или перекомпилируйте Sox с поддержкой liblame.
Это не зависит от вашего программирования на Perl:)
Когда я запускаю sox непосредственно из командной строки как:
sox -r 8000 -c 1 <wavfilename> <mp3filename>
Появляется следующее сообщение об ошибке:
sox: Неизвестный формат выходного файла для '747a.mp3': Тип файла 'mp3' не является Известно
Моя машина запускает операционную систему CentOS.
Вам необходимо установить соответствующий MP3-кодер, например. LAME или перекомпилируйте Sox с поддержкой liblame.
Это не зависит от вашего программирования на Perl:)
В качестве альтернативы (если вам нужно только закодировать 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
Для CentOS вам нужно будет перекомпилировать SOX (базовое репо имеет sox srpm) с установленными библиотеками libmad и lame-devel (у них есть rpmforge). После этого sox -h отобразит поддерживаемые форматы. Когда mp3-библиотеки установлены,
sox -t wav -r 8000 -c 1 <wavfilename> -t mp3 <mp3filename>
Подробнее здесь -