Фильтры работают с необработанными образцами данных и выводят то же самое. Декодирование происходит до того, как данные отправляются в фильтры, а кодирование происходит после выполнения всей фильтрации. Таким образом, если фильтр не изменяет часть данных, эта часть остается неизменной.
По вашей команде вы выводите в MP3, так что это вызывает принудительное перекодирование. Вы можете избежать этого, выводя на WAV,
ffmpeg -i 0.mp3 -i 1.mp3 -vn -filter_complex acrossfade=d=10:c1=tri:c2=tri out.wav
Вы можете выводить в MP3 во время последней команды кроссфейдера.
Вы также можете выполнить все перекрестные переходы за один звонок.
Пример с 4 файлами,
ffmpeg -i 0.mp3 -i 1.mp3 -i 2.mp3 -i 3.mp3 -vn -filter_complex "[0][1]acrossfade=d=10:c1=tri:c2=tri[a01]; [a01][2]acrossfade=d=10:c1=tri:c2=tri[a02]; [a02][3]acrossfade=d=10:c1=tri:c2=tri" out.mp3