Як я можу перетворити .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
ffmpeg3.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запитання щодо використання кліків у Super User . Переповнення стеку призначене лише для питань, що стосуються програмування. Крім того, FLAC офіційно підтримує лише коментарі Vorbis , тому я припускаю, що ви хочете перетворити на ID3v2 замість "тримати".