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