Слияние многих аудиофайлов с определенными позициями

У меня есть несколько аудиофайлов, которые представляют сеанс. Поэтому в одной папке у меня может быть:

2016-06-22-15-59-59-000.mka 2016-06-22-16-59-59-001.mka 2016-06-22-17-59-59-002.mka 

Имя файла – это дата и время создания этого файла. Например, первый файл был создан 22 июня в 15:59. Второй – 16:59.

Продолжительность звука может меняться, фиксированной длительности нет. Например, пользователь может подключиться к сеансу в течение 5 секунд или в течение 10 минут. Итак, первая продолжительность будет 00:05, а вторая 10:00.

Эти файлы вместе представляют сеанс – вот почему они должны быть объединены. Вы можете думать об этом, поскольку несколько человек звонят на тот же номер телефона, который используется для аудиоконференции.

Например, Алиса, Боб и Джон хотят что-то обсудить. Алиса звонит на номер 555-111-22-33, и Боб называет тот же номер через минуту. Они разговаривают вместе в течение 5 минут. И через 30 минут Боб и Джон одновременно назовут тот же номер. И затем Алиса присоединяется через минуту.

Таким образом, в этом случае у нас есть несколько аудиопотоков. Эти потоки обычно перекрываются, но не всегда. Например, когда Алиса ждет Боба в самом начале, мы уже записываем ее, и в этом сеансе нет никого, поэтому этот аудиопоток не перекрывается с другими.

Я ищу лучший способ объединить аудиозапись каждого человека в один файл. Поэтому в этом файле мы должны услышать всех. И между звонками, когда Алиса, Боб и Джон не присутствуют на сессии, должно быть просто молчание.

Я смотрю на ffmpeg doc и не могу найти параметры, которые я могу использовать для создания перекрывающихся потоков, и указать точное время начала потока.

Вы, ребята, знаете, что было бы лучшим способом сделать это? Может быть, мне нужны лучшие инструменты, чем просто ffmpeg, может быть, мне просто нужно использовать библиотеки и язык программирования для создания моей собственной программы? благодаря

Давайте назначим относительное время начала первого звука при t=0 . Итак, если первая запись звука началась в 16:59:23 а третья запись началась в 17:14:13 , то относительное время начала третьего – 14:50 .

Имея это в виду, основная структура команд

 ffmpeg -i first.mka -i second.mka -i third.mka -i fourth.mka -filter_complex "[1]adelay=184000|184000[b]; [2]adelay=360000|360000[c]; [3]adelay=962000|962000[d]; [0][b][c][d]amix=4" merged.mka 

То, что делает команда, это задержка относительного начала каждого аудиофайла, кроме первого, чтобы соответствовать их относительным временам начала реального времени. Затем все задержанные аудиопотоки смешиваются вместе. Фильтр amix вставляет тишину там, где это необходимо.

adelay требует значения в миллисекундах, поэтому 3 минуты, 4 секунды – 184 секунды – 184000 мс. Значение должно быть предоставлено для каждого канала аудиопотока, поэтому, если вы имеете дело с [1]adelay=184000[b] , то [1]adelay=184000[b] является синтаксисом.

  • Соединить видео с разделенным экраном
  • Постоянное исправление для видеозахвата Opencv
  • Ffmpeg соединяет два файла mp4 с ffmpeg в командной строке
  • Недействительная спецификация продолжительности с FFMPEG - что может быть причиной?
  • FFmpeg - Обрезка и наложение - Заморозить рамку
  • Преобразование AVI в H.264, который работает внутри тега видео HTML5
  • Как я могу перекодировать видео H.264 с минимальной потерей качества?
  • Как получить информацию о битрейме с видео YouTube?
  • Получить длину MP3 в Linux / FreeBSD
  • Ffmpeg последовательность изображений
  • Ошибка при открытии энкодера для выходного потока # 0: 1 - возможно, неправильные параметры, такие как бит_трект, скорость, ширина или высота
  • Давайте будем гением компьютера.