LINUX.ORG.RU

Конвертация из APE (image + .cue), FLAC (image + .cue) в mp3


0

0

Есть полная дискография некой группы в данном формате, с помощью чего в linux можно это все пережать в mp3? Я первый раз сталкиваюсь с данным форматом (APE (image + .cue), FLAC (image + .cue)) посему даже не знаю что это и что с ним делать..

anonymous
Ответ на: комментарий от ftor

а для ape еще понадобится:

[I] media-libs/mac [1]
     Available versions:  (~)3.99.4.5 {backward-compatible}
     Installed versions:  3.99.4.5(11:50:37 PM 01/20/2008)(-backward-compatible)
     Homepage:            http://sourceforge.net/projects/mac-port              
     Description:         unix port of Monkey's Audio

Есть тут: http://etree.org/shnutils/shntool/support/formats/ape/unix/

ftor
()

Конвертация из image+cue или 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
#	- recode должен быть из состава perl

#defvar() {
#	if [ -z "$1" ]; then
#		return $2;
#	else
#		return $1;
#	fi
#}

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

router ★★★★★
()
Ответ на: комментарий от ftor

> а для ape еще понадобится: media-libs/mac

Не обязательно, т.к. ffmpeg уже умеет декодировать ape.

AEP ★★★★★
()
Ответ на: комментарий от router

> recode ${fcoding}..utf-8 *.cue;

За вызов recode - расстрел на месте (программа не обновлялась с 2001 года и содержит кучу ошибок, особенно в поддержке UTF-8, см. http://bugs.debian.org/207736, http://bugs.debian.org/156635, http://bugs.debian.org/134899, http://bugs.debian.org/114850). Учи синтаксис iconv.

AEP ★★★★★
()

Вы хотите перекодировать только потому, что не знаете чем проиграть существующий формат?

Тогда лучше потратьте чуть-чуть времени и осильте losless-форматы, т.к. перегонкой в быдлоmp3 Вы начисто испортите хороший продукт.

anonymous
()
Ответ на: комментарий от anonymous

>Вы хотите перекодировать только потому, что не знаете чем проиграть существующий формат?

Совершенно не поэтому-чем его проигрывать я прекрасно знаю, просто 45 гигов на винте это многовато+иногда приходиться пользоваться портативным плэером который окромя mp3 ничего не понимает.

anonymous
()
Ответ на: комментарий от anonymous

> Совершенно не поэтому-чем его проигрывать я прекрасно знаю

> Я первый раз сталкиваюсь с данным форматом (APE (image + .cue), FLAC (image + .cue)) посему даже не знаю что это и что с ним делать..

Что-то тут не сходится... o_O

anonymous
()
4 сентября 2008 г.

Не прошло и полгода :)

#!/bin/bash
#
# ape2ogg ---
#
# Author           : Zakhary Akulov (hozzzar at gmail dot com)
# Created On       : Th Sep 04 10:04:52 2008
# Last Modified By : Zakhary Akulov (hozzzar at gmail dot com)
# Last Modified On : Th Sep 04 18:05:52 2008
# Status           : Unknown, Use with caution!
# HISTORY          :
# Description      : Скрипт предназначен для конвертирования файлов *.ape в файлы *.ogg
#                  : Для работы скрипта требуются пакеты mac и vorbis-tools.
#
# TODO             : Может быть, стоит сделать конвертирование в mp3?
#                  : И нужно будет сделать, чтобы теги сами записывались.
#

BITRATE=256
INPUTAPE=
OUTWAV=
INDIR="./"
OUTDIR="./"
DEL="no"

while test $# -gt 0; do
        case "$1" in
        --vers | --versi | --versio | --version)
        echo 'ape2ogg 0.1'
        printf $"Copyright (C) %s Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
" "2008"
printf $"Written by %s aka %s.
" "Zakhary Akulov" "hozzzar"
printf $"Feel free to email me about possible bug at %s.
" "hozzzar at gmail dot com"
exit 0
;;
        --h | --he | --hel | --help)
        echo $"Использование: `basename $0` [-b bitrate] [-i dir] [-o dir] [-d] [-h]
        -b bitrate              битрейт, по умолчанию 256 kbps
        -i dir                  каталог исходных файлов
        -o dir                  каталог готовых файлов
        -d, --del-source        удалить исходные файлы
        -h, --help              показать эту справку и выйти
        --version               показать версию и выйти"
exit 0
;;
        -v | --v | --ve | --ver)
        echo >&2 $"`basename $0`: не могу распознать опцию \`$1'"
exit 1
;;
        -d | --d | --del | --del-s | --del-source)
        DEL="yes"
        shift
;;
        -b)
        BITRATE="$2"
        shift 2
;;
        -i)
        INDIR="$2"
        shift 2
;;
        -o)
        OUTDIR="$2"
        shift 2
;;
        --)           # Останов.
        shift; break
;;
        -*)
        echo >&2 "`basename $0`:" $"Не могу распознать опцию" "\`$1'"
        echo >&2 $"Наберите '`basename $0` --help' для получения справки."
exit 1
;;
        *)
        break
;;

esac
done

for INPUTAPE in `find ${INDIR} -depth -print -type f | grep '[Aa][Pp][Ee]$'`
do OUTWAV=`echo $INPUTAPE |sed -e "s/[Aa][Pp][Ee]/wav/"`
mac "${INPUTAPE}" "${OUTWAV}" -d
done

for OUTWAV in `find ${INDIR} -depth -print -type f | grep 'wav'`
do
oggenc -b "${BITRATE}" "${OUTWAV}" -o "${OUTDIR}/`echo ${OUTWAV} | sed -e "s/wav/ogg/"`"
done

if [ $DEL="yes" ]
        then rm -fr `find ${INDIR} -depth -print -type f | grep -E '(.[Aa][Pp][Ee]$|.wav$)'`
fi

exit 0

hozzzar
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.