Ffmpeg concat аудио без пробелов между ними

Ffmpeg concat аудио без пробелов между ними

Я пытаюсь объединить несколько аудиофайлов m4a, кажется, все работает нормально.

Я использую такую ​​командуffmpeg -f concat -safe 0 -i files.txt -y -af anlmdn output.m4a

Я заметил, что между звуками есть пробелы.Пробелы между аудио

Может кто знает как убрать эти пробелы и сделать конкатенацию каждой записи после каждой

решение1

Когда ffmpeg загружает поток AAC, он внутренне добавляет дополнительные 2 кадра тишины для заполнения, часто называемые «начальными сэмплами». Комментарий выше, в котором говорится, что добавление точки входа 0,2322 является правильным для определенной частоты дискретизации, хотя нужно сделать больше, если вы хотите, чтобы все было идеально бесшовно.

Для бесшовного объединения без пробелов можно сделать следующее:

  1. Рассчитайте длину кадра AAC на основе частоты дискретизации, например, 1024/44100 = 0,02321995 для 44,1 кГц.
  2. Закодируйте два дополнительных кадра AAC в начале и конце каждого сегмента.
  3. Учитывайте 2 тихих замещающих кадра, которые ffmpeg всегда добавляет внутренне.
  4. Назначьте директивы inpoint и outpoint в файле concat txt, чтобы при создании выходного файла использовалось только «хорошее» содержимое.

Два дополнительных начальных кадра необходимы, поскольку каждый кадр AAC зависит от двух предыдущих кадров. Поэтому для правильного кодирования первого кадра ему необходим этот контекст. Два дополнительных кадра в конце необходимы, поскольку ffmpeg сужает аудио в конце, чтобы избежать внезапного щелчка. Добавляя два дополнительных кадра, мы сдвигаем сужение так, чтобы оно не влияло на наш фактический контент. Затем эти дополнительные кадры удаляются с помощью inpoint и outpoint, чтобы избежать повторения контента.

Используя этот метод, важно, чтобы все сегменты имели длину, которая является точным кратным длительности кадра AAC. Если это не так, вы увидите непредсказуемые артефакты на границах сегментов.

Недавно я выпустил репозиторий, который демонстрирует это еще раз с помощью реального кода:https://github.com/wistia/seamless-aac-split-and-stitch-demo.

Связанный контент