Bir flac'ı ipucuyla nasıl bölerim?


Yanıtlar:


72

Shnsplit bir işaret dosyasını doğrudan okuyabilir, bu da işaret dosyasına diğer verilere erişebileceği anlamına gelir (yalnızca kesme noktaları değil) ve 'split - *. Flac' dizininden daha güzel dosya adları oluşturabilir:

shnsplit -f file.cue -t %n-%t -o flac file.flac

Verilen, orijinal flac dosyası aynı dizinde ise, cuetag.sh kullanılmasını zorlaştırır.


17
Diğer debian kullanıcıları:sudo apt-get install cuetools shntool
jwbensley

13
Muhtemelen dosyaları da etiketlemek istersinizcuetag file.cue [0-9]*.flac
August Karlstrom

6
Ayrıca ihtiyacım vardı:sudo apt-get install flac
becko

22

Sadece bir CLI yolu biliyorum. Cuetools ve shntool'a ihtiyacınız olacak.

cuebreakpoints file.cue | shnsplit -o flac file.flac
cuetag.sh file.cue "split-*".flac

2
Bunun için teşekkürler Kambus. Ben kullanıyorum cuebreakpoints file.cue | shnsplit -o flac file.flacuzun zamandır. 2. bit size çok yardımcı olacak!
boehj

1
cuetagBoşluk içeren dosya isimlerinde kırılıyor gibi görünüyor, ancak çıkardıktan sonra çalıştı.
scai

20

Flacon , tam olarak bunu yapan sezgisel bir açık kaynaklı GUI'dir: FLAC'yi CUE ile ayırma.

Flacon, tek tek parçaları tüm müzik albümünü içeren büyük bir ses dosyasından alır ve ayrı ses dosyaları olarak kaydeder. Bunu yapmak için uygun CUE dosyasındaki bilgileri kullanır.

Diğer şeylerin yanı sıra:

Desteklenen giriş formatları: WAV, FLAC, APE, WavPack, Gerçek Ses (TTA).

Desteklenen formatlar: FLAC, WAV, WavPack, AAC, OGG veya MP3.

CUE dosyaları için otomatik karakter seti algılama.

Kullanmak için *.cuedosyayı sadece Flacon ile açmanız gerekir . Daha sonra büyük *.flacdosyayı otomatik olarak algılamalı (eğer değilse, bunu manuel olarak belirleyebilirsiniz) ve ardından Flac çıktı formatını seçmeli (ve isteğe bağlı olarak kodlayıcıyı yapılandırmalısınız) ve dönüştürme işlemini başlatmalısınız.

Flacon v5.4.0


1
Unix ve Linux Stack Exchange'e Hoş Geldiniz! Bu soruyu teorik olarak cevaplayabilse de , cevabın temel kısımlarını buraya dahil etmek ve referans için bağlantıyı sağlamak tercih edilir.
slm

hala 2017'de güncellendi

6

yüksek kaliteli dosyalar kullanılıyorsa, shnsplit ile mutlu bir şekilde hata veriyor

shnsplit: error: m:ss.ff format can only be used with CD-quality files

Neyse ki flac binary --skip = mm: ss.ss ve --until = mm: ss.ss komutlarını destekler, böylece bir betik şöyle cuebreakpoints kullanabilir:

[..]
time[0]="00:00.00"
c=1
for ts in $(cuebreakpoints "${cue_file}"); do
    time[${c}]=${ts}
    c=$((c+1))
done
time[${c}]='-0'
for ((i=0;i<$((${#time[@]}-1));i++)); do
    trackno=$(($i+1))
    TRACKNUMBER="$(printf %02d ${trackno})"
    title="$(cueprint --track-number ${trackno} -t '%t' "${cue_file}")"
    flac --silent --exhaustive-model-search --skip=${time[$i]} --until=${time[$(($i+1))]} --tag=ARTIST="${ARTIST}" --tag=ALBUM="${ALBUM}" --tag=DATE="${DATE}" --tag=TITLE="${title}" --tag=TRACKNUMBER="${TRACKNUMBER}" "${aud_file}" --output-name="${TRACKNUMBER}-${title}.flac"
done

Bu benim için çalışan tek yöntemdir.
coffekid

3

Dosya türü dosyalarında kullanmak k3büzere ayarlanmış bir ipucunuz k3bvarsa, ipucu dosyasını açarsanız dosyayı otomatik olarak böler ve yeniden kopyalamanıza izin verir.


1

Birkaç girdi dosyası için işe yarayan bir proje var: split2flac

Proje tanımından:

split2flac, CUE sayfasıyla FLAC / M4A / MP3 / OGG_VORBIS / WAV izlerine etiketleme, yeniden adlandırma, karakter dizisi dönüşümü özelliklerine sahip büyük bir APE / FLAC / TTA / WV / WAV ses görüntüsünü (ya da tekrarlayan şekilde bir koleksiyonunu) böler, albüm kapağı görüntüleri. Ayrıca yapılandırma dosyasını kullanır, bu yüzden her seferinde çok fazla argüman iletmenize gerek kalmaz, sadece bir girdi dosyası olur. POSIX uyumlu herhangi bir kabukta çalışması gerekir.


1

APE dosyalarının kodunu çözmek için kullanılan mackomutun kaynak dosyasında küçük hatalar içeriyor shntoololmasından daha az hoşgörülü olduğunu buldum ffmpeg.

İşlem sırasında büyük olasılıkla bir hata ffmpegatarken normalde dosyayı hala tamamen dönüştürür mac.

Böylece, CUE dosyasını ayrıştırıp APE dosyasını ffmpeg kullanarak başlıklarla ayrılmış FLAC dosyalarına dönüştürerek APE dosyasını bölmek için bir komut dosyası yazdım:

#!/usr/bin/env python2.7

import subprocess as subp
import sys
import os
from os.path import splitext, basename
import random
import glob

records = []
filename = ""
album=''
alb_artist=''
codec = 'flac'
ffmpeg_exec = 'ffmpeg'
encodingList = ('utf-8','euc-kr', 'shift-jis', 'cp936', 'big5')

filecontent = open(sys.argv[1]).read()
for enc in encodingList:
    try:
        lines = filecontent.decode(enc).split('\n')
        encoding = enc
        break
    except UnicodeDecodeError as e:
        if enc == encodingList[-1]:
            raise e
        else:
            pass

for l in lines:
    a = l.split()
    if not a:
        continue
    if a[0] == "FILE":
        filename = ' '.join(a[1:-1]).strip('\'"')
    elif a[0]=='TRACK':
        records.append({})
        records[-1]['index'] = a[1]
    elif a[0]=='TITLE':
        if len(records)>0:
            records[-1]['title'] = ' '.join(a[1:]).strip('\'"')
        else:
            album =  ' '.join(a[1:]).strip('\'"')
    elif a[0]=='INDEX' and a[1]=='01':
        timea = a[2].split(':')
        if len(timea) == 3 and int(timea[0]) >= 60:
            timea.insert(0, str(int(timea[0])/60))
            timea[1] = str(int(timea[1])%60)
        times = '{0}.{1}'.format(':'.join(timea[:-1]), timea[-1])
        records[-1]['start'] = times
    elif a[0]=='PERFORMER':
        if len(records)>1:
            records[-1]['artist'] = ' '.join(a[1:]).strip('\'"')
        else:
            alb_artist = ' '.join(a[1:]).strip('\'"')

for i, j in enumerate(records):
    try:
        j['stop'] = records[i+1]['start']
    except IndexError:
        pass

if not os.path.isfile(filename):
    tmpname = splitext(basename(sys.argv[1]))[0]+splitext(filename)[1]
    if os.path.exists(tmpname):
        filename = tmpname
        del tmpname
    else:
        for ext in ('.ape', '.flac', '.wav', '.mp3'):
            tmpname = splitext(filename)[0] + ext
            if os.path.exists(tmpname):
                filename = tmpname
                break

if not os.path.isfile(filename):
    raise IOError("Can't not find file: {0}".format(filename))

fstat = os.stat(filename)
atime = fstat.st_atime
mtime = fstat.st_mtime

records[-1]['stop'] = '99:59:59'

if filename.lower().endswith('.flac'):
    tmpfile = filename
else:
    tmpfile = splitext(filename)[0] + str(random.randint(10000,90000)) + '.flac'

try:
    if filename != tmpfile:
        ret = subp.call([ffmpeg_exec, '-hide_banner', '-y', '-i', filename, 
            '-c:a', codec,'-compression_level','12','-f','flac',tmpfile])

        if ret != 0:
            raise SystemExit('Converting failed.')

    for i in records:
        output = i['index'] +' - '+ i['title']+'.flac'
        commandline = [ffmpeg_exec, '-hide_banner', 
        '-y', '-i', tmpfile,
        '-c', 'copy', 
        '-ss', i['start'], '-to', i['stop'],
        '-metadata', u'title={0}'.format(i['title']), 
        '-metadata', u'artist={0}'.format(i.get('artist', '')),
        '-metadata', u'performer={0}'.format(i.get('artist', '')),
        '-metadata', u'album={0}'.format(album), 
        '-metadata', 'track={0}/{1}'.format(i['index'], len(records)), 
        '-metadata', u'album_artist={0}'.format(alb_artist), 
        '-metadata', u'composer={0}'.format(alb_artist), 
        '-metadata', 'encoder=Meow', 
        '-write_id3v1', '1', 
        output]
        ret = subp.call(commandline)
        if ret == 0:
            os.utime(output, (atime, mtime))
finally:
    if os.path.isfile(tmpfile):
        os.remove(tmpfile)

Sen değiştirmek isteyebilirsiniz if os.path.isfile(tmpfile)için if tmpfile != filename and os.path.isfile(tmpfile)hata orijinal dosyayı silerek önlemek için.
wolfmanx

Parça sanatçısı ayarlama koşulu şöyle olmalıdır len(records)>0.
wolfmanx

1

shntool Ubuntu 14.04 tarihinde

snhtoolmac(Monkey's Audio Console) çalıştırılabilir bağımlılığı eksik ve bulabildiğim tek paket flaconPPA’daydı:

sudo add-apt-repository -y ppa:flacon
sudo apt-get update
sudo apt-get install -y flacon shntool
shntool split -f *.cue -o flac -t '%n - %p - %t' *.ape

flaconGUI shntool, ancak ihtiyaç duyduğu tüm codec bileşenleriyle birlikte geliyor ... aksi halde hatayı aldım:

shnsplit: warning: failed to read data from input file using format: [ape]
shnsplit:          + you may not have permission to read file: [example.ape]
shnsplit:          + arguments may be incorrect for decoder: [mac]
shnsplit:          + verify that the decoder is installed and in your PATH
shnsplit:          + this file may be unsupported, truncated or corrupt
shnsplit: error: cannot continue due to error(s) shown above
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.