Ubuntu 16.04 Xenial Xerus
Ubuntu 14.04 Trusty Tahr
Ubuntu 12.04 Precise Pangolin
abcde (A Better CD Encoder) ist ein CD-Ripper für die Kommandozeile. Audio-CDs können ausgelesen und die Tracks anschließend in die Formate FLAC, MP3, OGG (Vorbis) und WAV kodiert werden. Metadaten wie Interpret, Titel, Album usw. können vom Free DB CDDB Server heruntergeladen und bearbeitet werden.
Das Programm xcfa erleichtert durch eine grafische Oberfläche den Umgang mit abcde und bietet darüber hinaus eine Umwandlung zwischen verschiedenen Audio-Formaten. Ein weiteres Programm zum akkuraten Rippen ist Rubyripper, das ebenfalls eine grafische Oberfläche zur Verfügung stellt.
Um das Programm zu installieren, benötigt man das Paket [1]:
abcde (universe)
heirloom-mailx (universe, Zur Übermittlung von Daten an die Compact Disc Database)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install abcde heirloom-mailx
sudo aptitude install abcde heirloom-mailx
sowie die gewünschten Codecs:
flac (verlustfreier Codec zur Archivierung, siehe FLAC)
lame (multiverse, für MP3)
mkcue (universe, zum Anlegen eines Cuesheets (optional))
mp3gain (universe, Normalisierung (optional))
speex (universe, für Sprache, siehe Speex)
vorbis-tools (für OGG)
vorbisgain (Fügt Ogg Vorbis-Dateien Replay Gain Lautstärke-Tags hinzu (optional))
mit apturl
Paketliste zum Kopieren:
sudo apt-get install flac lame mkcue mp3gain speex vorbis-tools vorbisgain
sudo aptitude install flac lame mkcue mp3gain speex vorbis-tools vorbisgain
Sofern ID3-Tags geschrieben werden sollen (empfehlenswert), zusätzlich:
id3 (universe, für ID3v1.x-Tags)
id3v2 (universe, für ID3v2.0-Tags)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install id3 id3v2
sudo aptitude install id3 id3v2
Nach erfolgreicher Installation kann das Programm aus dem Terminal mit dem Befehl abcde
[2] gestartet werden:
abcde
Ausgabe ist:
Grabbing entire CD - tracks: 01 02 03 04 05 06 07 08 09 10 11 12 13 ... Grabbing track 01: Warty... cdparanoia III release 10.2 (September 11, 2008) Ripping from sector 0 (track 1 [0:00.00]) to sector 18573 (track 1 [4:07.48]) outputting to /home/marc/abcde.d10d3d0e/track01.wav (== PROGRESS == [ > | 003530 00 ] == :-) . ==)
In der Grundeinstellung werden alle Stücke der CD mit "cdparanoia
" ausgelesen, in das Format .ogg umgewandelt und die entsprechenden ID3-Tags nach einer Datenbankabfrage erstellt. Die .wav-Dateien werden nach dem Prozess wieder gelöscht. Über entsprechende Konfiguration der abcde.conf kann dies verändert werden.
Einzelne Tracks (z.B. 1,2,3,5 und 11) lassen sich durch Angabe der Tracknummern auslesen. [5] Etwaige Optionen (z.B. -M
) sind vor den Tracks zu setzen:
abcde 1-3 5 11
Um alle Tracks einer CD in eine Datei zu kodieren:
abcde -1
Möchte man zusätzlich auch ein Cuesheet der CD anlegen :
abcde -1 -M
Weitere Möglichkeiten sind den Manpages zu entnehmen.
Die Konfiguration des Programms kann systemweit unter /etc/abcde.conf in einem Editor [3] und den entsprechenden Rechten [4] verändert werden. Daneben besteht auch die Möglichkeit, im Homeverzeichnis des aktuellen Benutzers eine Konfigurationsdatei zu erstellen, die die systemweiten Einstellungen überschreibt. Dazu kopiert man die systemweiten Einstellungen [5]:
cp /etc/abcde.conf ~/.abcde.conf
und passt diese den eigenen Wünschen an. Die Datei ist sehr gut dokumentiert und lässt eine Vielzahl von Änderungen zu. Neben der Bitrate, dem Datenbankserver, Speicherpfaden, Laufwerken gibt es viele Anpassungsmöglichkeiten. Überflüssige Zeilen können problemlos entfernt werden.
Der zu verwendende CDDB-Server kann verändert sowie einige Einstellungen vorgenommen werden:
# CDDB options # If you wish to use a different CDDB server, edit this line. # If you just wanted to use a proxy server, just set your http_proxy # environment variable – wget will use it correctly. CDDBURL=“http://freedb.freedb.org/~cddb/cddb.cgi“
Alternative Server | |
Server | Adresse |
gnudb.org | http://gnudb.gnudb.org/~cddb/cddb.cgi |
TrackType.org | http://freedb2.org/~cddb/cddb.cgi |
Das Ausgabeformat der Musikstücke wird unter dem Punkt OUTPUTTYPE
festgelegt. OUTPUTTYPE=mp3
erstellt .mp3-Dateien:
# OUTPUTTYPE can be either "ogg", "mp3", "flac" or "spx", or a combination # of them separated with ",": "ogg,mp3". OUTPUTTYPE=mp3
Sofern die Stücke in mehreren Formaten abgelegt werden sollen, kann man dies auch kombinieren (z.B. OUTPUTTYPE=ogg,mp3
).
Die Zielverzeichnisse können verändert werden. In diesem Beispiel werden die .mp3-Dateien nach ~/Musik kopiert:
# If you’d like to make a default location that overrides the current # directory for putting mp3’s, uncomment this. OUTPUTDIR="$HOME/Musik"
Einstellungen zu MP3, OGG Vorbis und Co. sind im entsprechenden Abschnitt zu ändern.
Für mp3-Dateien gibt es drei Einstellungen: --preset medium
(normal), --preset standard
(besser) und --preset extreme
(sehr hoch):
# MP3: LAMEOPTS='--preset standard'
Die Befehle für die Bitrate bei OGG weichen etwas von der MP3-Kodierung ab. -q 1
ist dabei die kleinste, -q 10
die höchste Rate. -q 6
entspricht dabei einer Rate von ungefähr 180 KB/s.
# Ogg: OGGENCOPTS='-q 6'
Wünscht man eine führende Null in der Titelnummer, ändert man das sogenannte track padding wie folgt ab:
# Track padding: force abcde to pad tracks using 0, so every song uses a two # digit entry. If set to "y", even a single song encoding outputs a file like # 01.my_song.ext PADTRACKS=y
Sofern in den Dateinamen Leerzeichen statt Unterstrichen verwendet werden, sollte man folgende Änderung vornehmen:
# Custom filename munging: # By default, abcde will do the following to CDDB data to get a useful # filename: # * Translate colons to a space and a dash for Windows compatibility # * Eat control characters, single quotes, and question marks # * Translate spaces and forward slashes to underscores # To change that, redefine the mungefilename function. # mungefilename recieves the CDDB data (artist, track, title, whatever) # as $1 and outputs it on stdout. #mungefilename () #{ # echo "$@" | sed s,:,\ -,g | tr \ / \__ | tr -d \'\"\?\[:cntrl:\] #}
Unter diesen Block folgende Zeilen anhängen:
mungefilename () { echo "$@" | sed s,:,\ -,g | tr / \__ | tr -d \'\"\?\[:cntrl:\] }
Tastenkürzel | |
Taste(n) | Funktion |
1 | Sind mehrere Einträge in der Datenbank vorhanden kann der gewünschte Eintrag gewählt werden z.B. 2 |
Q | Gibt es mehr als 3 Einträge verläßt man so die Vorschau und kann anschließend den Eintrag auswählen. |
Mit einer Raute (#) auskommentierte Zeilen können entfernt werden.
Zum Erstellen von Hörbüchern in 128 kBit/s:
# ----------------------$HOME/.abcde.conf---------------------- # # # Beispielkonfiguration für die Konvertierung von # Hörbüchern als MP3 mit einer Bitrate von 128 kBit/s # # http://wiki.ubuntuusers.de/abcde # # ------------------------------------------------------------- # # # Aufruf um die komplette CD in eine einzige Datei zu kodieren # ------------------------------------------------------------- # # abcde -1 # # # System defaults for abcde version 2.2.x # Nothing in this file is uncommented by default. # # If you wish to override these system-wide settings, create your own # .abcde.conf file in your home directory. # # # CDDB options # If you wish to use a different CDDB server, edit this line. # If you just wanted to use a proxy server, just set your http_proxy # environment variable - wget will use it correctly. # CDDBURL="gnudb.gnudb.org/~cddb/cddb.cgi" # CDDBURL="freedb2.org/~cddb/cddb.cgi" CDDBURL="http://freedb.freedb.org/~cddb/cddb.cgi" # The CDDB protocol level. # Right now 5 is latin1 output and 6 is UTF8 encoding. CDDBPROTO=6 # The CDDB protocol requires hello information, including a valid username # and hostname. If you feel paranoid about giving away such info, edit this # line - the format is username@hostname. HELLOINFO="`whoami`@`hostname`" # This controls the email address CDDB changes are submitted to. #CDDBSUBMIT=freedb-submit@freedb.org # The following options control whether or not fetched CDDB entries # are cached locally in $CDDBLOCALDIR CDDBCOPYLOCAL="n" CDDBLOCALDIR="$HOME/.cddb" CDDBLOCALRECURSIVE="n" # If NOSUBMIT is set to y, then abcde will never prompt asking if you # wish to submit your edited cddb file. NOSUBMIT=n # If NOCDDBQUERY is set to y, then abcde will never even try to access # the CDDB server; running abcde will automatically drop you into a # blank cddb file to edit at your leisure. This is the same as the # -n option. NOCDDBQUERY=y implies NOSUBMIT=y. NOCDDBQUERY=n # Select here if you want to use the locally stored CDDB entries. # This is useful if you do a lot of editing to those CDDB entries. # Also, other tools like Grip store CDDB entries under $HOME/.cddb, # so they can be reused when ripping CDs. CDDBUSELOCAL="n" # List, separated with a comma, the fields we want the parsing function to # output. Defaults to YEAR and GENRE, for a complete list of fields provided by # CDDB. # The fields are not case sensitive. Actually, "y,g" will work as fine as "Y,G" # or "YEAR, GENRE" #SHOWCDDBFIELDS=year,genre # Specify the style of encoder to use here - # oggenc, vorbize - for OGGENCODERSYNTAX # lame, gogo, bladeenc, l3enc, xingmp3enc, mp3enc - for MP3ENCODERSYNTAX # flac - the only supported for FLACENCODERSYNTAX at the moment # speexenc - the only encoder for SPEEXENCODERSYNTAX # mppenc - encoder for MPPENCODERSYNTAX # default is a valid option for oggenc, lame, flac, speexenc and mppenc. # Currently this affects the default location of the binary, the variable # to pick encoder command-line options from, and where the options are # given. #MP3ENCODERSYNTAX=default #OGGENCODERSYNTAX=default #FLACENCODERSYNTAX=default #SPEEXENCODERSYNTAX=default #MPPENCODERSYNTAX=default #AACENCODERSYNTAX=default # Specify the syntax of the normalize binary here - so far only 'normalize' # is supported. #NORMALIZERSYNTAX=default # CD reader program to use - currently recognized options are 'cdparanoia', # 'icedax', 'cdda2wav', 'dagrab', 'cddafs' (Mac OS X only) and 'flac'. #CDROMREADERSYNTAX=cdda2wav # CUE reader syntax for the CUE reader program to use. # abcde supports 2 CUE modes: 'mkcue' and 'abcde.mkcue' so you can set the # MKCUE variable accordingly. The 'abcde.mkcue' uses an internal # implementation, without the need of an external program. #CUEREADERSYNTAX=default # Specify the program to convert a CUE sheet back to a CD disc ID for CDDB queries. # Select between '/path/to/cue2discid' (provided as an example) or # 'abcde.cue2discid', implemented internaly. #CUE2DISCID=abcde.cue2discid # Keep the wav files after encoding. Set it to "y" and remove "clean" from # the list of default actions, since we purge the temp directory as default. #KEEPWAVS=n # Track padding: force abcde to pad tracks using 0, so every song uses a two # digit entry. If set to "y", even a single song encoding outputs a file like # 01.my_song.ext PADTRACKS=y # Define if you want abcde to be non-interactive. # Keep in mind that there is no way to deactivate it right now in the command # line, so setting this option makes abcde to be always non-interactive. #INTERACTIVE=n # Specify 'nice'ness of the encoder, the CD reader and the distmp3 proc. # This is a relative 'nice'ness (that is, if the parent process is at a # nice level of 12, and the ENCNICE is set to 3, then the encoder will # run with an absolute nice value of 15. Note also, that setting these # to be empty will result in some default niceness increase (4 in tcsh # and 10 using the bsdutils' nice). #ENCNICE=10 #READNICE=10 #DISTMP3NICE=10 # Paths of programs to use #LAME=lame #TOOLAME=toolame #GOGO=gogo #BLADEENC=bladeenc #L3ENC=l3enc #XINGMP3ENC=xingmp3enc #MP3ENC=mp3enc #VORBIZE=vorbize #OGGENC=oggenc #FLAC=flac #SPEEXENC=speexenc #MPPENC=mppenc #AACENC=faac #ID3=id3 ID3V2=id3v2 #CDPARANOIA=cdparanoia #CDDA2WAV=icedax #CDDAFS=cp #CDDISCID=cd-discid #CDDBTOOL=cddb-tool #EJECT=eject #MD5SUM=md5sum #DISTMP3=distmp3 #VORBISCOMMENT=vorbiscomment #METAFLAC=metaflac #NORMALIZE=normalize-audio #CDSPEED=eject #VORBISGAIN=vorbisgain #MKCUE=mkcue #MKTOC=cdrdao #DIFF=diff # Options to call programs with: # If HTTPGET is modified, the HTTPGETOPTS options should also be defined # accordingly. If HTTPGET is changed, the default options will be set, # if HTTPGETOPTS is empty or not defined. #HTTPGET=wget # for fetch (FreeBSD): HTTPGETOPTS="-q -o -" # for wget: HTTPGETOPTS="-q -nv -O -" # for curl (MacOSX): HTTPGETOPTS="-f -s" #HTTPGETOPTS="-q -O -" # MP3: LAMEOPTS='-b 128' #TOOLAMEOPTS= #GOGOOPTS= #BLADEENCOPTS= #L3ENCOPTS= #XINGMP3ENCOPTS= #MP3ENCOPTS= # Ogg: #VORBIZEOPTS= #OGGENCOPTS= # FLAC: #FLACOPTS="-f" # Speex: #SPEEXENCOPTS= # MPP/MP+ (Musepack): # For the encoder options take a look at the manpage. Set them like this: # MPPENCOPTS='--xtreme' if you wish to set more options then: # MPPENCOPTS='--xtreme --skip 20 --fade 10' #MPPENCOPTS= # M4A/AAC #AACENCOPTS= #ID3OPTS= #ID3V2OPTS= CDPARANOIAOPTS="-Z" #CDDA2WAVOPTS= #CDDAFSOPTS="-f" #CDDBTOOLOPTS= #EJECTOPTS= #DISTMP3OPTS= #NORMALIZEOPTS= #CDSPEEDOPTS="-x" #CDSPEEDVALUE="" #MKCUEOPTS="" #MKTOCOPTS="" #DIFFOPTS="" #VORBISCOMMENTOPTS="-R" #METAFLACOPTS="--no-utf8-convert" #DIFFOPTS="" # Actions to take # Comma-separated list of one or more of the following: # cddb,cue,read,normalize,encode,tag,move,playlist,clean,default # encode implies read # normalize implies read # tag implies cddb,read,encode # move implies cddb,read,encode,tag # playlist implies cddb # An action can be added to the "default" action by specifying it along with # "default", without having to repeat the default ones: # ACTIONS=default,playlist # The default action list (referenced as "default") is defined in the following # comment: ACTIONS=cddb,read,encode,tag,move,clean # CD device you want to read from # It can be defined as a singletrack flac file, but since it might change from # file to file it makes little sense to define it here. #CDROM=/dev/cdrom # If we are using the IDE bus, we need CDPARANOIACDROMBUS defined as "d" # If we are using the ide-scsi emulation layer, we need to define a "g" #CDPARANOIACDROMBUS="d" # If you'd like to make a default location that overrides the current # directory for putting mp3's, uncomment this. OUTPUTDIR="$HOME/Musik/Hörspiele/" # Or if you'd just like to put the temporary .wav files somewhere else # you can specify that here WAVOUTPUTDIR=`pwd` # OUTPUTTYPE can be either "ogg", "mp3", "flac" or "spx", or a combination # of them separated with ",": "ogg,mp3". OUTPUTTYPE=mp3 # Output filename format - change this to reflect your inner desire to # organize things differently than everyone else :) # You have the following variables at your disposal: # OUTPUT, GENRE, ALBUMFILE, ARTISTFILE, TRACKFILE, and TRACKNUM. # Make sure to single-quote this variable. abcde will automatically create # the directory portion of this filename. # NOTICE: OUTPUTTYPE has been deprecated in the OUTPUTFORMAT string. # Since multiple-output was integrated we always append the file type # to the files. Remove it from your user defined string if you are getting # files like ".ogg.ogg". # '${OUTPUT}/${ARTISTFILE}--${ALBUMFILE}/${TRACKNUM}.${ARTISTFILE}--${TRACKFILE}' OUTPUTFORMAT='${ARTISTFILE}/${ALBUMFILE}/${TRACKNUM} - ${TRACKFILE}' # Like OUTPUTFORMAT but for Various Artists discs. #VAOUTPUTFORMAT='Various-${ALBUMFILE}/${TRACKNUM}.${ARTISTFILE}-${TRACKFILE}' # Like OUTPUTFORMAT and VAOUTPUTFORMAT but for the ONEFILE rips. #ONETRACKOUTPUTFORMAT=$OUTPUTFORMAT #VAONETRACKOUTPUTFORMAT=$VAOUTPUTFORMAT # Define how many encoders to run at once. This makes for huge speedups # on SMP systems. Defaults to 1. Equivalent to -j. #MAXPROCS=2 # Support for systems with low disk space: # n: Default parallelization (read entire CD in while encoding) # y: No parallelization (rip, encode, rip, encode...) #LOWDISK=n # If set to y, enables batch mode normalization, which preserves relative # volume differences between tracks of an album. #BATCHNORM=n # Enables nogap encoding when using the 'lame' encoder. #NOGAP=y # Set the playlist file location format. Uses the same variables and format # as OUTPUTFORMAT. If the playlist is specified to be in a subdirectory, it # will be created for you and the playlist will reference files from that # subdirectory. #PLAYLISTFORMAT='${ARTISTFILE}-${ALBUMFILE}.${OUTPUT}.m3u' # If you want to prefix every filename in a playlist with an arbitrary # string (such as 'http://you/yourstuff/'), use this option #PLAYLISTDATAPREFIX='' #Like PLAYLIST{FORMAT,DATAPREFIX} but for Various Artists discs: #VAPLAYLISTFORMAT='${ARTISTFILE}-${ALBUMFILE}.${OUTPUT}.m3u' #VAPLAYLISTDATAPREFIX='' #This will give the playlist CR-LF line-endings, if set to "y". #(some hardware players insist on CR-LF line-endings) #DOSPLAYLIST=n # Custom filename munging: # By default, abcde will do the following to CDDB data to get a useful # filename: # * Translate colons to a space and a dash for Windows compatibility # * Eat control characters, single quotes, and question marks # * Translate spaces and forward slashes to underscores # To change that, redefine the mungefilename function. # mungefilename recieves the CDDB data (artist, track, title, whatever) # as $1 and outputs it on stdout. #mungefilename () #{ # echo "$@" | sed s,:,\ -,g | tr \ / \__ | tr -d \'\"\?\[:cntrl:\] #} mungefilename () { echo "$@" | sed s,:,\ -,g | tr / \__ | tr -d \'\"\?\[:cntrl:\] } # Custom genre munging: # By default we just transform uppercase to lowercase. Not much of a fancy # function, with not much use, but one can disable it or just turn the first # Uppercase. #mungegenre () #{ # echo $CDGENRE | tr "[:upper:]" "[:lower:]" #} # Custom pre-read function # By default it does nothing. # You can set some things to get abcde function in better ways: # * Close the CD tray using eject -t (if available in eject and supported by # your CD device. # * Set the CD speed. You can also use the built-in options, but you can also # set it here. In Debian, eject -x and cdset -x do the job. # KEEP IN MIND that executables included in pre_read must be in your $PATH or # you have to define them with full /path/to/binary # Uncomment and substitute the ":" with your commands. #pre_read () #{ #: #} # Custom post-read function # By default it does nothing. # You can set some things to get abcde function in better ways: # * Store a copy of the CD TOC. # KEEP IN MIND that executables included in post_read must be in your $PATH or # you have to define them with full /path/to/binary # Uncomment and substitute the ":" with your commands. #post_read () #{ #: #} # post_encode # By default it does nothing. # You can set some things to get abcde function in better ways: # * Move the resulting directory over the network # * Compare results with a previously made run, for tests # KEEP IN MIND that executables included in post_encode must be in your $PATH or # you have to define them with full /path/to/binary # Uncomment and substitute the ":" with your commands. #post_encode () #{ #: #} # If you'd like to have abcde eject the cdrom after all the tracks have been # read, uncomment the following line. EJECTCD=y # To encode on the remote machines foo, bar, baz, quux, and qiix, as well as # on the local machine (requires distmp3 to be installed on local machine and # distmp3host to be installed and running on all remote machines - see README) #REMOTEHOSTS=foo,bar,baz,quux,qiix # Set to obtain some information about actions happening in the background # Useful if you have a slow network or CDDB servers seem unresponsive. #EXTRAVERBOSE=n
VorbisGain mit ogg verwenden:
OGGENCODERSYNTAX=oggenc OGGENC=oggenc VORBISGAIN=vorbisgain VORBISGAINOPTS='-a' ACTIONS=cddb,playlist,read,encode,replaygain,tag,move,clean BATCHNORM=y OUTPUTTYPE=ogg
Weitere Möglichkeiten zur Erstellung von Hörbüchern bieten die Skripte Book-To-MP3 und pdf2mp3.
Erhält man eine Fehlermeldung XY is not in your path
, so hilft es, das genannte Paket zu installieren. Nachfolgend am Beispiel von eyeD3:
[ERROR] abcde: eyeD3 is not in your path. [INFO] Define the full path to the executable if it exists on your system.
Abhilfe schafft dann die Installation von eyeD3:
sudo apt-get install eyed3
abcde: Command Line Music CD Ripping for Linux - Konfigurationen für MP3, OGG, FLAC, Musepack, AAC, Opus und Speex
CDs rippen unter Ubuntu mit abcde - Blogbeitrag, 06/2010
Leerzeichen statt Unterstrich - Forumsdiskussion
Music was my first love... - LinuxUser 04/2003
CDs rippen Übersichtsartikel
Diese Revision wurde am 4. Juni 2016 19:27 von Heinrich_Schwietering erstellt.