LINUX.ORG.RU

Конвертация музыки


0

1

Делюсь с общественностью своим скриптом для конвертации из flac + cue в ogg, сам пользуюсь им, изменяя в зависимости от ситуации.

#!/bin/sh 

SRCDIR=$(pwd) # Источник - каталог с файлами вида album.flac и album.flac.cue 
MUSICDIR="$HOME/multimedia/music/" # Каталог назначения - место, где хранится ваша музыка 

echo "Источник: $SRCDIR" 
echo "Результат: $MUSICDIR" 

for FLACFILE in *.flac 
do 
    #берем очередную пару flac+cue 
    CUEFILE="$SRCDIR/$FLACFILE.cue" 

    #Получаем имя альбома 
    ALBUMTITLE=$(cueprint -d %T "$CUEFILE") 
    ALBUMPERFORMER=$(cueprint -d %P "$CUEFILE") 
    echo 
    echo "Альбом: $ALBUMPERFORMER's $ALBUMTITLE" 

    #создаем папку для ogg-ов 
    OGGDIR="$MUSICDIR/$ALBUMPERFORMER/$ALBUMTITLE" 
    mkdir -p "$OGGDIR" 

    #Разделяем flac на wav-ки и помещаем их в созданную папку 
    #имя wav-ки - № трека.wav 
    echo "Разделение на треки..." 
    shnsplit -q "$FLACFILE" -f "$CUEFILE" -t "%n" -d "$OGGDIR" 

    #Конвертируем wav-ки в ogg 
    echo "Кодирование..." 
    cd "$OGGDIR" 
    for WAVFILE in *.wav 
    do 
        TRACKNUMBER=${WAVFILE:0:2} 
        TRACKTITLE=$(cueprint "$CUEFILE" -n $TRACKNUMBER -t %t) 
        echo "Трек № $TRACKNUMBER, \"$TRACKTITLE\"" 
        oggenc -Q -q 9 -a "$ALBUMPERFORMER" -l "$ALBUMTITLE" \
            -t "$TRACKTITLE" -N "$TRACKNUMBER" "$WAVFILE" \
            -o "$TRACKTITLE.ogg" 
    done 

    #убираем за собой wav-ки и переходим обратно в $SRCDIR 
    rm *.wav 
    cd "$SRCDIR" 
done 
echo "Готово!"
Правда, на практике, как правило присваиваю ALBUMPERFORMER вручную

★★★★

Последнее исправление: alix (всего исправлений: 1)

А что, cuetag.sh уже не в моде? У меня содержательная часть выглядит так:

name=`echo "$1" | sed "s/.flac//"`
if [ ! -f "$name.cue" ] ; then
  exit
fi
if [ ! -z "$log" ] ; then
  echo `pwd` "$1" >> "$log"
fi
cuebreakpoints "$name.cue" | shnsplit -o flac "$name.flac"
cuetag.sh "$name.cue" split-track*.flac
rename "split-track" "$name - " *flac
if [ "$p_del" == "1" ] ; then
  rm -f "$name.cue"
  rm -f "$1"
fi

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

Я про них просто не слышал :)

alix ★★★★
() автор топика

Было бы здорово, если бы можно было конвертировать на лету, без временных файлов.

У меня есть свой скрипт, который уже разделённые flac'и через pipe'ы перегоняет в ogg, но этого часто мало.

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

Вот как раз сейчас пишу нечто подобное. Мой shntool, правда, не умеет ogg (?), так что придётся использовать -o 'cust ext=ogg oggenc -o %f -'.

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

Если используете cueprint, то cuetag в системе тоже должен быть. А он умеет VorbisComment.

AITap ★★★★★
()

Не интересно: есть промежуточный WAV, а oggenc кодироует в ogg прямо из FLAC.

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

Судя по тому, что «shnsplit -o flac» разделяет один большой flac на несколько маленьких дольше, чем oggenc кодирует маленькие flac в ogg, это костыльная программа с промежуточным WAV.

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

да, всегда ей и пользуюсь и ещё soundKonverter, я бы не стал такое дело запускать на скриптах, предлагаю тс сделать там rm -rf запихать в deb, rpm, etc и распространять.

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

Самописных скриптах потому что лень изучать консольные утилиты к этому делу.

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

Вообще-то, если на макбуке стоит что-то, кроме макоси, хозяин - явно не в себе! Это называется - выкидывание денег на ветер.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от amorpher

Ты думаешь, если бы ВВП предложили вместо макбука точно такой же, но в 3 раза дешевле, он бы согласился? Сильно сомневаюсь... Если они там диваны по 15млн.р. за штучку покупают...

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

>если бы ВВП предложили вместо макбука точно такой же, но в 3 раза дешевле

Там не спрашивают никого, просто обеспечивают. Поверь.

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