ubuntuusers.de

abcde

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Wiki/Icons/terminal.png 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.

Installation

Um das Programm zu installieren, benötigt man das Paket [1]:

  • abcde (universe)

  • eyed3

Befehl zum Installieren der Pakete:

sudo apt-get install abcde eyed3 

Oder mit apturl installieren, Link: apt://abcde,eyed3

sowie die gewünschten Codecs:

  • flac (universe, verlustfreier Codec zur Archivierung, siehe FLAC)

  • lame (universe, für MP3)

  • mkcue (universe, zum Anlegen eines Cuesheets (optional))

  • speex (universe, für Sprache, siehe Speex)

  • vorbis-tools (universe, für OGG)

  • vorbisgain (universe, Fügt Ogg Vorbis-Dateien Replay Gain Lautstärke-Tags hinzu (optional))

Befehl zum Installieren der Pakete:

sudo apt-get install flac lame mkcue speex vorbis-tools vorbisgain 

Oder mit apturl installieren, Link: apt://flac,lame,mkcue,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)

Befehl zum Installieren der Pakete:

sudo apt-get install id3 id3v2 

Oder mit apturl installieren, Link: apt://id3,id3v2

Benutzung

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.

Konfiguration

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.

CDDB

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

Ausgabeformat

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).

Zielverzeichnis

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"

Bitrate

Einstellungen zu MP3, OGG Vorbis und Co. sind im entsprechenden Abschnitt zu ändern.

MP3

Für mp3-Dateien gibt es drei Einstellungen: --preset medium (normal), --preset standard (besser) und --preset extreme (sehr hoch):

# MP3:
LAMEOPTS='--preset standard'

OGG

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'

Leerzeichen und führende Null im Titel

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:\]
}

Bedienung

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.

Beispielkonfiguration

Mit einer Raute (#) auskommentierte Zeilen können entfernt werden:

# -----------------$HOME/.abcde.conf----------------- #
# 
#  A sample configuration file to convert music cds to 
#  MP3, Ogg Vorbis, FLAC, Musepack, AAC, WavPack, Opus,
#  Monkey's Audio (ape), True Audio, AC3 and mp2, 11 formats
#  at the same time! Using abcde version 2.7.2 release version.
# 
#   http://andrews-corner.org/linux/abcde/index.html
# -------------------------------------------------- #

# Encode tracks immediately after reading. Saves disk space, gives
# better reading of 'scratchy' disks and better troubleshooting of
# encoding process but slows the operation of abcde quite a bit:
LOWDISK=y

# Specify the method to use to retrieve the track information,
# the alternative is to specify 'musicbrainz':
CDDBMETHOD=cddb

# Make a local cache of cddb entries and then volunteer to use 
# these entries when and if they match the cd:
CDDBCOPYLOCAL="y"
CDDBLOCALDIR="$HOME/.cddb"
CDDBLOCALRECURSIVE="y"
CDDBUSELOCAL="y"

OGGENCODERSYNTAX=oggenc                   # Specify encoder for Ogg Vorbis
MP3ENCODERSYNTAX=lame                     # Specify encoder for MP3
FLACENCODERSYNTAX=flac                    # Specify encoder for FLAC
MPCENCODERSYNTAX=mpcenc                   # Specify encoder for Musepack
AACENCODERSYNTAX=fdkaac                   # Specify encoder for AAC
OPUSENCODERSYNTAX=opusenc                 # Specify encoder for Opus
WVENCODERSYNTAX=wavpack                   # Specify encoder for Wavpack
APENCODERSYNTAX=mac                       # Specify encoder for Monkey's Audio
TTAENCODERSYNTAX=tta                      # Specify encoder for True Audio
MP2ENCODERSYNTAX=twolame                  # Specify encoder for MP2
MKAENCODERSYNTAX=ffmpeg                   # Specify encoder for MKA (AC3 via FFmpeg)

OGGENC=oggenc                             # Path to Ogg Vorbis encoder
LAME=lame                                 # Path to MP3 encoder
FLAC=flac                                 # Path to FLAC encoder
MPCENC=mpcenc                             # Path to Musepack encoder
FDKAAC=fdkaac                             # Path to the AAC encoder
OPUSENC=opusenc                           # Path to Opus encoder
WVENC=wavpack                             # Path to WavPack encoder
APENC=mac                                 # Path to Monkey's Audio encoder
TTA=tta                                   # Path to True Audio encoder
TWOLAME=twolame                           # Path to MP2 encoder
FFMPEG=ffmpeg                             # Path to FFmpeg (AC3 via FFmpeg)

OGGENCOPTS='-q 6'                         # Options for Ogg Vorbis
LAMEOPTS='-V 2'                           # Options for MP3 
FLACOPTS='-s -e -V -8'                    # Options for FLAC
MPCENCOPTS='--extreme'                    # Options for Musepack
FDKAACENCOPTS='-p 2 -m 5 -a 1'            # Options for fdkaac
OPUSENCOPTS="--vbr --bitrate 128"         # Options for Opus
WVENCOPTS="-hx3"                          # Options for WavPack
APENCOPTS="-c4000"                        # Options for Monkey's Audio
TTAENCOPTS=""                             # Options for True Audio
TWOLAMENCOPTS="--bitrate 320"             # Options for MP2
FFMPEGENCOPTS="-c:a ac3 -b:a 448k"        # Options for MKA (AC3 via FFmpeg)

OUTPUTTYPE="ogg,mp3,flac,mpc,m4a,opus,wv,ape,tta,mp2,mka"  # Encode to 11 formats!

# The cd ripping program to use. There are a few choices here: cdda2wav,
# dagrab, cddafs (Mac OS X only) and flac. New to abcde 2.7 is 'libcdio'.
CDROMREADERSYNTAX=cdparanoia            
                                     
# Give the location of the ripping program and pass any extra options,
# if using libcdio set 'CD_PARANOIA=cd-paranoia'.
CDPARANOIA=cdparanoia  
CDPARANOIAOPTS="--never-skip=40"

# Give the location of the CD identification program:       
CDDISCID=cd-discid           
                               
# Give the base location here for the encoded music files.
OUTPUTDIR="$HOME/Music"               

# The default actions that abcde will take.
ACTIONS=cddb,playlist,read,encode,tag,move,clean

# Decide here how you want the tracks labelled for a standard 'single-artist',
# multi-track encode and also for a multi-track, 'various-artist' encode:
OUTPUTFORMAT='${OUTPUT}/${ARTISTFILE}-${ALBUMFILE}/${TRACKNUM}.${TRACKFILE}'
VAOUTPUTFORMAT='${OUTPUT}/Various-${ALBUMFILE}/${TRACKNUM}.${ARTISTFILE}-${TRACKFILE}'

# Decide here how you want the tracks labelled for a standard 'single-artist',
# single-track encode and also for a single-track 'various-artist' encode.
# (Create a single-track encode with 'abcde -1' from the commandline.)
ONETRACKOUTPUTFORMAT='${OUTPUT}/${ARTISTFILE}-${ALBUMFILE}/${ALBUMFILE}'
VAONETRACKOUTPUTFORMAT='${OUTPUT}/Various-${ALBUMFILE}/${ALBUMFILE}'

# Create playlists for single and various-artist encodes. I would suggest
# commenting these out for single-track encoding.
PLAYLISTFORMAT='${OUTPUT}/${ARTISTFILE}-${ALBUMFILE}/${ALBUMFILE}.m3u'
VAPLAYLISTFORMAT='${OUTPUT}/Various-${ALBUMFILE}/${ALBUMFILE}.m3u'

# This function takes out dots preceding the album name, and removes a grab
# bag of illegal characters. It allows spaces, if you do not wish spaces add
# in -e 's/ /_/g' after the first sed command.
mungefilename ()
{
  echo "$@" | sed -e 's/^\.*//' | tr -d ":><|*/\"'?[:cntrl:]"
}

MAXPROCS=2                                # Run a few encoders simultaneously
PADTRACKS=y                               # Makes tracks 01 02 not 1 2
EXTRAVERBOSE=2                            # Useful for debugging
COMMENT='abcde version 2.7.2'             # Place a comment...
EJECTCD=y                                 # Please eject cd when finished :-)

VorbisGain

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.

Problembehebung

eyed3.id3:WARNING: Invalid numeric genre

Tritt dieser Fehler auf so muss in der Datei .abcde.conf die folgende Zeile ergänzt [3] werden:

EYED3OPTS="--non-std-genres"

XY is not in your path

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 

eyed3.id3:WARNING: Non standard genre name: 255

Wenn kein passendes Genre übergeben wurde, setzt abcde es auf 255, was eyeD3 zu folgender Warnmeldung veranlassen kann:

Setting genre: 255
eyed3.id3:WARNING: Non standard genre name: 255

Dies tritt in den Versionen 0.8.x von eyeD3 auf. Welche Version aktiv ist, lässt sich über den Befehl eyeD3 --version ermitteln. Gegebenenfalls empfiehlt es sich, das Paket eyeD3 aus den Quellen zu deinstallieren und die neuere Version über den Python-Paketmanager pip zu beziehen:

sudo apt remove eyeD3
pip install --upgrade eyed3 

Diese Revision wurde am 3. Mai 2023 16:36 von karzer erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Multimedia, Shell, Audio, Audiobooks, MP3