Kann Apple Lossless-Audio ohne Verlust der Wiedergabetreue in FLAC konvertiert werden?

26727
Kev

Können Apple Lossless-Audiodateien (ALAC) ohne Verlust der Wiedergabetreue in FLAC-Audiodateien konvertiert werden?

17
kurze Antwort "Ja" (wie Slhck sagte). Frage ist, suchen Sie nach einem Werkzeug, um dies zu tun, oder fragen Sie, ob Sie ein verlustfreies Format verlustfrei in ein anderes verlustfreies Format konvertieren können? Journeyman Geek vor 13 Jahren 2

4 Antworten auf die Frage

37
slhck

Ja, da beide mathematisch verlustfrei sind, ist auch die Konvertierung verlustfrei.

Der Grund dafür ist, dass das Signal immer in seine ursprüngliche Form rekonstruiert werden kann, wenn eine FLAC / ALAC-Datei decodiert wird. Daher sind sie gleichwertig und Sie sollten beim Transcodieren keinen Verlust erleiden - selbst wenn Sie das Transcoding mehrmals durchführen.

Der einzige Fehler, den ich mir vorstellen könnte, wäre ein arithmetischer Fehler, z. B. durch eine begrenzte Gleitkomma-Genauigkeit in Berechnungen. Ich glaube nicht, dass dies für FLAC oder ALAC gilt.

Falls Sie nur einen "psychoakustisch" verlustfreien Codec verwenden, ist dies nicht möglich. Verlustfrei im psychoakustischen Sinne würde bedeuten, dass Sie das Original nicht von der komprimierten Version unterscheiden können, obwohl sie sich sehr voneinander unterscheiden. MP3 oder MPEG-4 AAC verwenden dazu verschiedene psychoakustische Techniken. Daher kann die Originalversion beim Transcodieren nicht rekonstruiert werden, und es kommt zu einem Qualitätsverlust.


Für den Fall, dass Sie ALAC in FLAC konvertieren möchten, ffmpegwäre dies eine gute Option, da es für fast jede Plattform kostenlos verfügbar ist.

ffmpeg -i audio.m4a -c:a flac audio.flac 

FFmpeg liest ALAC ohne Probleme. Für * nix-Systeme gibt es auch ein Skript namens Convert to FLAC, das den gesamten Prozess vereinfacht. Mit Bash können Sie auch einfach alle Dateien in ein einziges Verzeichnis konvertieren:

for f in *.m4a; do ffmpeg -i "$f" -c:a flac "$.flac"; done 

Hinweis: Wenn Sie eine Meldung erhalten, ffmpegdass Sie veraltet sind, ist dies eigentlich nicht der Fall - es ist immer noch ein aktiv entwickeltes Programm. Allerdings Maintainer Ubuntu - Paket nur beschlossen, die Libav Gabel von FFmpeg zu wechseln und damit Sie liefern avconvstatt ffmpeg. Die Version von ffmpeg Ubuntu ist daher veraltet. Sie können eine aktuelle Version herunterladen, indem Sie stattdessen ein statisches Build herunterladen oder es selbst kompilieren. Lesen Sie weiter für weitere Informationen: Wer kann mir den Unterschied und die Beziehung zwischen ffmpeg, libav und avconv erklären?

Basierend auf http://superuser.com/a/277358/45914 können Sie ein gesamtes Verzeichnis folgendermaßen konvertieren: `for f in * .m4a; do ffmpeg -i "$ f" -acodec flac "$ .flac"; done` Dies funktioniert unter Linux, aber auch in einer Git-Bash unter Windows. Ruud vor 12 Jahren 2
Die Konvertierung mit ffmpeg funktioniert, wie @RuudvA gesagt hat, funktioniert aber es gibt eine Meldung, die besagt: "*** DIESES PROGRAMM WIRD ABGEBROCHEN *** Dieses Programm dient nur der Kompatibilität und wird in einer zukünftigen Version entfernt. Verwenden Sie stattdessen avconv.` Um dies mit aconv zu tun, tun Sie dies stattdessen: `für f in * .m4a; do avconv -i "$ f" "$ .flac"; fertig " Duncan Lock vor 11 Jahren 1
XLD ist eine weitere gute für OSX. Arran Cudbard-Bell vor 8 Jahren 0
2
The009

For Windows CMD you can do.

@for /R %%x in (*.m4a) do ffmpeg -i "%%x" -acodec flac "%%~dpnx.flac" 

(Batch Script)

( This will do Recursion ( Every Folder and under from where its run ))

1
Alex

Wenn Sie einen Mac haben (da Sie ALAC-Dateien haben), können Sie auch die Open-Source-Software Max als nettes Frontend verwenden, um die Konvertierung von und nach ALAC / FLAC oder vielen anderen Formaten durchzuführen.

Ein weiteres schönes ist XLD. Nathaniel vor 11 Jahren 2
1
BoteRock

Für Windows in Powershell (mithilfe von ffmpeg) können Sie Folgendes tun, um alac in flac zu konvertieren:

Get-ChildItem . -filter *.m4a| ForEach-Object { ffmpeg -i "$_" -acodec flac "$($_.basename).flac" }

und umgekehrt, um dies in alac umzuwandeln

Get-ChildItem . -filter *.flac | ForEach-Object { ffmpeg -i "$_" -acodec alac $($_.basename).m4a" }