sox - как создать mp3 файл с битрейтом 16kbps

В настоящее время используется команда

    `sox input.wav -G -t mp3 -r 16k test.mp3`

Но это создает файл с битрейтом 24,0 кбит/с.

Как сделать битрейт выходного файла 16.0 kbps?


person Shamis Shukoor    schedule 03.11.2014    source источник


Ответы (1)


В руководстве по форматам sox вы найдете вариант -C. Ниже я цитирую весь раздел, потому что он может показаться вам интересным.

Однако, если я вызову sox test.wav -C 16.01 test.mp3, мой тестовый файл (48 кГц/16 бит) преобразуется в 32 кбит/с. Если я вызываю lame test.wav -b 16 -q 0 test.mp3, я получаю 16 кбит/с, но test.mp3 преобразуется в частоту дискретизации 8 кГц. Но если я действительно хочу сохранить свои 48 кГц с lame test.wav -b 16 -q 0 --resample 48000 test.mp3, я также получаю 32 кбит/с. Итак, мы видим, что существует компромисс между высокой частотой дискретизации и высокой степенью сжатия.

сжатый звук в формате MP3; MP3 (MPEG Layer 3) является частью запатентованных стандартов MPEG для сжатия аудио и видео. Это формат сжатия с потерями, который обеспечивает хорошую степень сжатия с небольшой потерей качества.

Поскольку MP3 запатентован, SoX не может распространяться с поддержкой MP3, не взимая плату с патентообладателя. Пользователи, которым требуется SoX с поддержкой MP3, в настоящее время должны скомпилировать и собрать SoX с библиотеками MP3 (LAME и MAD) из исходного кода или, в некоторых случаях, получить предварительно созданные динамически загружаемые библиотеки.

При чтении файлов MP3 сохраняется точность до 28 бит, хотя пользователю сообщается только 16 бит. Это сделано для того, чтобы разрешить поведение по умолчанию при записи 16-битных выходных файлов. Пользователь может указать более высокую точность для выходного файла, чтобы предотвратить потерю этой дополнительной информации. Выходные файлы MP3 будут использовать точность до 24 бит при кодировании.

Параметры сжатия MP3 можно выбрать с помощью параметра SoX -C следующим образом (обратите внимание, что текущий синтаксис может быть изменен):

Основным параметром кодера LAME является скорость передачи данных. Если значение -C является положительным целым числом, оно принимается за битрейт в кбит/с (например, если вы указываете 128, используется 128 кбит/с).

Вторым по важности параметром, вероятно, является качество (на самом деле производительность), которое позволяет сбалансировать скорость кодирования и качество. В LAME 0 указывает самое высокое качество, но очень медленное, а 9 указывает низкое качество, но очень быстрое. (5 — значение по умолчанию, а 2 рекомендуется как хороший компромисс для высококачественного кодирования.)

Поскольку значение −C является числом с плавающей запятой, дробная часть используется для выбора качества. 128.2 выбирает кодировку 128 кбит/с с качеством 2. С этим подходом есть одна проблема. Нам нужно 128, чтобы указать кодировку 128 кбит/с с качеством по умолчанию, поэтому 0 означает использование по умолчанию. Вместо 0 вы должны использовать 0,01 (или 0,99), чтобы указать самое высокое качество (128,01 или 128,99).

LAME использует битрейт для указания постоянного битрейта, но более высокое качество может быть достигнуто с использованием переменной битовой скорости (VBR). Качество VBR (фактический размер) выбирается с использованием числа от 0 до 9. Используйте значение 0 для высокого качества, больших файлов и 9 для меньших файлов более низкого качества. 4 по умолчанию.

Чтобы втиснуть выбор VBR в число с плавающей запятой -C, мы используем отрицательные числа для выбора VRR. -4.2 будет выбирать кодировку VBR по умолчанию (размер) с высоким качеством (скоростью). Один особый случай — 0, который является допустимым параметром кодирования VBR, но не допустимым битрейтом. Значение сжатия 0 всегда рассматривается как VBR высокого качества, в результате как -0,2, так и 0,2 рассматриваются как VBR самого высокого качества (размер) и высокого качества (скорость).

person Frank Zalkow    schedule 03.11.2014
comment
Получение форматов ошибок sox WARN: mp3 не может кодировать в 16-бит при попытке -b 16 - person Shamis Shukoor; 04.11.2014
comment
Это верно. MP3 не имеет связанной битовой глубины. Внимание: в sox -b обозначает разрядность, а в lame -b обозначает битрейт! (Если вы не уверены в разнице: битрейт и разрядность.) - person Frank Zalkow; 07.11.2014