1

Я пытаюсь объединить некоторые аудиофайлы mp3 с помощью следующей команды:

ffmpeg -y -i concat:"1.mp3|2.mp3|3.mp3" -c copy output.mp3

FFMPEG оставляет несколько крошечных пустых звуковых точек между объединенными файлами, просматривая output.mp3 с Audacity, который у меня есть:

Есть ли какая-то функциональность на FFMPEG, чтобы избежать этих пустых звуковых пятен?

1 ответ1

5

Технический FAQ LAME содержит некоторую соответствующую информацию. Вот некоторые выдержки:

Почему LAME добавляет тишину в начало каждой песни?

Это из-за нескольких факторов:

Задержка декодера при запуске файла:

Все протестированные мной декодеры вводят задержку в 528 сэмплов. То есть после декодирования mp3-файла на выходе будет 528 сэмплов нулей, добавленных вперед. Это связано с тем, что стандартные процедуры MDCT/filterbank, используемые ISO, имеют задержку выборки 528.

Кроме того, из-за перекрывающейся природы кадров MDCT, первая половина первой гранулы (1 гранула = 576 выборок) не имеет предыдущего кадра для перекрытия, что приводит к ослаблению первых N выборок.

Задержка кодера в начале файла:

Кодеры на основе ISO (BladeEnc, 8hz-mp3 и т.д.) Используют процедуру MDCT/filterbank, аналогичную той, которая используется при декодировании, и, таким образом, также вводят собственную задержку выборки 528. WAV-файл, закодированный и декодированный, будет иметь задержку 1056 сэмплов (1056 сэмплов будут добавлены в начало).

Начиная с LAME 3.55, у нас есть новая подпрограмма MDCT/filterbank, написанная Такехиро Томинага с задержкой 48 выборок.

Обратитесь к Техническому FAQ LAME для получения дополнительных ответов и более подробной информации.

Некоторые варианты, которые не являются хорошими, но могли бы сделать работу:

  • Вы должны использовать MP3? Можете ли вы повторно вывести ваши файлы в другой формат, такой как PCM ("wav")? Обратите внимание, что простая перекодировка существующих файлов MP3 в другой формат сохранит задержку.

  • Вы можете использовать afade звуковой фильтр , чтобы добавить замирание из / исчезать в каждой секции, или atrim аудио фильтр , чтобы , возможно , сделать зазоры менее резким. Однако фильтрация требует перекодирования.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .