По этой теме много вопросов link1, link2 и ссылка3. Тем не менее, я прошу предложений о вероятном решении и о том, есть ли у него какие-то недостатки.
Определение проблемы: amix-filter всегда выполняет "нормализацию громкости" и не может быть отключен
Ссылка: прочитайте комментарии по здесь от @Reino. Он также открыл тикет на форуме FFmpeg, чтобы объяснить ситуацию.
Хакерское решение: amix=inputs=13:dropout_transition=1000,volume=13
Ссылка: Ответил здесь, а также в билет.
Вопросы:
1) "amix масштабирует громкость каждого входа на 1/n, где n = количество активных входов. Это оценивается для каждого аудиокадра. Таким образом, когда вход пропадает, громкость оставшихся входов равна масштабируется на меньшую величину, поэтому их объемы увеличиваются."Ссылка
Например, если я объединяю 10 аудиопотоков, то 1-й аудиопоток будет масштабироваться на 1/10, 2-й на 1/9, 3-й на 1/8.. 9-й на 1/2 и последний 10-й на 1. Разве я понял это правильно или дайте мне знать, если я что-то упустил?
2) dropout_transition: время перехода в секундах, для перенормировки громкости, когда входной поток заканчивается. Значение по умолчанию — 2 секунды.
dropout_transition означает, что будет ПРОПУСКАТЬ заданные секунды, верно? Поэтому, если я установлю dropout_transition=1000 (очень большое число), то независимо от длины видео FFmpeg будет отбрасывать/пропускать аудиопереход в течение заданных секунд. Опять же, пожалуйста, поправьте меня, если я сделал неправильное предположение.
3) Я безуспешно пробовал много других решений, и теперь я полностью полагаюсь на предоставленное решение. Есть ли недостаток в приведенном выше хакерском решении?