Как правило исходник имеет в своем составе один большой ape, flac или wv файл и файл cue, в котором сохранена информация о дорожках из которых состоит образ диска.
Я использую для конвертирования из ape/flac/wv в mp3/ogg скрипт, работающий в nautilus.
Как это работает.
Процесс конвертирования выглядит следующим образом:Как это установить.
Сначала нужно установить необходимые пакеты:Исходник mac-3.99 тут или тут. Пропатченный APELink.cpp.
Нужно создать каталог, где будут храниться скрипты, необходимые для обработки audio файлов:
#!/bin/bash # Split audio archive file (ape or flac) by cue # # Filename: Split-audio-by-CUE.sh # # Setup: # sudo apt-get install flac lame mp3splt vorbis-tools wavpack # wget http://members.iinet.net.au/~aidanjm/mac-3.99-u4_b3-1_i386.deb # sudo dpkg -i mac-3.99-u4_b3-1_i386.deb # # Version Changes # ------------ --------------------------------------------------------------- #VERSION=0.1 # Initial version convertion Nautilus ape or flac to mp3 or ogg #VERSION=0.11 # Eliminate some bug in wav encoding #VERSION=0.12 # Saving original files to ORG directory. VERSION=0.13 # Added decompressing from wave pack # Copyleft AxaRu http://axa-ru.blogspot.com/2011/ # For debug set to 1 DEBUG=0 # Uncoment actual format ENCODING=mp3 #ENCODING=ogg # Lame encoding quality #MP3QUALITY=hifi MP3QUALITY=cd # Directory for saving original files ORGDIR=original BASEDIR="$(pwd)" #=============================================================================== using() { zenity --info --no-wrap --text="Nautilus script for decopmpressing ape or flac audo file by que.\n\n Using: \t\tSimple select some cue file in nautilus, tape right mouse button and select: \t\tScript->Audio tags manip->Split-audio-by-CUE.sh\n Adjusting: \t\tTarget encoding mp3 or Ogg select by uncomment appropriate variable \t\t\n Debuging: \t\tIn the script Split-audio-by-CUE.sh setup DEBUG variable to 1 \t\tand You will see debug message in Gnome popup windows" } save_files() { if [ -d "$ORGDIR" ]; then zenity --error --text="Directory $ORGDIR exist in current catalog. Please remove its and start script agan" exit 1 fi out="$(mkdir "$ORGDIR")" out="$(mv * "$ORGDIR")" } exit_error() { out="$(rm *)" out="$(mv "$ORGDIR"/* .)" out="$(rmdir "$ORGDIR")" exit 1 } ((DEBUG)) && zenity --error --text="Lets Go!" save_files # Проверить, что был выбран один файл ($# = 1) if [ $# -ne 1 ] ; then using exit_error fi # Считать cue файл CUENAME="$1" ((DEBUG)) && zenity --error --text="Cue: $CUENAME" # Найти строку, начинающуюся с тега "FILE" прочитать файл AUDNAME="$(awk "/FILE/" "$ORGDIR/$CUENAME" | awk -F"\"" '{ print $2 }')" ((DEBUG)) && zenity --error --text="Audio file: $AUDNAME" # Проверить, что такой файл существует if [ ! -f "$ORGDIR/$AUDNAME" ] ; then zenity --error --text="Input file $ORGDIR/$AUDNAME doesn't exist" exit_error fi # Разархивировать в wav ( case "$AUDNAME" in *.[fF][lL][aA][cC] ) fn=${AUDNAME%.[fF][lL][aA][cC]} echo "# Deflating \"$fn.flac\" to wav" echo "30" ((DEBUG)) && zenity --error --text="Flac decompressing : $fn" out="$(cd "$BASEDIR/$ORGDIR"; flac "-d" "$AUDNAME" -o "${fn}.wav")" ;; *.[aA][pP][eE] ) fn=${AUDNAME%.[aA][pP][eE]} echo "# Deflating \"$fn.ape\" to wav" echo "30" ((DEBUG)) && zenity --error --text="Ape decompressing : $fn" out="$(cd "$BASEDIR/$ORGDIR"; mac "$AUDNAME" "${fn}.wav" "-d")" ;; *.[wW][vV] ) fn=${AUDNAME%.[wW][vV]} echo "# Deflating \"$fn.wv\" to wav" echo "30" ((DEBUG)) && zenity --error --text="Wave Pack decompressing : $fn" out="$(cd "$BASEDIR/$ORGDIR"; wvunpack "$AUDNAME")" ;; *.[wW][aA][vV] ) fn=${AUDNAME%.[wW][aA][vV]} ((DEBUG)) && zenity --error --text="No need decompressing : $fn" ;; * ) zenity --error --text="Unknown format" exit 1 ;; esac # Закодировать в mp3 или ogg echo "# Encoding wav to mp3" echo "60" case $ENCODING in "mp3" ) out="$(cd "$BASEDIR/$ORGDIR"; lame --preset "$MP3QUALITY" "$fn.wav" "$fn.mp3")" ;; "ogg" ) out="$(cd "$BASEDIR/$ORGDIR"; oggenc -q 6 -o "$fn.ogg" "$fn.wav")" ;; esac # Разрезать на треки echo "# Splitting to tracks" echo "90" ; sleep 1 out="$(cd "$BASEDIR/$ORGDIR"; mp3splt -f -c "$CUENAME" -o "../@n-@t" "$fn.mp3")" echo "# Done" echo "100" ) | zenity --progress \ --title="$1" \ --text="dummy_text_dummy_text_dummy_text_dummy_text_dummy_text_dummy_text_" \ --percentage=0 ((DEBUG)) && zenity --error --text="All done" exitи дать ему права на исполнение
Недостатки
Конвертирование звуковых файлов относительно длительный процесс. На моем ноуте он продолжается в течении 3-5 минут. Я попытался, насколько это возможно как то показать ход исполнения. Но здесь мои возможности сильно ограничены.Буду рад коментариям и замечаниям.
Полезные ссылки: