Конвертация *.ape в *.mp3


sskirtochenko - Posted on 13 Март 2008

Скачал интересующую музыку. Но вот незадача! Она в формате *.ape.

Некоторые версии xmms вроде бы умеют с ними работать. Мне оказалось проще пойти другим путем.

Для начала нам необходимы такие пакеты:

  • mac - Monkey's Audio Console Front End (http://www.monkeysaudio.com/versionhistory.html)
  • lame - LAME Ain't an Mp3 Encoder (http://www.mp3dev.org)

После их установки можно приступать к конвертированию.

Если это отдельная композиция (sound.ape), то можно в консоли сделать такое:


user@user$ mac sound.ape sound.wav -d
user@user$ lame -b 256 sound.wav sound.mp3

Если это группа файлов, то можно написать скрипт следующего содержания (я его назвал так: ape_wav_mp3.sh):


#!/bin/bash
for file in *.ape
do
WAV=`basename "$file" ".ape"`".wav"
MP3=`basename "$file" ".ape"`".mp3"
#Converting to WAV
`mac "$file" "$WAV" -d`
#Converting to mp3
`lame -b 320 "$WAV" "$MP3"`
#Removing temporary .wav file
`rm "$WAV"`
done
exit 0

Копируем ape_wav_mp3.sh в директорию с файлами и выполняем его:

user@user$ ./ape_wav_mp3.sh

0
Ваша оценка: Ничего

Зачем вообще это делать? Лучше найти проигрыватель ape или прослушивать с realtime-рекодингом...

Если исходная ситация - "1 ape + cue" или "1 flac + cue", то перекодировать в flac можно так:

#!/bin/bash
 
# Разбивает ape или flac файл на отдельные песни в соответствии с cue файлом.
# Песни будут записаны в формате flac. Ибо нефиг.
# в flac-файлах будут заполнены теги ( из cue-файла )
# все теги будут в utf-8
# flac-файлы будут переименованны в "<номер песни> - <название песни>.flac"
# Входные параметры:
#   - тип разбиваемого файла, ape или flac
#   - кодировка cue-файла.
# Требования:
#   - в каталоге должен быть только один ape либо flac файл
#   - в каталоге должен быть только один cue файл
#
#   - наличие recode, cuetool, shntools, flac и mac
#   - rename должен быть из состава perl
 
ftype=$1; #"ape" "flac" "wavepack"
fcoding=$2;
if [ -z "$ftype" ] ; then ftype="flac" ; fi
if [ -z "$fcoding" ]  ; then fcoding="utf-8"; fi
 
 
# подготовка. cuetag сильно глючит
rename 's/\ /_/g' *.{flac,cue};
 
# разобъём исходный файл на части
cuebreakpoints *.cue |  shnsplit -o wav *.${ftype} ;
for a in split*.wav ; do
    flac --best --delete-input-file "$a";
done;
 
# пропишем корректные теги
recode ${fcoding}..utf-8 *.cue;
cuetag *.cue split*.flac;
 
# переименуем файлы
recode utf-8..${LANG#ru_RU.} *.cue;
let a=1;
for b in split*.flac; do
    mv "$b" "$(printf '%.2d - %s\n' "$(cueprint -t %n -n $a *.cue )" \
            "$(cueprint -t %t -n $a *.cue)").flac";
    let a=$a+1;
done;
 
# вернём почти всё как было
rename 's/_/\ /g' *.cue

Если выходной формат должен быть ogg - ничего кроме сосбтвенно кодирования менять не надо. cuetag достаточно универсален

Спасибо. Как раз искал.

P.S. Непонятно мне одно - зачем создавать ape, если все равно их приходится конвертировать?

Лучше использовать pipe, а не временный .wav файл.
Лучше использовать по мере возможности ogg, а не mp3 (хотя бы из-за тегов).

Есть ещё неплохой скрипт для этих же целей:
http://lossless2lossy.sourceforge.net/
суть та же - интерфейс к cli-тулзам, но с разными приятностями типа прописывания тегов и т.п., плюс работает с несколькими форматами при наличии соответствующих утилит в системе

Премного благодарен.

А нафига команды конвертации в '`' ?

P.S. А что, это не есть хорошо? Если можно, подскажите в чем ошибка.