1 bearbeitet von Frank Bicking (Original: 2005-10-01 13:47)

Thema: EAC: Kompressionseinstellungen

Nachdem wiederholt Fragen zu den Kompressionseinstellungen kommen, sowohl hier als auch in anderen Foren, und man beim Erklären oft immer wieder Null anfangen muss, schreibe ich jetzt mal alles auf was, mir rund um Parameter-Übergabeschema und zusätzliche Kommandozeilen-Optionen einfällt, in der Hoffnung, es möge mir und vielleicht auch anderen zukünftig eine Menge Zeit sparen. Gleichzeitig fasst dieser Artikel drei bis vier andere Threads zusammen, die sich ebenfalls aus verschiedenen Blickrichtungen diesem Thema gewidmet hatten.


Empfohlene Kompressionseinstellungen

Für diejenigen, die sich auf der Suche nach sinnvollen Kompressionseinstellungen in diesen Artikel verirrt haben:

Stets aktuelle Empfehlungen finden Sie in meiner EAC-Anleitung.


Externe Encoder

Encoder werden in der Regel als Windows-Kommandozeilenprogramme angeboten, nicht etwa DOS-Programme wie manchmal fälschlich behauptet, und kommen somit nicht mit einer graphischen Benutzeroberfläche daher, die eine Auswahl der Einstellungen über ein Dialogfenster ermöglichen würde, sondern werden mit Parametern aufgerufen und gesteuert. Dies hat den Vorteil, dass sie in beliebige andere Programme eingebunden werden können. Wie die Konvertierfunktion in foobar2000 zeigt, geschieht dies teilweise sogar so nahtlos, dass der Anwender davon im Endeffekt nichts mehr mitbekommt.

Wenn ich von "Einbinden" spreche, dann meine ich damit, dass der Anwender den Encoder nicht selbst aufruft, sondern dies einer anderen Anwendung, dem sogenannten Frontend überlässt. Dieses Programm, hier ist es Exact Audio Copy (EAC), muss dem Encoder die von ihm benötigten Angaben durch Parameter übermitteln. Dazu gehören die Kompressionseinstellungen, die zu encodierende Datei, und in welcher Datei das Resultat anschließend gespeichert werden soll. Aber auch die zu schreibenden Tags, sofern die aufrufende Anwendung keine eigenen Tagging-Routinen für alle möglichen Audioformate mitbringt. Wie die Parameter dafür im Einzelnen lauten, ist von Encoder zu Encoder unterschiedlich.


Encoder manuell aufrufen

Doch lassen Sie uns zunächst einen Schritt zurückgehen und einen Blick auf die Encoder selbst werfen, denn es ist natürlich auch möglich, garnicht von einem Frontend Gebrauch zu machen, sondern sie manuell aufzurufen. Einige Grundkenntnisse der Windows-Eingabeaufforderung setze ich aber voraus. Zunächst zu der Frage, wie man herausbekommt, auf welche Weise ein Encoder überhaupt bedient wird. Nun, alle zeigen bei einem Aufruf ohne jegliche Parameter einen Hilfetext wie diesen an:

C:\Programme\Audio Compression\Encoder>lame
LAME 32bits version 3.97 (beta 1, Sep 11 2005) (http://www.mp3dev.org/)

usage: lame [options] <infile> [outfile]

    <infile> and/or <outfile> can be "-", which means stdin/stdout.

Try:
     "lame --help"           for general usage information
 or:
     "lame --preset help"    for information on suggested predefined settings
 or:
     "lame --longhelp"
  or "lame -?"              for a complete options list

Folgt man nun den weiteren Hilfetexten über die Parameter --help, --preset help oder --longhelp, dann findet man Erklärungen über alle weiteren Möglichkeiten. Ganz oben sieht man übrigens, wie die zu encodierende Datei ("infile") und die zu erzeugende Datei ("outfile") angegeben werden müssen. Letztere ist mit eckigen Klammern umgeben, weil die Angabe nicht zwingend erforderlich, also optional ist; lässt man sie weg, wird der Name des infile verwendet. Auf diese Weise lassen sich schnell die nötigen Kommandozeilen zusammensetzen, um eine einzelne Datei zu encodieren, oder später in Programmen wie EAC die gewünschten Ergebnisse zu erzielen.

Folgende Zeile encodiert etwa die Datei test.wav nach test.mp3 mit einer Bitrate von 64 kbps und fügt den Kommentar-Tag "Mein Lieblingslied" hinzu:

LAME -b 64 --tc "Mein Lieblingslied" test.wav test.mp3

Das soll dazu ausreichen, die Herangehensweise ist bei allen anderen Encodern die gleiche.


Parameter Passing Scheme

Bei einem Parameter-Übergabeschema in EAC geht es nun darum, sich sowenig wie möglich davon merken zu müssen, in welcher Form dem Encoder bestimmte Angaben wie Tags oder Ein- und Ausgabedatei durch Parameter übermittelt werden. Setzt man die Einstellung beispielsweise auf LAME MP3 Encoder, dann hängt EAC beim Aufruf von LAME automatisch die von LAME zum Festlegen der Dateinamen erwarteten Parameter an. Da sich die Namen und Syntax je nach Encoder unterscheiden, bietet EAC mehrere vordefinierte, individuell auf bestimmte Encoder zugeschnittene Einstellungen an.

Damit das alles etwas klarer wird, eine Beispielkonfiguration:

http://www.audiohq.de/articles/eac/compression_options/new/parameter-passing-scheme-lame.png

Die Option Bitrate ist hier von entscheidender Bedeutung. Sie bestimmt, mit welchen Parametern die lame.exe aufgerufen wird. Wählen Sie hier etwa 128 kBit/s aus, dann führt dies zu einem Aufruf von lame.exe -h -b 128 name.wav name.mp3. Die Dateinamen sind natürlich von Aufruf zu Aufruf unterschiedlich. Die Auswahl von Variable Bitrate 192 kBit/s führt zu den Parametern -h -v -b 192.

Den ID3-Tag schreibt EAC selbst, deshalb sind hier keine Parameter für die Tags in der Kommandozeile. Bei anderen Encodern werden dafür auch bestimmte Parameter übergeben. Bei Ogg Vorbis sieht das dann zum Beispiel so aus:

-q 6 -N 5 -t Talk -a Coldplay -l X&Y -G Rock -d 2005 -o D:\Coldplay\[2005] X&Y\0tmp!)(0(.ogg D:\Coldplay\[2005] X&Y\\0tmp!)(0(.wav

Unter Zusätzliche Kommandozeilen-Optionen können Sie nun bestimmen, welche zusätzlichen Parameter immer angehangen werden sollen.

Die vorangegangenen Parameter werden dabei allerdings nicht überschrieben, sondern bestehen weiterhin, und haben damit Auswirkungen auf die Funktionsweise des Encoders. Wenn Sie hier z.B. -V 2 einfügen, dann lauten die kompletten Parameter:

-h -v -b 192 -V 2

Und genau hier liegt das Problem mit den vorgefertigten Schemas: der Encoder arbeitet eventuell nicht so wie erwartet. Es hat sich in der Vergangenheit immer wieder gezeigt, dass diese von EAC gesetzten Parameter ungewünschte Auswirkungen haben können, indem sie z.B. die Mindestbitrate durch -b 192 auf einen anderen Wert setzen.

Dazu kommt natürlich, dass die vordefinierten Einstellungen für LAME im VBR-Modus nicht den aktuell empfohlenen Parametern entsprechen. Deshalb ist es sinnvoll, und genau das mache ich mit meinen Anleitungen und viele andere auch seit Jahren, von diesen Parameter-Übergabeschemas Abstand zu nehmen und die komplette Kommandozeile für den Encoder selbst festzulegen, um die volle Kontrolle darüber zu haben, was der Encoder macht und was nicht.

Bei anderen Encodern wie z.B. Ogg Vorbis können die vorgefertigten Schemas auch wie erwartet funktionieren, aber auch hier ist es besser, keinerlei Risiko einzugehen. Für FLAC bietet EAC erst gar kein Schema an.


Benutzerdefinierte Encoder

Kommen wir deshalb also zu den selbstdefinierten Encodern. Wählen Sie dazu unter Parameter-Übergabeschema den Eintrag Benutzerdefinierter Komprimierer aus. Diese Einstellung setzt die Optionen Bitrate außer Kraft, sie hat nun keinerlei Auswirkungen mehr. An den Encoder wird ausschließlich das übergeben, was Sie neben Zusätzliche Kommandozeilen-Optionen eintragen.

Dazu gehört nun aber auch, dass Sie sich nicht mehr darauf verlassen können, dass EAC die Parameter für Tags und Dateinamen automatisch anhängt. Sie müssen selbst festlegen, auf welche Art und Weise dies geschieht.

Für diesen Zweck bietet EAC eine ganze Reihe von Platzhaltern an, die Sie innerhalb der Kommandozeile verwenden können. Sie sind in der FAQ auf der EAC-Homepage dokumentiert, Zitat:

%source% – Source filename
%dest% – Destination filename
%original% – Original filename (without temporary renaming)

%ishigh%…%ishigh% – Text “…” only when “High quality” selected
%islow%…%islow% -Text “…” only when “Low quality” selected
%haslyrics%…%haslyrics% – Text “…” only when lyrics exist
%hascover%…%hascover% – Text “…” only when storing cd cover is enabled and cover exists
%crcenabled%…%crcenabled% – Text “…” only when “CRC checksum” selected

%title% – Track title
%genre% – MP3 music genre
%year% – Year
%cddbid% – freedb ID
%artist% – Track artist
%lyrics% – Lyrics
%lyricsfile% – Filename of lyrics text file (ANSI)
%bitrate% – Bitrate (“32″..”320″)
%comment% – Comment (as selected in EAC)
%tracknr% – Track number (same as %tracknr2%)
%tracknr1% – Track number (at least 1 digit)
%tracknr2% – Track number (at least 2 digits)
%tracknr3% – Track number (at least 3 digits)
%totalcds% – Total number of CDs in the given CD set
%cdnumber% – Number of the CD
%composer% – Track performer
%trackcrc% – CRC of extracted track
%coverfile% – Filename of CD cover image
%numtracks% – Number of tracks on album
%albumtitle% – CD title
%albumartist% – CD artist
%albumcomposer% – CD composer
%albuminterpret% – CD performer

Die wichtigsten sind die ersten beiden, %source% und %dest%. Sie übergeben dem Encoder die Namen der zu encodierenden Datei, die stets die Dateiendung .wav hat, und den Dateinamen der zu erzeugenden Datei, deren Endung neben Benutze Dateinamenerweiterung festgelegt wird. Ohne diese Angaben wüsste der Encoder nicht, welche Datei encodiert werden soll, und würde mit einer Fehlermeldung abbrechen.

Diese beiden Parameter zu vergessen ist einer der häufigsten Fehler, der bei der Konfiguration gemacht wird.

%dest% ist bei einigen Encodern nicht zwingend erforderlich, er schadet aber auch nicht und stellt sicher, dass das komprimierte Ergebnis auch wirklich in die Datei geschrieben wird, die EAC erwartet.

Die Platzhalter werden beim Aufruf des Encoders durch die jeweiligen Inhalte ersetzt. Aus der folgenden Kommandozeile für FLAC:

-5 -T "Artist=%artist%" -T "Title=%title%" -T "Album=%albumtitle%" -T "Date=%year%" -T "Tracknumber=%tracknr%" -T "Genre=%genre%" %source% -o %dest%

wird beispielsweise beim Aufruf:

-5 -T "Artist=Coldplay" -T "Title=Talk" -T "Album=X&Y" -T "Date=2005" -T "Tracknumber=5" -T "Genre=Rock" "D:\Coldplay\[2005] X&Y\05. Talk.wav" -o "D:\Coldplay\[2005] X&Y\05. Talk.flac"

Da Sie dem Encoder die zu schreibenden Tags bereits mit der Kommandozeile übergeben, muss die Option durch die EAC die Datei anschließend mit einem Tag versieht abgeschaltet werden - deaktivieren Sie deshalb Füge ID3 tag hinzu. Auch hier gehen wir lieber auf Nummer sicher und bestimmen manuell, welche Tags geschrieben werden, anstatt uns auf EAC zu verlassen. Für FLAC-Dateien wäre ein ID3-Tag auch garnicht zulässig, es hat sein eigenes Format.

Alle Angaben, die in unseren empfohlenen Kommandozeilenoptionen hinter den Parametern für die Qualitätsstufe stehen, sind für die Tags und die Angabe der Dateinamen zuständig. Wir führen mit ihnen keine zusätzlichen Manipulationen des Encoders durch; es besteht also kein Grund zur Besorgnis, wenn Ihnen an anderer Stelle berechtigterweise empfohlen wird, an den normalen Presets oder Qualitätsstufen nichts durch zusätzliche Parameter zu verändern.


Zusammenfassung

Das soll es zu diesem Thema erstmal gewesen sein. Ich hoffe es wird deutlich, warum wir Ihnen empfehlen, EAC genau so zu konfigurieren, wie es in unserer Anleitung gezeigt wird.

2 bearbeitet von Frank Bicking (Original: 2005-10-01 14:49)

Re: EAC: Kompressionseinstellungen

Anhang: Tagging-Standards bei LAME festlegen

Wir haben uns auf AudioHQ darauf geeinigt, in unserer EAC-Anleitung aus Kompatibilitätsgründen in erster Linie ID3v2 als Tagging-Standard für MP3 zu empfehlen. Es ist natürlich problemlos möglich, eines der anderen Formate ID3v1 und APEv2 oder eine Kombination aus mehreren zu verwenden. Über die Vorzüge und Eigenschaften der einzelnen Standards informiert ein separater Artikel. Nachfolgend die Parameter für alle sinnvollen Varianten, ausgehend von unserer empfohlenen Konfiguration für MP3. Alle hier nicht genannten Einstellungen müssen mit der Anleitung übereinstimmen.


ID3v1 und ID3v2 (entspricht der Anleitung)

Fügen Sie die folgende Zeile unter Zusätzliche Kommandozeilen-Optionen ein:

-V 2 --add-id3v2 --pad-id3v2 --tt "%title%" --ta "%artist%" --tl "%albumtitle%" --ty "%year%" --tn "%tracknr%" --tg "%genre%" %source% %dest%

ID3v2

Fügen Sie die folgende Zeile unter Zusätzliche Kommandozeilen-Optionen ein:

-V 2 --id3v2-only --pad-id3v2 --tt "%title%" --ta "%artist%" --tl "%albumtitle%" --ty "%year%" --tn "%tracknr%" --tg "%genre%" %source% %dest%

ID3v1

Fügen Sie die folgende Zeile unter Zusätzliche Kommandozeilen-Optionen ein:

-V 2 --id3v1-only --tt "%title%" --ta "%artist%" --tl "%albumtitle%" --ty "%year%" --tn "%tracknr%" --tg "%genre%" %source% %dest%

APEv2

  1. Laden Sie die Datei wapet.exe herunter.

  2. Klicken Sie auf Durchsuchen, wechseln Sie zum Ordner, in den Sie die wapet.exe entpackt haben, und wählen Sie diese aus.

  3. Fügen Sie die folgende Zeile unter Zusätzliche Kommandozeilen-Optionen ein:

%dest% -t "Artist=%artist%" -t "Title=%title%" -t "Album=%albumtitle%" -t "Year=%year%" -t "Track=%tracknr%" -t "Genre=%genre%" lame.exe -V 2 %source% %dest%

APEv2 und ID3v1

  1. Laden Sie die Datei wapet.exe herunter.

  2. Klicken Sie auf Durchsuchen, wechseln Sie zum Ordner, in den Sie die wapet.exe entpackt haben, und wählen Sie diese aus.

  3. Fügen Sie die folgende Zeile unter Zusätzliche Kommandozeilen-Optionen ein:

%dest% -t "Artist=%artist%" -t "Title=%title%" -t "Album=%albumtitle%" -t "Year=%year%" -t "Track=%tracknr%" -t "Genre=%genre%" lame.exe -V 2 --id3v1-only --tt "%title%" --ta "%artist%" --tl "%albumtitle%" --ty "%year%" --tn "%tracknr%" --tg "%genre%" %source% %dest%

APEv2 und ID3v2 oder alle drei Tags zusammen werden analog festgelegt.

Bei den anderen Audioformaten FLAC, Ogg Vorbis und MPC gibt es dieses Chaos zum Glück nicht.