нормализовать уровень громкости mp3-файла с помощью sox, используя максимальный битрейт для нового файла

Итак, первая проблема заключается в обнаружении файлов, которые необходимо переместить.

Это можно сделать с помощьюgrep:

grep -q -E '^>.*_(1?[0-9]|2[0-4])$'
grep -q -E '^>.*_(2[5-9]|[3-9][0-9]|[0-9]{3,})$'

Эти команды возвращали бы значение true, если бы входные данные содержали строку, совпадающую с указанными расширенными регулярными выражениями.

Выражение _(1?[0-9]|2[0-4])$будет соответствовать любому положительному целому числу меньше 25, стоящему в конце строки после символа подчеркивания, а _(2[5-9]|[3-9][0-9]|[0-9]{3,})$соответствует любому положительному целому числу больше или равному 25 в конце строки после символа подчеркивания. (при условии, что не существует нулевых -заполненных целых чисел, таких как002). Мы также сопоставляем >в начале строки. Опция -qостановит grepот фактического вывода всего, что (нас интересует только то, сможем ли мы найти одну из этих строк или нет ).

Для копирования файла первый grepдолжен возвращать false , а второй grepдолжен возвращать true .

Применение этого к каждому файлу каталога (в этом случае независимо от того, как файлы называются, поскольку вы ничего не сказали об этом):

for filename in./*; do
    [ ! -f "$filename" ] && continue

    if ! grep -q -E '^>.*_(1?[0-9]|2[0-4])$' "$filename" &&
         grep -q -E '^>.*_(2[5-9]|[3-9][0-9]|[0-9]{3,})$' "$filename"
    then
        mv -i "$filename" /some/destination
    fi
done

Это приведет к перемещению файлов, соответствующих требованиям, в некоторый каталог назначения по адресу /some/destination.Параметр -iдля mvзаставит утилиту запрашивать подтверждение перед перезаписью уже существующего файла с тем же именем, что и перемещаемый файл.

Первый [ ! -f... ]тест в цикле будет пропускать в каталоге все, что не является обычным файлом (или символической ссылкой на обычный файл ).

0
30.09.2019, 00:13
2 ответа

LoudGain кажется идеальным инструментом :https://github.com/Moonbase59/loudgain

It uses the well-known mp3gain commandline syntax but will never modify the actual audio data. Just what you ever wanted: The best of mp3gain, ReplayGain 2.0 and Linux combined.

Уменьшает усиление до -1 dBTP (вместо 0 dBTP, в соответствии с рекомендацией EBU ). Почти запас безопасности в случае, если дальнейший маршрут воспроизведения «только» понимает ReplayGain, но не имеет предотвращения отсечения

.

Установите LoudGain (с помощью Homebrew):

wget https://raw.githubusercontent.com/Homebrew/install/master/install.sh
# first check what you get before install ;)
less install.sh
# press q and then install homebrew with:
/bin/bash -c install.sh
brew install Moonbase59/tap/loudgain

рекомендуемое использование для mp3:

loudgain -I3 -S -L -a -k -s e *.mp3

см.https://github.com/Moonbase59/loudgain/blob/master/docs/loudgain.1.md#recommendations

0
13.07.2020, 01:12

Взгляните на mp3gain , который (обратимо )изменяет коэффициент масштабирования в каждом кадре MP3 для регулировки громкости. Изменение файла MP3 таким образом не требует распаковки и повторного сжатия; звук будет таким же хорошим (или плохим ), как и оригинал.

Однако имейте в виду, что если исходные MP3-файлы, которые у вас есть, имеют низкое качество из-за низкого уровня усиления, вы ничего не можете сделать для улучшения этого (кроме создания новых файлов MP3 ). Так что, если низкий уровень усиления маскирует искажения, которые вы услышите при более высоких уровнях усиления, вам придется с этим смириться. Увеличение битрейта не поможет.

2
28.01.2020, 03:14

Теги

Похожие вопросы