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 необратимо (за пределами судебного восстановления данных), поэтому будьте осторожны при его использовании.