FFMPEG: конвертировать файлы m4a в mp3 без существенной потери информации / качества. Автоматизированный битрейт
У меня есть загрузка аудиофайлов (около 1000), которые я хочу конвертировать из m4a в mp3, поэтому я могу использовать их воспроизведение на CD-плеере с USB-портом.
Я попытался сделать что-то простое: ffmpeg -i FILE.m4a FILE.mp3
но это, похоже, уменьшает битрейт до очень низкого значения, чего я не хочу.
Точно так же я не хочу конвертировать с использованием постоянного битрейта, такого как 320k, потому что некоторые из файлов, которые я конвертирую, являются 320k m4a, а некоторые из них имеют низкое качество, как 96k m4a.
- FFmpeg в партии для цикла для MP3 Продолжительность
- Лучшая программа для обрезания начала и конца mp3-файлов?
- Удаление дубликатов файлов с расширенным поиском имен
- Преобразование кассетной записи в цифровой формат
- Как играть в MP3-файлы на вход микрофона
Кажется, нет смысла форсировать 320k, так как некоторые файлы будут во много раз больше, чем они должны быть. Точно так же нет смысла уничтожать все мои 320k-файлы, преобразовывая их в нечто гораздо меньшее, чем 96k. (На данный момент файлы конвертируются примерно в 50 тыс.).
Кто-нибудь знает, как я могу это сделать? Я действительно хочу сказать, что ffmpeg конвертирует все файлы m4a в каталог в mp3, сохраняя при этом текущее качество звука, насколько это возможно. (Конечно, скорее всего, будут некоторые дополнительные потери от конвертирования из файлов с потерями в файлы с потерями).
Спасибо за вашу помощь. Если это невозможно, существует ли какой-то скрипт, который может обнаружить требуемое качество при конвертировании файлов по отдельности?
PS: Я работаю над Intel Mac, но также имею Ubuntu.
- Автоматическая пометка MP3-файлов
- MP3 vs M4A (AAC): что такое аудиокодек для портативных устройств, который обеспечивает максимальную независимость?
- Воспроизведение .mp3 и .wav в Java?
- Получить продолжительность песни из mp3-файла в скрипте?
- Как закодировать WAV в mp3 на устройстве Android
- Почему Firefox не поддерживает формат файла MP3 в
- Как играть в MP3-файлы в C?
- Изменить Tone / Pitch для аудиофайла файла?
VBR
Вы можете использовать параметр -qscale:a
в ffmpeg
для создания выходного сигнала переменной битрейта (VBR). Из FFmpeg Wiki: Кодирование VBR (Variable Bit Rate) mp3-аудио :
Качество управления с помощью
-qscale:a
(или псевдоним-q:a
). Значения специфичны для кодировщика, поэтому для libmp3lame диапазон 0-9, где более низкое значение является более высоким. 0-3, как правило, выдают прозрачные результаты, 4 (по умолчанию) должны быть близки к прозрачности восприятия, а 6 обычно производит «приемлемое» качество. Параметр-qscale:a
сопоставляется с параметром-V
в автономном интерфейсе командной строки командной строки.
Вам нужно поэкспериментировать, чтобы узнать, какое значение вам приемлемо. Также см. Hydrogen Audio: Рекомендуемые настройки кодировщика LAME .
Кодирование нескольких файлов
Вы можете использовать Bash для цикла для кодирования всех файлов в каталоге:
$ mkdir newfiles $ for f in *.m4a; do ffmpeg -i "$f" -codec:v copy -codec:a libmp3lame -q:a 2 newfiles/"${f%.m4a}.mp3"; done
Получить ffmpeg
Рекомендуется использовать недавнюю сборку ffmpeg
если это возможно. См. Страницу загрузки FFmpeg для ссылок на сборки для OS X, Linux и Windows. Вы также можете следовать руководству по компиляции FFmpeg .
Использование, FFmpeg (Полная информация по адресу: http://ubuntuforums.org/showthread.php?t=1614765 )
ffmpeg -i filenameee.m4a -acodec libmp3lame -ab 128k output.mp3
Это сработало для меня:
ffmpeg -i testing.m4v -b:a 192K -vn testing.mp3
Если вы работаете на 48 KhZ и по крайней мере 24-бит во входном файле (из редактора файлов i.ex.) -q:a 0
будет воспроизводить 20 кГц в не столь большом файле, как flac … Но звук низкого качества Если вы не уменьшите шум от высоких частот (шипение) с помощью звуковых редакторов сглаживания или уменьшения носа, созданных в конверсиях, которые будут воспроизведены, затем будут использовать файл данных как неслышимый HF, но дорогой шум.
Используя существующие ответы в качестве основы, я написал сценарий bash, который должен делать именно то, что задает вопрос на машине Ubuntu (протестировано 16.04). Вам нужно будет установить avprobe
который находится в пакете libav-tools
. Вы можете установить avprobe
со следующей командой
sudo apt-get install libav-tools
ПРИМЕЧАНИЕ. Было бы разумно сделать резервную копию любой папки, в которой вы запускаете этот скрипт, а также приложить все усилия, чтобы прочитать и понять, что он делает перед запуском.
Я не очень тщательно тестировал YMMV.
#!/bin/bash mkdir "mp3s" for f in *.m4a; do bitrate=$(avprobe "${f}" 2> >(grep bitrate) | sed 's/^.*bitrate://g' | sed 's/[^0-9]*//g') bitrate="${bitrate}K" new_filename=$(echo "${f}" | sed 's/.m4a$/.mp3/g') ffmpeg -y -i "${f}" -acodec libmp3lame -ab "${bitrate}" "mp3s/${new_filename}" done