1

Я много искал, но не могу найти точное решение. А также я новичок в Ubuntu и не знаю технических деталей музыкальных файлов. На самом деле я хочу наложить 2 mp3 файла. Предположим, у меня есть два входных файла

A.mp3 ==> duration 03:00
B.mp3 ==> Duration 07:00

Теперь я хочу C.mp3 (выходной файл), который является комбинацией A.mp3 и B.mp3. Но вот что я хочу: файл A.mp3 должен воспроизводиться до конца в C.mp3. Это означает, что если музыка файла A.mp3 остановится через 03:00 минуты, то она должна начаться немедленно до 07:00 минут (Продолжительность B.mp3) «.

Я попробовал следующую команду, но это не то, что я хочу

ffmpeg -y -i A.mp3 -i B.mp3 -filter_complex "[0:0][1:0] amix=inputs=2:duration=longest" -c:a libmp3lame C.mp3

Приведенная выше команда будет перекрывать два файла. но A.mp3 не будет повторяться, как только он закончится.

Заранее спасибо.

2 ответа2

2

Вы можете сделать это, используя фильтр источника фильма

ffmpeg -i long.mp3 -filter_complex "amovie=short.mp3:loop=999[s];[0][s]amix=duration=shortest" c.mp3
0

Самый прозрачный способ добиться этого - выполнить цикл вручную: автоматический цикл работает только в очень новых версиях ffmpeg, которые могут быть недоступны во многих дистрибутивах.

Сначала создайте concat- файл A.ffconcat , который повторяет A 3 раза:

file 'A.mp3'
file 'A.mp3'
file 'A.mp3'

Теперь измените вашу командную строку:

ffmpeg -y -f concat -i A.ffconcat -i B.mp3 -filter_complex "[0:0][1:0] amix=inputs=2:duration=shortest" -c:a libmp3lame C.mp3

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .