Van egy teljes albumlemezem és egy jelzőfájlom hozzá. Hogyan tudom ezt felosztani sávonként flac-ra?

KDE felhasználó vagyok, ezért inkább egy KDE / Qt módot szeretnék. Szeretnék látni parancssori és egyéb GUI válaszokat is, de ezek nem az én preferált módszerem.

Megjegyzések

Válasz

Az Shnsplit képes közvetlenül olvasni egy jelzőfájlt, ami azt is jelenti, hogy hozzáférhet a jelzőfájl többi adatához (nem csak a töréspontokhoz), és szebb fájlneveket generál, mint a split-*.flac:

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

Megengedett, ez megnehezíti a cuetag.sh használatát, ha az eredeti flac fájl ugyanabban a könyvtárban található.

Megjegyzések

  • Debian felhasználók: sudo apt-get install cuetools shntool
  • Valószínűleg Ön is szeretné címkézze fel a fájlokat a következővel: cuetag file.cue [0-9]*.flac
  • Szükségem volt még: sudo apt-get install flac
  • a cuetools már függ flac, tehát…
  • A Debian 10-en van egy hiba 24 bites flac-okkal. ‘ nem lett felosztva. Pedig 16 bites fájlokon jól működik.

Válasz

Csak CLI módot ismerek. Szüksége lesz cuetools-ra és shntool-ra.

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

Megjegyzések

  • Köszönjük ezt a Kambust. ‘ régóta használom a cuebreakpoints file.cue | shnsplit -o flac file.flac -et. A 2. bit sokat segít!
  • cuetag úgy tűnik, hogy megtörik a szóközt tartalmazó fájlneveken, de azok eltávolítása után bevált.

Válasz

Flacon egy intuitív nyílt forráskódú grafikus felhasználói felület, amely nem pontosan ez: ossza fel a FLAC-ot egy CUE-val.

A Flacon kivonja az egyes zeneszámokat egy nagy hangfájlból, amely az egész zenei albumot tartalmazza, és külön hangként menti őket. fájlokat. Ehhez a megfelelő CUE fájl adatait használja fel.

Többek között támogatja:

Támogatott bemeneti formátumok: WAV, FLAC, APE, WavPack, True Audio (TTA).

Támogatott kimeneti formátumok: FLAC, WAV, WavPack, AAC, OGG vagy MP3.

Automatikus karakterkészlet-észlelés CUE fájlokhoz.

A használatához csak a *.cue fájl a Flaconnal. Ezután automatikusan észlelnie kell a nagy *.flac fájlt (ha nem, akkor ezt manuálisan is megadhatja), majd válassza a Flac kimeneti formátumot (és opcionálisan konfigurálja a kódolót), és indítsa el a átalakítási folyamat.

Flacon v5.4.0

Megjegyzések

  • Üdvözöljük a Unix & Linux Stack Exchange-hez! Noha ez elméletileg megválaszolhatja a kérdést, előnyösebb lenne , ha a válasz lényeges részeit ide illesztené, és megadná a hivatkozást.
  • még mindig frissült 2017-ben
  • nem szeretem a felhasználói felületet használni olyan dolgokhoz, amelyeket a terminálon megtehetek, de egy albummal küzdöttem, és csak ez volt a fájlok felosztásának módja. Megérdemel egy sört most ember

Válasz

ha kiváló minőségű fájlokat használnak, az shnsplit boldogan hibázik ki

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

szerencsére a flac binárisan támogatja a –skip = mm: ss.ss és –until = mm: ss.ss fájlokat, így egy szkript használhatja Ilyen cuebreakpointok:

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

Megjegyzések

  • Ez az egyetlen módszer, ami nekem bevált.

Válasz

Ha be van állítva, hogy a k3b szót használja a fájltípus beállításaiban a k3b automatikusan fel fogja osztani a fájlt, ha megnyitja a jelzőfájlt, és lehetővé teszi az újrarippelést.

Válasz

Van egy projekt, amely több bemeneti fájlhoz is használható: split2flac

a projekt leírása:

a split2flac feloszt egy nagy APE / FLAC / TTA / WV / WAV hangképet (vagy ilyen fájlok gyűjteményét) , rekurzív módon) a CUE lapdal FLAC / M4A / MP3 / OGG_VORBIS / WAV sávokba címkézéssel, átnevezéssel, a jelző lap, karakterkészlet átalakításával, album borító képeivel. Konfigurációs fájlt is használ, így nem kell minden alkalommal sok argumentumot megadni, csak egy bemeneti fájlt. Bármely POSIX-kompatibilis héjban működnie kell.

Válasz

Találtam A mac (amely az a parancs, amelyet shntool használt az APE fájlok dekódolásához) sokkal kevésbé toleráns, mint a / div> ha a forrásfájl kisebb hibákat tartalmaz.

Normál esetben a ffmpeg továbbra is teljesen konvertálja a fájlt, míg a mac valószínűleg hibát vet a feldolgozás során.

Így végül egy szkriptet írtam az APE fájl felosztására a CUE fájl elemzésével és az APE fájl FLF fájlokká konvertálásával címekkel elválasztva az ffmpeg segítségével:

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

Megjegyzések

  • Érdemes megváltoztatni a if os.path.isfile(tmpfile) értéket if tmpfile != filename and os.path.isfile(tmpfile) az eredeti fájl hibás törlésének elkerülése érdekében.
  • A műsorszám-előadó beállításának feltétele a len(records)>0.

Válasz

shntool az Ubuntu 14.04

snhtool hiányzik a mac (Majom audio konzol) futtatható függőség, és egyetlen csomagot találtam a flacon PPA-ban:

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 egy GUI a shntool fájlhoz, de az összes vele együtt lévő kodekkel együtt szüksége van … különben a hibát kaptam:

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 

Válasz

Itt egy PHP szkript:

 <?php $s_cue = $argv[1]; $a_cue = file($s_cue); $n_row = -1; foreach ($a_cue as $s_row) { $s_trim = trim($s_row); $a_row = str_getcsv($s_trim, " "); if (preg_match("/^FILE\s/", $s_row) == 1) { $s_file = $a_row[1]; } if (preg_match("/^\s+TRACK\s/", $s_row) == 1) { $n_row++; $a_table[$n_row]["track"] = $a_row[1]; } if (preg_match("/^\s+TITLE\s/", $s_row) == 1) { $a_table[$n_row]["title"] = $a_row[1]; } if (preg_match("/^\s+PERFORMER\s/", $s_row) == 1) { $a_table[$n_row]["artist"] = $a_row[1]; } if (preg_match("/^\s+INDEX\s/", $s_row) == 1) { $s_dur = $a_row[2]; $a_frame = sscanf($s_dur, "%d:%d:%d", $n_min, $n_sec, $n_fra); $n_index = $n_min * 60 + $n_sec + $n_fra / 75; $a_table[$n_row]["ss"] = $n_index; if ($n_row > 0) { $a_table[$n_row - 1]["to"] = $n_index; } } } $a_table[$n_row]["to"] = 10 * 60 * 60; foreach ($a_table as $m_row) { $a_cmd = [ "ffmpeg", "-i", $s_file, "-ss", $m_row["ss"], "-to", $m_row["to"], "-metadata", "artist=" . $m_row["artist"], "-metadata", "title=" . $m_row["title"], "-metadata", "track=" . $m_row["track"], $m_row["track"] . " " . $m_row["title"] . ".m4a" ]; $a_esc = array_map("escapeshellarg", $a_cmd); $s_esc = implode(" ", $a_esc); system($s_esc); }  

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük