Конвертируйте .flac в .mp3 с помощью ffmpeg, сохраняя все метаданные
88
Как я могу преобразовать .flac в .mp3 с помощью ffmpeg, сохранив все метаданные (то есть преобразовать комментарий Vorbis в файлах .flac в метаданные ID3v2 из .mp3)?
Обратите внимание , что в следующий раз вы должны задать ffmpegCli вопросы использования на Super User . Stack Overflow предназначен только для вопросов, связанных с программированием. Кроме того, FLAC официально поддерживает только комментарий Vorbis , поэтому я предполагаю, что вы хотите преобразовать в ID3v2 вместо «сохранить».
llogan
Хорошо, я исправил свой вопрос. Я спросил здесь, потому что я видел подобные вопросы в StackOverflow (например, это или это ), и предположил, что было бы интересно поделиться своими знаниями. Кроме того, я вижу, что есть тег ffmpeg , так почему бы не поделиться здесь моим решением? ffmpeg используется во многих приложениях многими разработчиками.
Вито Джентиле
3
FFmpeg тег говорит, «Вопросы интерактивного использования инструмента командной строки FFmpeg следует задавать на Super User.». Это не имеет большого значения, но я просто хотел указать на это, поскольку, на мой взгляд, здесь слишком много вопросов, не относящихся к теме.
llogan
Ответы:
152
Следующая команда сохраняет высокое качество в формате .mp3 (320 кбит / с), а метаданные из файла .flac преобразуются в формат ID3v2, который может быть включен в файлы .mp3:
Стоит отметить, что "ffmpeg" может потребоваться заменить на "avconv".
shockburner
5
FWIW ffmpeg3.2 автоматически копирует метаданные в ID3v2 из FLAC без необходимости указывать -map_metadata 0 -id3v2_version 3, но не копирует в теги ID3v1. Я использую для этого отдельный инструмент.
Дай
1
текст песни все еще не копируется
user151496
1
Делит ли он flac, если есть несколько частей?
Артем
1
@Artyom У вас, вероятно, должен быть файл cue вместе с вашим flac, где отмечены точки разделения. В таком случае вы можете использовать shnsplit (консоль) или flacon (GUI), чтобы разделить файл и преобразовать части в mp3. Если у вас есть только один flac, вы можете либо написать для него cui, либо использовать параметры -ss и -t ffmpeg, чтобы вырезать каждую песню.
56
Идеальный ответ выше. Я использую его вместе с find, чтобы добавить все файлы FLAC в поддереве в iTunes с помощью этой команды
Анекдот: все пользователи в нашей компании имеют имена звездочек, сокращенные до 3-5 символов. Мой "сириус", коротко, сэр;)
user2707001
Неизвестная опция "имя".
MonsterMMORPG
14
Если вы хотите сэкономить немного места, попробуйте рекомендацию Hydrogenaud.io :
Очень высокое качество: HiFi, дом или тихо слушать, с самым лучшим размером файла
-V0 (~245 kbps), -V1 (~225 kbps), -V2 (~190 kbps)или -V3 (~175 kbps)рекомендуются. Эти настройки VBR обычно дают прозрачные результаты. Слышимые различия между этими предустановками могут существовать, но встречаются редко.
Если вы хотите использовать эту опцию в ffmpeg, вам следует использовать -q:a 0псевдоним.
Контроль качества с помощью -qscale:a(или псевдонима -q:a). Значения зависят от кодировщика, поэтому для libmp3lame диапазон 0-9, где меньшее значение означает более высокое качество. 0–3 обычно дает прозрачные результаты, 4 (по умолчанию) должно быть близко к прозрачности восприятия, а 6 дает «приемлемое» качество. Параметр -qscale:aсопоставлен с -Vпараметром автономного инструмента интерфейса командной строки.
Он создаст папку с именем «mp3» внутри папки с файлами flac и внутри папки mp3 будет сохранять относительные файлы mp3 с битрейтом 320 кбит / с, без сохранения старого расширения файла в имени.
:rпохоже на zshмодификатор, который не работает в bash. В Bash вы можете заменить "${file:r}.mp3"на "${file%.flac}.mp3".
mivk
чтобы показать только имя файла из файла, в bash используйте${file%.*}
Evhz
2
Я знаю, что об этом не спрашивали, но, учитывая, что одна из причин, почему это сделано (по крайней мере, это то, что я хотел сделать), это то, что музыку можно импортировать в Apple iTunes, которая не поддерживает FLAC. В таком случае имеет смысл конвертировать FLAC в собственный формат Apple без потерь, m4a. Я использовал эту команду для преобразования всех файлов в текущей папке, сохранив при этом файлы аналогичного размера.
Неизвестный вариант "имя". Ошибка при разделении списка аргументов: параметр не найден
MonsterMMORPG
@MonsterMMORPG, вы, вероятно, пропустили ввод. после команды find. Файл. указывает find искать в текущей папке, а -name указывает ему искать совпадающие имена файлов.
Дхирадж Гупта
2
Этот сценарий flac2mp3.sh используется ffmpegдля преобразования дерева папок файлов FLAC в другое дерево папок файлов MP3. Обложка прилагается, если присутствует. Вы можете установить CORESпеременную для создания фоновых заданий для одновременного преобразования нескольких файлов.
ffmpeg
Cli вопросы использования на Super User . Stack Overflow предназначен только для вопросов, связанных с программированием. Кроме того, FLAC официально поддерживает только комментарий Vorbis , поэтому я предполагаю, что вы хотите преобразовать в ID3v2 вместо «сохранить».Ответы:
Следующая команда сохраняет высокое качество в формате .mp3 (320 кбит / с), а метаданные из файла .flac преобразуются в формат ID3v2, который может быть включен в файлы .mp3:
источник
ffmpeg
3.2 автоматически копирует метаданные в ID3v2 из FLAC без необходимости указывать-map_metadata 0 -id3v2_version 3
, но не копирует в теги ID3v1. Я использую для этого отдельный инструмент.Идеальный ответ выше. Я использую его вместе с find, чтобы добавить все файлы FLAC в поддереве в iTunes с помощью этой команды
Чтобы автоматически добавить полученные файлы в iTunes, получите каталог импорта iTunes с помощью
результат например
Затем запустите, например,
Для автоматического добавления всех преобразованных треков в iTunes.
источник
Если вы хотите сэкономить немного места, попробуйте рекомендацию Hydrogenaud.io :
Источник: http://wiki.hydrogenaud.io/index.php?title=LAME
Если вы хотите использовать эту опцию в ffmpeg, вам следует использовать
-q:a 0
псевдоним.Источник: https://trac.ffmpeg.org/wiki/Encode/MP3
Если вам нужны метатеги ID3v1, вам следует добавить
-write_id3v1 1
параметр.Итак, моя последняя команда:
источник
Я тестировал следующую команду для преобразования
infile.flac
файла вoutfile.mp3
:Начиная с Ubuntu 16.04, вышеуказанная команда, похоже, копирует (большую часть? Все?) Метаданные.
-q:a 0
говоритffmpeg
использовать VBR высочайшего качества.Тем не менее, я
ffmpeg
перекодировал обложку моего альбома сjpeg
наpng
, что увеличило размер обложки.(Я предполагаю, что приведенное выше преобразование имеет смысл, учитывая, как
ffmpeg
работает .)Покопавшись, я нашел
-c:v copy
вариант, в котором указано, что видеопоток следует копировать, а не перекодировать. Полная команда:Приведенная выше команда приводит к:
источник
Чтобы рекурсивно преобразовать в mp3 все файлы flac во вложенных папках, я использовал эту команду:
Он создаст папку с именем «mp3» внутри папки с файлами flac и внутри папки mp3 будет сохранять относительные файлы mp3 с битрейтом 320 кбит / с, без сохранения старого расширения файла в имени.
источник
Однострочное преобразование всех
.flac
файлов.mp3
в один каталог с сохранением большей части метаданных:for file in *.flac; do ffmpeg -i $file -q:a 0 ${file:r}.mp3; done
(Примечание:
${file:r}
удаляет расширение указанного пути к файлу)источник
$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
переменную для создания фоновых заданий для одновременного преобразования нескольких файлов.источник