FFMPEG: Перетворення файлів m4a в mp3 без значної втрати інформації / якості. Автоматизований бітрейт


44

У мене є багато аудіофайлів (близько 1000), які я хочу перетворити з m4a в mp3, щоб я міг використовувати їх на CD-програвачі, який має порт USB.

Я спробував зробити щось просте на кшталт: ffmpeg -i FILE.m4a FILE.mp3але це, здається, зменшує бітрейт до дуже низького значення, що не те, що я хочу.

Так само я не хочу конвертувати, використовуючи постійний бітрейт, наприклад, 320k, оскільки деякі файли, які я конвертую, є 320k m4a, а деякі настільки ж низькі, як 96k m4a.

Здається, не має сенсу форсувати 320k, оскільки деякі файли стануть у багато разів більшими, ніж потрібно. Так само немає сенсу знищувати всі мої файли 320k, перетворюючи їх у щось набагато нижче 96k. (На даний момент файли перетворюються приблизно на 50 тис.).

Хтось знає, як я можу це зробити? Що я дійсно хочу зробити, це сказати ffmpeg перетворити всі файли m4a в каталозі в mp3, зберігаючи поточну якість звуку якнайкраще. (Звичайно, є ймовірність виникнення додаткових втрат від перетворення з втратних у формати файлів з втратами.)

Спасибі за вашу допомогу. Якщо це неможливо, чи існує якийсь сценарій, який може виявити необхідну якість, перетворюючи файли окремо?

PS: Я працюю на Intel Mac, але також маю вікно Ubuntu.

Відповіді:


51

VBR

Ви можете скористатися -qscale:aопцією в, ffmpegщоб створити MP3 із змінним бітрейтом (VBR). З FFmpeg Wiki: Кодування аудіо mp3 VBR (змінної швидкості передачі) :

Контроль якості -qscale:a(за псевдонімом -q:a). Значення специфічні для кодера, тому для libmp3lame діапазон становить 0-9, де нижче значення - це більш висока якість. 0-3 зазвичай дають прозорі результати, 4 (за замовчуванням) повинні бути близькими до сприйнятої прозорості, а 6 зазвичай дає «прийнятну» якість. Параметр -qscale:aвідображається на -Vпараметр в автономному інструменті інтерфейсу командного рядка кульгавого.

Вам доведеться експериментувати, щоб побачити, яке значення для вас прийнятне. Також дивіться Водневий аудіо: Рекомендовані налаштування коду LAME .

Кодування декількох файлів

Ви можете використовувати Bash "for loop" для кодування всіх файлів у каталозі:

$ 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 .


1
Добре дякую, команди працювали, але я не думаю, що це робить те, що я хотів. Я встановив -q: a 0, що робить те, що я очікував для m4a вищої якості (створюючи великі файли з більшою швидкістю vbr), але файли більш низької якості, я думаю, все ще перетворюються у великі файли, з vbr's приблизно 250-260 кб / с. Я б очікував, що файли розміром приблизно 96 к у форматі m4a будуть перетворені на аналогічний бітрейт з кульгавим кодером у режимі vbr. Я припускаю, що я не зовсім зрозумів, як працює режим кодування vbr?
користувач3728501

20

використовувати FFmpeg (також є багато версій GUI)

  1. MP3 вже припинено (у 2017 році), застарілий кодек. Інтернет вже перейшов на AAC (більш ефективний та якісний кодек):

    ffmpeg -i filenameee.m4a -acodec copy output.aac
    
  2. Однак якщо ви все ще бажаєте використовувати MP3 (оскільки він підтримується ще багатьма пристроями):

    ffmpeg -i filenameee.m4a -acodec libmp3lame -ab 256k output.mp3
    

4
Оскільки питання про якість, можливо, це буде корисно, якщо перейти на 256k замість 128.
VessoVit


1

Використовуючи наявні відповіді як основу, я написав скрипт 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

0

Якщо ви працюєте на 48 ХЗ і принаймні 24-розрядні у вхідному файлі (від файлового редактора i.ex.) -q:a 0відтворюватимуть 20 кГц не настільки великий файл, як flac ... Але звук низької якості, якщо ви не зменшите шум з високих частот (шипіння) від звучання або зменшення носа звукові редактори, створені в конверсіях, які будуть відтворені, а потім використовуватимуть файл даних як нечутний ВЧ, але дорогий шум.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.