С недавних пор мне потребовалась автоматическая конвертация mp3 файлов в нужное мне качество.
Решил использовать lame

LAME — это свободное приложение для кодирования аудио в формат MP3 (MPEG-1 audio layer 3). Имя LAME — это рекурсивный акроним для LAME Ain’t an MP3 Encoder (LAME — это не MP3-кодировщик), относящемуся к ранней истории LAME, когда он не был кодером в полной мере, а входил в демонстрационный код ISO.

Ставим lame из портов, выбирая нужные Вам опции
deathstar# cd /usr/ports/audio/lame && make install clean
Теперь можно конвертировать mp3 файлы такой командой:

/usr/local/bin/lame «file.mp3 -b 128 —mp3input «file_new.mp3»
Так же для автоматического конвертирования был написан скрипт.
Суть в следующем:
через web интерфейс происходит загрузка файлов юзерами на сервер в каталог upload, собственно скрипт сканирует эту папку по заданному времении,составляет лист файлов для конвертации и конвертирует их, удаляя исходный файл. Если же файл имеет битрейт 128 то файл просто перемещается в нужный каталог.

Вот сам скрипт:

#!/bin/sh
while true; do
ls /home/deathstar/music/upload | grep "mp3" > /home/deathstar/convert.txt
if [ "`cat /home/deathstar/convert.txt | grep "mp3"`" != "" ]
then
for NUM in $(seq $(cat /home/deathstar/convert.txt | wc -l))
do FILES=$(sed $NUM!d /home/deathstar/convert.txt)

if [ "`file "/home/deathstar/music/upload/$FILES" | awk -F " MPEG ADTS, layer III, v1, " '{print$2}' | awk -F " kbps" '{print$1}'`" != "128" ]
then
echo "$FILES is not 128kbps...Converting..."
/usr/local/bin/lame "/home/deathstar/music/upload/$FILES" -b 128 --mp3input "/home/deathstar/music/converted/$FILES"
rm "/home/deathstar/music/upload/$FILES"
echo "Converting complete..."
else
echo "$FILES is 128kbps...Moving..."
mv "/home/deathstar/music/upload/$FILES" "/home/deathstar/music/converted/$FILES"
fi
done
fi
sleep 30 ; done

Скрипт выполняется бесконечно по циклу. Таймаут выполнения цикла — 30 секунд