Minulla on koko albumin flac ja sille viittatiedosto. Kuinka voin jakaa tämän flaciksi kappaletta kohti?

Olen ”KDE-käyttäjä”, joten haluaisin mieluummin KDE / Qt-tavan. Haluaisin nähdä myös komentorivin ja muut graafisen käyttöliittymän vastaukset, mutta ne eivät ole ensisijainen menetelmäni.

Kommentit

Vastaa

Shnsplit voi lukea vihjetiedoston suoraan, mikä tarkoittaa myös, että se voi käyttää muita vihjeitä sisältäviä tietoja (ei vain katkaisupisteitä) ja luoda kauniimpia tiedostonimiä kuin split-*.flac:

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

Myönnetty, tämä vaikeuttaa cuetag.sh: n käyttöä, jos alkuperäinen flac-tiedosto on samassa hakemistossa.

Kommentit

  • Debianin muut käyttäjät: sudo apt-get install cuetools shntool
  • Haluat todennäköisesti myös merkitse tiedostot tunnisteella cuetag file.cue [0-9]*.flac
  • Tarvitsin myös: sudo apt-get install flac
  • cuetools riippuu jo flac, joten…
  • Debian 10: ssä on vika, jossa on 24 bittiä flaceja. Se ei jakanut ’. Se toimii kuitenkin hyvin 16-bittisissä tiedostoissa.

Vastaa

Tiedän vain CLI-tavan. Tarvitset cuetools-työkalun ja shntool-työkalun.

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

Kommentit

  • Kiitos tästä Kambuksesta. Olen ’ käyttänyt cuebreakpoints file.cue | shnsplit -o flac file.flac pitkään. Toinen bitti auttaa paljon!
  • cuetag näyttää rikkovan välilyöntejä sisältävillä tiedostonimillä, mutta poistettuaan se toimi.

Vastaus

Flacon on intuitiivinen avoimen lähdekoodin käyttöliittymä, joka täsmälleen näin: jaa FLAC CUE: lla.

Flacon poimii yksittäiset raidat yhdestä isosta äänitiedostosta, joka sisältää koko musiikkialbumin, ja tallentaa ne erillisenä äänenä. tiedostot. Tätä varten se käyttää tietoja asianmukaisesta CUE-tiedostosta.

Se tukee muun muassa:

Tuetut tulomuodot: WAV, FLAC, APE, WavPack, True Audio (TTA).

Tuetut ulostuloformaatit: FLAC, WAV, WavPack, AAC, OGG tai MP3.

CUE-tiedostojen automaattinen merkistöjen tunnistus.

Voit käyttää sitä vain avaamalla *.cue tiedosto Flaconin kanssa. Sen pitäisi sen jälkeen automaattisesti tunnistaa iso *.flac -tiedosto (jos ei, voit määrittää tämän manuaalisesti), ja sitten sinun tulisi valita Flac-tulostusmuoto (ja valinnaisesti määrittää kooderi) ja aloittaa muuntamisprosessi.

Flacon v5.4.0

kommentit

  • tervetuloa Unixiin & Linux Stack Exchange! Vaikka tämä voi teoriassa vastata kysymykseen, olisi parempi sisällyttää vastauksen olennaiset osat tähän ja antaa linkki viitteeksi.
  • päivitetty edelleen vuonna 2017
  • En halua ’ käyttää käyttöliittymää asioihin, joita voin tehdä terminaalissa, mutta kamppailin albumin kanssa, ja tämä oli ainoa tapa jakaa tiedostot. Ansaitset oluen nyt mies

Vastaa

jos käytetään korkealaatuisia tiedostoja, shnsplit tekee mielellään virheitä ulos

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

onneksi flac-binaarituki tukee –skip = mm: ss.ss ja –until = mm: ss.ss, jotta komentosarja voi käyttää tällaiset cuebreakpointit:

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

Kommentit

  • Tämä on ainoa menetelmä, joka toimi minulle.

vastaus

Jos olet asettanut vihjeen käyttämään k3b tiedostotyypin asetuksissa k3b jakaa tiedoston automaattisesti, jos avaat vihjetiedoston ja annat sinun repäistä uudelleen.

Vastaa

On projekti, joka toimii useilla syötetiedostoilla: split2flac

Lähettäjä projektin kuvaus:

split2flac jakaa yhden suuren APE / FLAC / TTA / WV / WAV-äänikuvan (tai kokoelman tällaisia tiedostoja) , rekursiivisesti) CUE-arkin avulla FLAC / M4A / MP3 / OGG_VORBIS / WAV-kappaleiksi, joissa on koodaus, uudelleennimeäminen, merkkilevyn merkintämuunnos, albumin kansikuvat. Se käyttää myös määritystiedostoa, joten sinun ei tarvitse antaa joka kerta paljon argumentteja, vain syötetiedosto. Pitäisi toimia missä tahansa POSIX-yhteensopivassa kuoressa.

Vastaa

Löysin mac (joka on komento, jota shntool käytetään APE-tiedostojen dekoodaamiseen) on vähemmän suvaitsevainen kuin ffmpeg jos lähdetiedosto sisältää pieniä virheitä.

Normaalisti ffmpeg muuntaa tiedoston edelleen kokonaan, kun taas mac heittää todennäköisesti virheen käsittelyn aikana.

Joten päädyin kirjoittamaan komentosarjan APE-tiedoston jakamiseksi jäsentämällä CUE-tiedoston ja muuntamalla APE-tiedosto FLAC-tiedostoiksi, jotka on eroteltu otsikoilla ffmpeg:

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

Kommentit

  • Haluat ehkä muuttaa if os.path.isfile(tmpfile) arvoksi if tmpfile != filename and os.path.isfile(tmpfile) välttää alkuperäisen tiedoston poistaminen virheestä.
  • Kappaleen esittäjän asettamisen edellytyksen on oltava, jos len(records)>0.

Vastaus

shntool Ubuntu 14.04

snhtool puuttuu mac (Apinan äänikonsoli) suoritettava riippuvuus, ja ainoa paketti, jonka löysin, oli flacon PPA: ssa:

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 on shntool -käyttöliittymä, mutta se sisältää kaikki sen koodekit tarvitsee … muuten sain virheen:

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 

Vastaa

Täällä on PHP-komentosarja:

 <?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); }  

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *