Я хочу объединить аудиофайлы mp3 в пакетном режиме, где каждый отдельный файл имеет определенное время начала. Итак, ниже приведен порождение fluent-ffmpeg, которое я использую прямо сейчас, чтобы объединить 3 файла, каждый из которых начинается соответственно с 200, 7400 и 10600.
ffmpeg -i firstFile.mp3 -i secondFile.mp3 -i thirdFile.mp3 -filter_complex
[0]adelay=200[a0];[1]adelay=7400[a1];[2]adelay=10600[a2];[a0][a1]
[a2]amix=inputs=3:dropout_transition=1000,volume=3 -f mp3 pipe:1
Это работает довольно хорошо, за исключением того, что перекодирование более длинных файлов делает процесс очень долгим. Поэтому я хотел сделать то же самое, используя демультиплексор concat. Поскольку я уже знаю длину каждого аудиофайла, я поместил между ними беззвучные аудиофайлы, чтобы создать задержку до следующего аудиофайла, чтобы он фактически начинался в предполагаемой временной позиции.
#concatfile.txt
file silence.mp3
outpoint 200
file firstFile.mp3
file silence.mp3
outpoint 1500
file secondFile.mp3
file silence.mp3
outpoint 2000
file thirdFile.mp3
ffmpeg -f concat -safe 0 -i concatfile.txt -c copy output.mp3
Это решение также хорошо работает при объединении нескольких файлов, но когда я объединяю большее количество файлов, например 30 или 40, файл результата будет иметь медленно растущую проблему синхронизации, когда аудиофайлы фактически начинаются позже, чем метки времени начала, которые они должны иметь.
Похоже, проблема похожа на этот пост
Я открыт для любых предложений по решению проблемы.
inpoint 0.026
для всех MP3 без звука. - person Gyan   schedule 08.08.2019inpoint 0.026
, но вывод, который я получаю, имеет точно такую же продолжительность, когда я не помещал его на первое место. - person Saccarab   schedule 08.08.2019