it-swarm-ko.tech

플랩을 큐로 어떻게 분할합니까?

나는 완전한 앨범 flac와 그것을위한 큐 파일을 가지고있다. 이것을 트랙마다 flac으로 어떻게 나눌 수 있습니까?

저는 KDE 사용자이므로 KDE/Qt 방식을 선호합니다. 커맨드 라인과 다른 GUI 답변도보고 싶지만 선호하는 방법은 아닙니다.

75
xenoterracide

파일 유형 설정에서 k3b를 사용하도록 큐를 설정 한 경우 큐 파일을 열면 k3b가 파일을 자동으로 분할하여 다시 리핑 할 수 있습니다.

3
xenoterracide

Shnsplit은 큐 파일을 직접 읽을 수 있습니다. 이는 또한 중단 점뿐만 아니라 큐 파일에서 다른 데이터에 액세스하여 'split-*. flac'보다 멋진 파일 이름을 생성 할 수 있음을 의미합니다.

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

원래 flac 파일이 같은 디렉토리에 있으면 cuetag.sh를 사용하기가 더 어려워집니다.

79
Michael H

나는 CLI 방식 만 알고 있습니다. cuetools와 shntool이 필요합니다.

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

Flacon 는 직관적 인 오픈 소스 GUI로 FLAC를 CUE로 분할합니다.

Flacon은 전체 음악 앨범을 포함하는 하나의 큰 오디오 파일에서 개별 트랙을 추출하여 별도의 오디오 파일로 저장합니다. 이를 위해 적절한 CUE 파일의 정보를 사용합니다.

그것은 무엇보다도 지원합니다 :

지원되는 입력 형식 : WAV, FLAC, APE, WavPack, True Audio (TTA).

지원되는 형식 : FLAC, WAV, WavPack, AAC, OGG 또는 MP3.

CUE 파일에 대한 자동 문자 세트 감지.

사용하려면 Flacon으로 *.cue 파일 만 열면됩니다. 그런 다음 큰 *.flac 파일을 자동으로 감지 한 다음 (이 경우 수동으로 지정할 수 있음) Flac 출력 형식을 선택하고 (선택적으로 인코더를 구성) 변환 프로세스를 시작해야합니다.

Flacon v5.4.0

20
Yaze

고품질 파일을 사용하는 경우 shnsplit이

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

다행스럽게도 flac 바이너리는 --skip = mm : ss.ss 및 --until = mm : ss.ss를 지원하므로 스크립트는 다음과 같이 큐브 레이크 포인트를 사용할 수 있습니다.

[..]
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
6
peter_tux

소스 파일에 사소한 오류가있는 경우 mac (이것은 shntool이 APE 파일을 디코딩하는 데 사용되는 명령 임)가 ffmpeg보다 덜 관대하다는 것을 알았습니다.

일반적으로 ffmpeg은 (는) 여전히 파일을 완전히 변환하지만 mac은 (는) 처리 중에 오류를 발생시킬 가능성이 높습니다.

그래서 CUE 파일을 구문 분석하고 APE 파일을 ffmpeg를 사용하여 제목으로 구분 된 FLAC 파일로 변환하여 APE 파일을 분할하는 스크립트를 작성했습니다.

#!/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)
1
Meow

여러 입력 파일에 대해 작동하는 프로젝트가 있습니다. split2flac

프로젝트 설명에서 :

split2flac는 CUE 시트와 함께 하나의 큰 APE/FLAC/TTA/WV/WAV 오디오 이미지 (또는 이러한 파일 모음을 재귀 적으로)를 FLAC/M4A/MP3/OGG_VORBIS/WAV 트랙으로 태깅, 이름 변경, 큐 시트의 문자 세트 변환, 앨범 표지 이미지. 또한 구성 파일을 사용하므로 매번 많은 인수를 전달할 필요없이 입력 파일 만 전달합니다. POSIX 호환 쉘에서 작동해야합니다.

1
Paulo Fidalgo

shntool on 우분투 14.04

snhtoolmac (Monkey 's Audio Console) 실행 파일 종속성이 누락되었으며 찾을 수있는 유일한 패키지는 flacon PPA에 있습니다.

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

flaconshntool의 GUI이지만 필요한 모든 코덱과 함께 제공됩니다. 그렇지 않으면 오류가 발생했습니다.

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