Czy Apple Lossless audio można przekonwertować na FLAC bez utraty wierności?

19

Czy pliki audio Apple Lossless (ALAC) można konwertować na pliki audio FLAC bez utraty wierności?

Kev
źródło
2
krótka odpowiedź „tak” (jak powiedział slhck). pytanie brzmi, czy szukasz narzędzia do zrobienia tego, czy pytasz, czy możesz przekonwertować bezstratny format bezstratnie na inny bezstratny format?
Journeyman Geek

Odpowiedzi:

37

Tak, biorąc pod uwagę, że oba są matematycznie bezstratne, konwersja również jest bezstratna.

Powodem tego jest to, że sygnał można zawsze zrekonstruować do oryginalnej postaci, gdy dekodowany jest plik FLAC / ALAC. Są więc równoważne i nie powinieneś tracić żadnej straty podczas transkodowania - nawet przy transkodowaniu wielokrotnym.

Jedyny błąd, jaki mogłem sobie wyobrazić, to błąd arytmetyczny, np. Poprzez ograniczoną precyzję zmiennoprzecinkową w obliczeniach. Nie sądzę, że dotyczy to zarówno FLAC, jak i ALAC.

Jeśli używasz tylko „bezstratnego” kodeka „psychoakustycznie”, nie jest to możliwe. Bezstratny w sensie psychoakustycznym oznaczałby, że nie można odróżnić wersji oryginalnej i skompresowanej, a jednak bardzo się od siebie różnią. MP3 lub MPEG-4 AAC używają do tego różnych technik psychoakustycznych. Dlatego podczas transkodowania oryginalnej wersji nie można odtworzyć, co może spowodować utratę jakości.


Jeśli chcesz przekonwertować ALAC na FLAC, ffmpegbyłaby to dobra opcja, ponieważ jest bezpłatna i dostępna na prawie każdą platformę.

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

FFmpeg odczyta ALAC bez problemów. W systemach * nix dostępny jest również skrypt o nazwie Konwertuj na FLAC, który ułatwia cały proces. Dzięki Bash możesz po prostu przekonwertować wszystkie pliki w jednym katalogu:

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

Uwaga: Jeśli pojawi się komunikat o ffmpegprzestarzałości, w rzeczywistości tak nie jest - nadal jest to aktywnie rozwijany program. Jednak opiekunowie pakietów Ubuntu właśnie zdecydowali się przejść do rozwidlenia Libav FFmpeg, a tym samym dostarczyć ci avconvzamiast ffmpeg. Wersja ffmpeg dostępna na Ubuntu jest zatem nieaktualna. Możesz pobrać najnowszą wersję, pobierając zamiast tego kompilację statyczną lub samodzielnie ją kompilując. Czytaj dalej, aby uzyskać więcej informacji: Kto może mi powiedzieć różnicę i związek między ffmpeg, libav i avconv

slhck
źródło
2
Na podstawie superuser.com/a/277358/45914 możesz wykonać następujące czynności, aby przekonwertować cały katalog: for f in *.m4a; do ffmpeg -i "$f" -acodec flac "${f%.m4a}.flac"; done Działa to w systemie Linux, ale także na przykład w Git bash w systemie Windows.
Ruud
1
Konwersja za pomocą ffmpeg, jak powiedział @RuudvA, działa, ale daje mi komunikat: *** THIS PROGRAM IS DEPRECATED *** This program is only provided for compatibility and will be removed in a future release. Please use avconv instead. Aby to zrobić za pomocą aconv, zrób to zamiast tego: for f in *.m4a; do avconv -i "$f" "${f%.m4a}.flac"; done
Duncan Lock
XLD jest kolejnym dobrym dla OSX.
Arran Cudbard-Bell
3

W przypadku Windows CMD możesz to zrobić.

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

(Skrypt wsadowy)

(Spowoduje to rekurencję (każdy folder i poniżej, z którego jest uruchamiany))

The009
źródło
1

Jeśli masz komputer Mac (ponieważ masz pliki ALAC), możesz również użyć oprogramowania open source Max jako przyjemnej nakładki, aby wykonać konwersję zi do ALAC / FLAC lub wielu innych formatów ..

Alex
źródło
2
Kolejnym fajnym jest XLD.
Nathaniel
1

w systemie Windows w Powershell (przy użyciu ffmpeg) możesz to zrobić, aby przekonwertować alac na flac:

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

i odwrotnie, zrób to, aby przekonwertować na alak

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

BoteRock
źródło