Конвертировать.flac to. mp3 с ffmpeg, сохраняя все метаданные


Как я могу конвертировать .flac to. mp3 с помощью ffmpeg, сохраняя все метаданные (то есть Преобразуя комментарий Vorbis.flac файлы в ID3v2 метаданных. mp3)?

7 54

7 ответов:

следующая команда сохраняет высокое качество on. mp3 (320 kbps) и метаданные .файлы flac преобразуются в формат ID3v2, который может быть включен в файлы. mp3:

ffmpeg -i input.flac -ab 320k -map_metadata 0 -id3v2_version 3 output.mp3

идеальный ответ выше. Я использую его вместе с 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.

если вы хотите сэкономить немного места, попробуйте рекомендацию 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 метатеги тоже, вы должны добавить

Я тестировал следующую команду для преобразования до 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))

чтобы рекурсивно конвертировать в 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-файлы с битрейтом 320kbps, не сохраняя старое расширение файла в имени.

Я знаю, что это не было задано, но учитывая, что одна из причин, по которой это делается (по крайней мере, это то, что я хотел сделать), заключается в том, что музыка может быть импортирована в Apple iTunes, который не поддерживает FLAC. В таком случае имеет смысл конвертировать FLAC в собственный формат Apple без потерь, m4a. I использовал эту команду для преобразования всех файлов в текущей папке, сохраняя при этом аналогичные размеры файлов.

find . -name "*.flac" -exec ffmpeg -i {} -map_metadata 0 -acodec alac {}.m4a \;

один лайнер для преобразования всех .flac файлы .mp3 в одном каталоге, сохраняя большинство метаданных:

for file in *.flac; do ffmpeg -i $file -q:a 0 ${file:r}.mp3; done

(Примечание: ${file:r} удаляет расширение данного пути к файлу)

ffmpeg: flac to mp3