Как я могу преобразовать .flac в .mp3 с ffmpeg, сохраняя все метаданные (которые преобразуют комментарий Vorbis в .flac файлы в метаданные ID3v2.mp3)?
Преобразовать .flac в .mp3 с помощью ffmpeg, сохраняя все метаданные
Ответ 1
Следующая команда поддерживает высокое качество .mp3 (320 кбит/с), а метаданные из файла .flac преобразуются в формат ID3v2, который может быть включен в файлы .mp3:
ffmpeg -i input.flac -ab 320k -map_metadata 0 -id3v2_version 3 output.mp3
Ответ 2
Отличный ответ выше. Я использую его вместе с find для добавления всех файлов FLAC в поддерево в iTunes с помощью этой команды
find . -name "*.flac" -exec ffmpeg -i {} -ab 160k -map_metadata 0 -id3v2_version 3 {}.mp3 \;
Чтобы автоматически добавить результирующие файлы в iTunes, найдите каталог импорта iTunes с помощью
find ~/Music/ -name "Automatically Add*"
например.
/Users/sir/Music//iTunes/iTunes Media/Automatically Add to iTunes.localized
Затем запустите, например,
find . -name "*.mp3" -exec mv {} "/Users/sir/Music//iTunes/iTunes Media/Automatically Add to iTunes.localized/" \;
Чтобы автоматически добавить все преобразованные треки в iTunes.
Ответ 3
Если вы хотите сохранить небольшое пространство, попробуйте рекомендацию hydrogenaud.io:
Очень высокое качество: HiFi, домашний или тихий прослушивание, с лучшим размером файла
-V0 (~245 kbps)
,-V1 (~225 kbps)
,-V2 (~190 kbps)
или-V3 (~175 kbps)
. Эти настройки VBR обычно дают прозрачные результаты. Звуковые различия между этими пресетами могут существовать, но встречаются редко.
Источник: http://wiki.hydrogenaud.io/index.php?title=LAME
Если вы хотите использовать эту опцию в ffmpeg, вы должны использовать псевдоним -q:a 0
.
Качество управления с помощью
-qscale:a
(или псевдоним-q:a
). Значения специфичны для кодировщика, поэтому для libmp3lame диапазон равен 0-9, где более низкое значение является более высоким. 0-3, как правило, выдают прозрачные результаты, 4 (по умолчанию) должны быть близки к прозрачности восприятия, а 6 дает "приемлемое" качество. Опция-qscale:a
сопоставляется с опцией-V
в средстве интерфейса командной строки автономного lame.
Источник: https://trac.ffmpeg.org/wiki/Encode/MP3
Если вам нужны метатеги ID3v1, вы должны добавить параметр -write_id3v1 1
.
Итак, моя последняя команда:
ffmpeg.exe -y -i input.flac -codec:a libmp3lame -q:a 0 -map_metadata 0 -id3v2_version 3 -write_id3v1 1 output.mp3
Ответ 4
Я тестировал следующую команду для преобразования файла infile.flac
в outfile.mp3
:
ffmpeg -i infile.flac -q:a 0 outfile.mp3
Начиная с Ubuntu 16.04, приведенная выше команда, похоже, копирует (большую часть? всех?) метаданные.
-q:a 0
говорит ffmpeg
использовать VBR самого высокого качества.
Однако ffmpeg
транскодировал обложку моего альбома из jpeg
в png
, что увеличило размер обложки.
Stream mapping:
Stream #0:1 -> #0:0 (mjpeg (native) -> png (native))
Stream #0:0 -> #0:1 (flac (native) -> mp3 (libmp3lame))
(я полагаю, что приведенное выше преобразование имеет смысл , учитывая, как ffmpeg
работает.)
После некоторых копаний я нашел опцию -c:v copy
, которая указывает, что видеопоток должен копироваться, а не транскодироваться. Полная команда:
ffmpeg -i infile.flac -c:v copy -q:a 0 outfile.mp3
Приведенная выше команда приводит к:
Stream mapping:
Stream #0:1 -> #0:0 (copy)
Stream #0:0 -> #0:1 (flac (native) -> mp3 (libmp3lame))
Ответ 5
Чтобы рекурсивно конвертировать в mp3 все файлы flac во вложенных папках, я использовал эту команду:
find '~/Music/' -iname '*.flac' -exec bash -c 'D=$(dirname "{}"); B=$(basename "{}"); mkdir "$D/mp3/"; ffmpeg -i "{}" -ab 320k -map_metadata 0 -id3v2_version 3 -acodec libmp3lame "$D/mp3/${B%.*}.mp3"' \;
Он создаст папку с именем "mp3" внутри папки с файлами flac и внутри папки mp3 сохранит относительные mp3 файлы с битрейтом 320 кбит/с без сохранения старого расширения имени в названии.
Ответ 6
Одна строка для преобразования всех файлов .flac
в .mp3
в одном каталоге, сохраняя большинство метаданных:
for file in *.flac; do ffmpeg -i $file -q:a 0 ${file:r}.mp3; done
(Примечание: ${file:r}
удаляет расширение указанного пути к файлу)
Ответ 7
Я знаю, что об этом не спрашивали, но, учитывая, что одна из причин, по которой это делается (по крайней мере, то, что я хотел сделать), заключается в том, что музыку можно импортировать в Apple iTunes, которая не поддерживает FLAC. В таком случае имеет смысл преобразовать FLAC в собственный формат Apple без потерь, m4a. Я использовал эту команду для преобразования всех файлов в текущей папке, сохранив при этом файлы одинакового размера.
find . -name "*.flac" -exec ffmpeg -i {} -map_metadata 0 -acodec alac {}.m4a \;
Ответ 8
Этот скрипт flac2mp3.sh использует ffmpeg
для преобразования дерева папок файлов FLAC в другое дерево папок файлов MP3. Обложка включена, когда она есть. Вы можете установить переменную CORES
, чтобы создавать фоновые задания для преобразования нескольких файлов одновременно.