Как я могу преобразовать .flac в .mp3 с помощью ffmpeg, сохранив все метаданные (то есть преобразовать комментарий Vorbis в файлах .flac в метаданные ID3v2 из .mp3)?
Как я могу преобразовать .flac в .mp3 с помощью ffmpeg, сохранив все метаданные (то есть преобразовать комментарий Vorbis в файлах .flac в метаданные ID3v2 из .mp3)?
Ответы:
Следующая команда сохраняет высокое качество в формате .mp3 (320 кбит / с), а метаданные из файла .flac преобразуются в формат ID3v2, который может быть включен в файлы .mp3:
ffmpeg -i input.flac -ab 320k -map_metadata 0 -id3v2_version 3 output.mp3
ffmpeg
3.2 автоматически копирует метаданные в ID3v2 из FLAC без необходимости указывать -map_metadata 0 -id3v2_version 3
, но не копирует в теги ID3v1. Я использую для этого отдельный инструмент.
Идеальный ответ выше. Я использую его вместе с 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
параметром автономного инструмента интерфейса командной строки.
Источник: 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
Я тестировал следующую команду для преобразования 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))
Чтобы рекурсивно преобразовать в 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 кбит / с, без сохранения старого расширения файла в имени.
$file
как "$file"
.
:r
похоже на zsh
модификатор, который не работает в bash
. В Bash вы можете заменить "${file:r}.mp3"
на "${file%.flac}.mp3"
.
${file%.*}
Я знаю, что об этом не спрашивали, но, учитывая, что одна из причин, почему это сделано (по крайней мере, это то, что я хотел сделать), это то, что музыку можно импортировать в Apple iTunes, которая не поддерживает FLAC. В таком случае имеет смысл конвертировать FLAC в собственный формат Apple без потерь, m4a. Я использовал эту команду для преобразования всех файлов в текущей папке, сохранив при этом файлы аналогичного размера.
find . -name "*.flac" -exec ffmpeg -i {} -map_metadata 0 -acodec alac {}.m4a \;
Этот сценарий flac2mp3.sh используется ffmpeg
для преобразования дерева папок файлов FLAC в другое дерево папок файлов MP3. Обложка прилагается, если присутствует. Вы можете установить CORES
переменную для создания фоновых заданий для одновременного преобразования нескольких файлов.
ffmpeg
Cli вопросы использования на Super User . Stack Overflow предназначен только для вопросов, связанных с программированием. Кроме того, FLAC официально поддерживает только комментарий Vorbis , поэтому я предполагаю, что вы хотите преобразовать в ID3v2 вместо «сохранить».