나는 완전한 앨범 flac와 그것을위한 큐 파일을 가지고있다. 이것을 트랙마다 플랙으로 나누려면 어떻게해야합니까?
저는 KDE 사용자이므로 KDE / Qt 방식을 선호합니다. 커맨드 라인과 다른 GUI 답변도보고 싶지만 선호하는 방법은 아닙니다.
나는 완전한 앨범 flac와 그것을위한 큐 파일을 가지고있다. 이것을 트랙마다 플랙으로 나누려면 어떻게해야합니까?
저는 KDE 사용자이므로 KDE / Qt 방식을 선호합니다. 커맨드 라인과 다른 GUI 답변도보고 싶지만 선호하는 방법은 아닙니다.
답변:
Shnsplit은 큐 파일을 직접 읽을 수 있습니다. 이는 또한 중단 점뿐만 아니라 큐 파일에서 다른 데이터에 액세스하여 'split-*. flac'보다 멋진 파일 이름을 생성 할 수 있음을 의미합니다.
shnsplit -f file.cue -t %n-%t -o flac file.flac
원래 flac 파일이 같은 디렉토리에 있으면 cuetag.sh를 사용하기가 더 어려워집니다.
sudo apt-get install cuetools shntool
cuetag file.cue [0-9]*.flac
sudo apt-get install flac
나는 CLI 방식 만 알고 있습니다. cuetools와 shntool이 필요합니다.
cuebreakpoints file.cue | shnsplit -o flac file.flac
cuetag.sh file.cue "split-*".flac
cuebreakpoints file.cue | shnsplit -o flac file.flac
오랫동안 사용해 왔습니다 . 두 번째 비트는 많은 도움이 될 것입니다!
cuetag
공백이 포함 된 파일 이름을 깰 것으로 보이지만 제거 한 후에 효과가 있습니다.
Flacon 은 직관적 인 오픈 소스 GUI로서 FLAC를 CUE로 분할합니다.
Flacon은 전체 음악 앨범을 포함하는 하나의 큰 오디오 파일에서 개별 트랙을 추출하여 별도의 오디오 파일로 저장합니다. 이를 위해 적절한 CUE 파일의 정보를 사용합니다.
그것은 무엇보다도 지원합니다 :
지원되는 입력 형식 : WAV, FLAC, APE, WavPack, True Audio (TTA).
지원되는 형식 : FLAC, WAV, WavPack, AAC, OGG 또는 MP3.
CUE 파일에 대한 자동 문자 세트 감지.
사용하려면 *.cue
Flacon으로 파일을 열면됩니다. 그런 다음 큰 *.flac
파일 을 자동으로 감지하고 (그렇지 않은 경우 수동으로 지정할 수 있음) Flac 출력 형식을 선택하고 (선택적으로 인코더를 구성) 변환 프로세스를 시작해야합니다.
고품질 파일을 사용하는 경우 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
k3b
파일 유형 설정에서 사용하도록 큐를 설정 한 k3b
경우 큐 파일을 열면 파일이 자동으로 분할되어 다시 리핑 할 수 있습니다.
여러 입력 파일에 대해 작동하는 프로젝트가 있습니다. split2flac
프로젝트 설명에서 :
split2flac는 CUE 시트와 함께 하나의 큰 APE / FLAC / TTA / WV / WAV 오디오 이미지 (또는 이러한 파일 모음을 재귀 적으로)를 FLAC / M4A / MP3 / OGG_VORBIS / WAV 트랙으로 태깅, 이름 변경, 큐 시트의 문자 세트 변환, 앨범 표지 이미지. 또한 구성 파일을 사용하므로 매번 많은 인수를 전달할 필요없이 입력 파일 만 전달하십시오. POSIX 호환 쉘에서 작동해야합니다.
내가 발견 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)
if os.path.isfile(tmpfile)
하는 if tmpfile != filename and os.path.isfile(tmpfile)
오류에 대한 원본 파일을 삭제하지 않도록.
len(records)>0
.
shntool
우분투 14.04에서
snhtool
mac
(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
flacon
에 대한 GUI shntool
이지만 필요한 모든 코덱과 함께 제공됩니다. 그렇지 않으면 오류가 발생했습니다.
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