Можно ли преобразовать звук Apple Lossless в формат FLAC без потери качества?

26627
Kev

Можно ли преобразовать аудиофайлы Apple Lossless (ALAC) в аудиофайлы FLAC без потери качества?

17
краткий ответ «да» (как сказал slhck). Вопрос в том, ищете ли вы инструмент для этого или спрашиваете, можете ли вы преобразовать формат без потерь в другой формат без потерь? Journeyman Geek 12 лет назад 2

4 ответа на вопрос

37
slhck

Да, учитывая, что оба математически без потерь, преобразование тоже без потерь.

Причина этого заключается в том, что сигнал всегда может быть восстановлен до его первоначальной формы при декодировании файла FLAC / ALAC. Таким образом, они эквивалентны, и вы не должны испытывать никаких потерь при перекодировании - даже при перекодировании несколько раз.

Единственная ошибка, которую я могу себе представить, будет арифметической, например, из-за ограниченной точности вычислений с плавающей запятой. Я не думаю, что это относится ни к FLAC, ни к ALAC.

Если вы используете только «психоакустически» кодек без потерь, это невозможно. Lossless в психоакустическом смысле означал бы, что вы не можете различить оригинал и сжатую версию, но они сильно отличаются друг от друга. MP3 или MPEG-4 AAC используют различные психоакустические методы для достижения этой цели. Таким образом, при перекодировании исходная версия не может быть восстановлена, и вы потеряете качество.


Если вы хотите конвертировать ALAC в FLAC, ffmpegэто будет хорошим вариантом, так как он бесплатный и доступен практически для любой платформы.

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

FFmpeg будет читать ALAC без проблем. Для систем * nix также существует скрипт Convert to FLAC, который делает весь процесс проще. С Bash вы можете просто конвертировать все файлы в один каталог:

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

Примечание. Если вы получили сообщение об ffmpegустаревании, это на самом деле не так - это все еще активно разработанная программа. Однако, сопровождающие пакетов Ubuntu просто решили переключиться на Libav форк FFmpeg и таким образом предоставить вам avconvвместо ffmpeg. Поэтому версия, ffmpeg доступная в Ubuntu, устарела. Вы можете получить последнюю версию, загрузив вместо этого статическую сборку, или скомпилировав ее самостоятельно. Читайте дальше для получения дополнительной информации: кто может подсказать мне разницу и отношения между ffmpeg, libav и avconv

Основываясь на http://superuser.com/a/277358/45914, вы можете выполнить следующие действия для преобразования всего каталога: `for f in * .m4a; do ffmpeg -i "$ f" -acodec flac "$ .flac"; done` Это работает как в Linux, так и в Git bash в Windows, например. Ruud 12 лет назад 2
Преобразование с использованием ffmpeg, как сказал @RuudvA, работает, но выдает мне сообщение: `*** ЭТА ПРОГРАММА УСТАРЕЛА *** Эта программа предназначена только для совместимости и будет удалена в следующем выпуске. Пожалуйста, используйте вместо этого avconv. Чтобы сделать это с помощью aconv, сделайте это вместо: `for f in * .m4a; do avconv -i "$ f" "$ .flac"; done` Duncan Lock 11 лет назад 1
XLD - еще один хороший вариант для OSX. Arran Cudbard-Bell 7 лет назад 0
2
The009

Для Windows CMD вы можете сделать.

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

(Пакетный скрипт)

(Это будет делать рекурсию (каждая папка и под которой она запускается))

1
Alex

Если у вас Mac (поскольку у вас есть файлы ALAC), вы также можете использовать программное обеспечение с открытым исходным кодом Max в качестве удобного интерфейса для преобразования из ALAC / FLAC и в другие форматы и обратно.

Еще один приятный - XLD. Nathaniel 11 лет назад 2
1
BoteRock

для Windows в Powershell (используя ffmpeg) вы можете сделать это для преобразования alac в flac:

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

и наоборот сделать это, чтобы преобразовать в Alac

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