Используя FFmpeg, я пытаюсь объединить много аудиофайлов в один длинный, с перекрестным затуханием между каждым из них.Для простоты, скажем, у меня есть 10 входных файлов, каждые 5 минут, и я хочу 10-секундное перекрестное затухание между каждым.(Результирующая продолжительность будет 48:30.) Предположим, что все входные файлы имеют одинаковый кодек / битрейт.
Я был приятно удивлен, обнаружив, насколько просто было пометить два файла:
ffmpeg -i 0.mp3 -i 1.mp3 -vn -filter_complex acrossfade=d=10:c1=tri:c2=tri out.mp3
Но фильтр acrossfade
не допускает более 3 входов.Поэтому мое наивное решение состоит в том, чтобы повторно запускать ffmpeg
, смешивая предыдущий промежуточный вывод со следующим входным файлом.Это не идеально.Это приводит меня к двум вопросам:
1.acrossfade
Копирует ли без потерь потоки? (Конечно, кроме случаев, когда они активно затухают.) Или все входные потоки перекодируются?
Если входные потокиполностью перекодированы, тогда мой наивный подход очень плох.В приведенном выше примере (вызов acrossfade
9 раз), первые 4:50 первого файла будут перекодированы 9 раз!Если я объединяю 50 файлов, первый файл перекодируется 49 раз!
2.Чтобы избежать многократных запусков и проблемы перекодирования, могу ли я добиться поведения многопереходного затухания в одном вызове ffmpeg
?
Я предполагаю, что мне понадобится какой-то длинный фильтр-график, но я не понял этогоеще нет.У кого-нибудь есть пример кроссфейдинга всего 3 входных файлов?Исходя из этого, я могу автоматизировать графы фильтров для более длинных цепочек.
Спасибо за любые советы!