Конвертировать M4a без потерь во FLAC
Я пытался конвертировать файл с pacpl
, но я получаю известную ошибку "256". С -v
флаг, FAQ pacpl говорит мне:
"Файл, который вы пытаетесь преобразовать, представляет собой файл.m4a без потерь. Этот формат еще не поддерживается FAAC/FAAD".
Поскольку faac/faad, похоже, используется в любом другом инструменте конвертации в Ubuntu, как я могу успешно конвертировать форматы?
5 ответов
Вы можете преобразовать файл m4a во flac с помощью инструмента командной строки ffmpeg:
Чтобы установить ffmpeg:
sudo apt-get install ffmpeg
Преобразовать:
ffmpeg -i filein.m4a -f flac fileout.flac
sudo aptitude install libav-tools
for file in *.m4a; do avconv -i "$file" -f flac "`basename "$file" .m4a`.flac"; done
Хотя оба ответа с использованием ffmpeg/avconv (которые, я думаю, по сути являются одним и тем же инструментом) оба работают, у них в настоящее время есть недостаток. А именно, что m4a без потерь часто является 24-битной выборкой, и в настоящее время ffmpeg / avconv обычно заставляет преобразование заканчиваться 16-битной выборкой.
Я считаю, что использование sndfile-convert (libsndfile) не имеет этой проблемы. Точно так же я считаю, что этого можно избежать, используя mplayer для декодирования m4a перед кодированием его с помощью ffmpeg или flac. Я думаю, что soundKonverter на KDE может сделать это для вас.
В любом случае, что бы вы ни делали, я предлагаю проверить, имеют ли исходный и преобразованный файлы одинаковую битовую глубину выборок.
Лично я использую этот код.
for file in *.m4a; do fname=$(basename "$file" .m4a); ffmpeg -i "$file" -vn -ar 48000 -f flac "$fname".flac; done
.
Таким образом, выходной файл не имеет расширения *.m4a.flac.
А это вывод из файла flac:
Поток #0:0: Аудио: flac, 48000 Гц, стерео, s32 (24 бит)
И не забудьте проверить теги/метаданные в файле. Я был удивлен, увидев свой адрес электронной почты в теге/метаданных. А также
ffprobe
показать больше mtag/metada как Easytag.
благодаря zetdotpi и https://stackoverflow.com/a/2664758
Просто объединив всю полезную информацию из трех других ответов.
Чтобы проверить разрядность файлов mp4:
# cd into desired directory then...
ffprobe -show_streams ./[pick one file to test].m4a | grep -e codec_name -e bits_per_raw_sample
Это должно показать битовую глубину в нижней части вывода.
Чтобы использовать ffmpeg и для всех файлов в папке (при условии, что они не 24-битные (или выше)):
# cd into desired directory then...
for file in *.m4a ; do ffmpeg -i "$file" -f flac "$( basename "$file" .m4a ).flac" ; done
Надеюсь, это поможет.