Я получил две разные команды.
ffmpeg -i input.mp3 -i second.mp3 -filter_complex "[0:a]atrim=end=10,asetpts=N/SR/TB[begin];[0:a]atrim=start=10,asetpts=N/SR/TB[end];[begin][1:a][end]concat=n=3:v=0:a=1[a]" -map "[a]" output
Эта команда вставляет second.mp3 в input.mp3. Кажется, всегда сохраняются параметры input.mp3. Он вставляет его точно за 10 секунд ввода .mp3.
Вот вторая команда:
ffmpeg -i input.mp3 -i second.mp3 -filter_complex "[1:a]adelay=10000|10000[1a];[0:a][1a]amix=duration:first" output
Эта команда ближе к моей конечной цели. Он воспроизводит input.mp3 и ровно через 10 секунд воспроизводит файл second.mp3 без остановки звука input.mp3 (я думаю, это называется микшированием?)
Моя конечная цель - создать final.mp3.
Его длительность всегда должна быть равна длительности input.mp3. Он должен сохранять частоту дискретизации, количество каналов и т. Д. Input.mp3
При воспроизведении final.mp3 он должен воспроизводить весь input.mp3.
Но каждые 10-15 секунд он должен воспроизводить second.mp3 без остановки input.mp3. (Mix)
Можно сказать, что я должен использовать «Вторая команда», но в цикле.
Было бы здорово, если бы в ffmpeg для этого была команда из одной строки.
Я работаю с flac, mp3 и wav, и обе команды были подходящими для этого.
Например:
input.mp3 может длиться 40 секунд.
second.mp3 может быть длиной 2 секунды.
Когда я играю в final.mp3, он будет длиться 40 секунд, но каждые 10-15 секунд (в произвольном порядке) он будет воспроизводить second.mp3 одновременно с input.mp3.
К сожалению, у меня нет опыта работы с ffmpeg, обе команды, которые я получил, являются ответами на вопросы здесь в stackoverflow. Надеюсь, кто-нибудь может мне помочь. Спасибо!