Как я могу преобразовать свою коллекцию музыки FLAC в Apple Lossless?

13

У меня есть музыкальная коллекция разумного размера, которую я храню в формате FLAC на своем ноутбуке Ubuntu. Я хотел бы начать играть эту музыку на моем Mac и синхронизировать ее оттуда на моем iPod. Люди предположили, что лучший способ сделать это - преобразовать мою коллекцию в ALAC, и я решил, что это то, что я хочу сделать.

Прежде чем погрузиться и написать собственные сценарии оболочки, которые вызывают ffmpegчерез какую-то сложную findкоманду, я подумал, что я бы попросил совета.

Как мне лучше всего конвертировать мою существующую коллекцию FLAC в ALAC, без потери качества звука и сохранения всех метаданных?

JML
источник
Да. Я удивлен. Я думал, что был бы очевидный выбор для инструмента транскодирования, но все, что я могу найти, сосредоточено на видео.
RAOF
В итоге я написал собственный скрипт на Python, который назвал metaflac, ffmpeg и AtomicParsley.
JML

Ответы:

21

avconv (или ffmpeg, в состав которого входит avconv) может сделать это из командной строки:

avconv -i input.flac -c:a alac output.m4a

Он должен сохранять метаданные сам по себе.

Чтобы сделать каждый флак в каталоге:

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

Чтобы сделать каждый flac рекурсивно (в текущем каталоге и во всех подкаталогах):

shopt -s globstar
for f in ./**/*.flac; do avconv -i "$f" -c:a alac "${f%.*}.m4a"; done

Если у вас есть флаги в файлах ogg или что-то еще, очевидно, измените ./*.flacна ./*.ogg.

Я думаю, что это должно работать с avconv / ffmpeg из репозиториев (поскольку ALAC выпускается под лицензией Apache и может распространяться по закону), хотя у меня установлена ​​версия из medibuntu.

Если вы хотите избавиться от оригинальных файлов, вы можете поместить rmих в цикл. В этой версии используется -nфлаг для avconv, поэтому он не будет перезаписывать какие-либо уже существующие файлы ALAC, и &&вместо; него будет использоваться означает, что если avconv остановится с ошибкой, то исходный файл FLAC не будет удален:

for f in ./*.flac; do avconv -n -i "$f" -c:a alac "${f%.*}.m4a" && rm "$f"; done

Обратите внимание, что удаление файлов с помощью rm необратимо (за пределами судебного восстановления данных), поэтому будьте осторожны при его использовании.

evilsoup
источник
Знаете ли вы, как заменить файлы flac файлами alac, вместо того, чтобы делать alac копию файла flac?
user138784
@ user13 нет, avconv / ffmpeg не может этого сделать, он не может перезаписать файлы, которые он использует в качестве входных данных. Вы можете использовать rmдля удаления оригинальных файлов, если хотите.
evilsoup
Я на самом деле не гуру командной строки (я новичок в GNU / Linux), поэтому до сих пор я использовал их для удаления вручную. (Наутилус, упорядочить файлы по типу, а затем я могу просто выбрать все .flac файлы в этом каталоге и удалить их). Я посмотрю на то, как работает это «рм». :)
user138784
@ user138 Я отредактировал ответ, чтобы показать одну реализацию rm- хотя, обратите внимание на предупреждение, rmон в значительной степени необратим, он сразу удаляет файлы, а не перемещает их в корзину. Другой альтернативой может быть использование сглаживания после завершения цикла (чтобы вы могли проверить, что проблем не было ... если по какой-либо причине команда завершилась неудачно, вы не захотите избавляться от оригиналов): rm -- *.flacбудут удалены все FLAC в рабочем каталоге.
evilsoup
Спасибо за совет! Обычно я храню исходные файлы flac в другом каталоге, поэтому нет риска их потерять.
user138784