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 є незворотним (за межами відновлення криміналістичних даних), тому будьте обережні, використовуючи його.