Как правило исходник имеет в своем составе один большой 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 минут. Я попытался, насколько это возможно как то показать ход исполнения. Но здесь мои возможности сильно ограничены.Буду рад коментариям и замечаниям.
Полезные ссылки:

>Так сложилось, что я храню свою музыкальную коллекцию в виде mp3 файлов
ОтветитьУдалитьЗачем? Было актуально когда винты были маленькие и дорогие. Даже если не рассматривать аудифольских предпочтений, флака хватает. Вот ape, да, его приходится перегонять, его не понимает мой плеер.
>3.Wav файл кодируется в mp3 или ogg
Ну и вот :) можно пойти еще дальше и оставить как есть. Верней, разрезать флак каким-нибудь shntool, а потом cuеtag пройтись...
Как всегда, написал не в плане критики, а в плане альтернативного взгляда. :)
Взгляд правильный. Да и критика - это всегда полезно. Спасибо.
ОтветитьУдалитьПоясню почему так сложилось. У меня долгое время плеером был iPod. Тот, что с hdd внутри.
А он играл aac и mp3.
Вот почему так сложилось. 8)
А теперь старые решения тянут за собой новые ошибки Ж)
ЗЫ. Ничего не мешает изменить скрипт для декодирования и разрезания во flac
ОтветитьУдалить>Поясню почему так сложилось. У меня долгое время плеером был iPod. Тот, что с hdd внутри.
ОтветитьУдалитьА как же Rockbox? Не поддерживался?
>Ничего не мешает изменить скрипт для декодирования и разрезания во flac
Об чем и речь.
Shtucer, а ты пробовал Rockbox?
ОтветитьУдалитьAxa, к сожалению - нет, к счастью у меня были плееры, которые поддерживали все что мне нужно прямо так. А что, Rockbox на столько плох? Вроде отзывы читал положительные...
ОтветитьУдалитьЯ не знаю.
ОтветитьУдалитьНашел свой плеер и завтра залью в него Rockbox.
Тогда и отпишу, если интересно отчет.
Не, не залью.
ОтветитьУдалитьУ меня iPod MB147/6th/Classic.
"Rockbox does not run on the newer, 6th/Classic generation Ipod."
Поэтому не судьба.
Спасибо за инфу! Все сделал, все получилось. Наверное в команде создания директории ошибка (mkidr вместо mkdir) я автоматически набрал правильно, но может кто-то попасться дотошный буквоповторитель ....
ОтветитьУдалитьАнонимный 8),
ОтветитьУдалитьСпасибо за критику. Поправил очепятку с mkidr.