У меня есть видео со звуком (overlayvideo.mov), которое я накладываю поверх другого видео (basefilem.mp4) и начинаю наложение через 20 секунд. Вывод (finalvideo.mp4) выглядит великолепно, но звук из оверлея все еще начинается с 00:00:00.000, а не тогда, когда мне нужно его запустить, а именно 00:00:20.000 (который я установил с помощью itoffset).

Я понимаю, что это смещение имеет дело только с видео. Итак, как мне указать в моей команде ниже запуск аудио в оверлее одновременно с его смещением?

Это моя текущая команда. Он работает отлично, за исключением того, что я просто пытаюсь выяснить, как и где разместить фильтр adelay с этим, чтобы звук в оверлее начинался одновременно с видео оверлея (в этом примере мне нужен звук оверлея для запуска через 20 секунд)

ffmpeg -y -i basefilem.mp4 -itoffset 00:00:20.000 -i overlayvide.mov - ilter_complex "[1:v]scale=1280x720[ovrl];[0:v][ovrl]overlay=eof_action=pass[outv];[0:a][1:a]amix[outa]" -map [outv] -map [outa] -c:v mpeg4 -strict experimental -ascale:v 10 finalvideo.mp4

1 ответ1

0

После нескольких часов попыток найти различные решения с помощью atrim и adelay, которые ни у меня не работали правильно, я в итоге выбрал этот путь. Работал как шарм.

  1. Создать [s1]. N - количество секунд (для соответствия смещению видео (itsoffset)) aevalsrc=0:d=N[s1]
  2. Concat [s1] и аудио оверлейного видео (где [s1] находится перед [1:a]): [s1][1:a]concat=n=2:v=0:a=1[ovrla]
  3. Аудио Amix из basevideo ([0:a]) с [ovrla]

    Ffmpeg -y -i basevideo.mp4 -itsoffset 4 -i overlayvideo.mov -filter_complex "aevalsrc=0:d=4[s1];[s1][1:a]concat=n=2:v=0:a=1[ovrla];[1:v]scale=1280:720[ovrl];[0:v][ovrl]overlay=eof_action=pass[outv];[0:a][ovrla]amix[outa]" -map [outv] -map [outa] -c:v mpeg4 -strict experimental -qscale:v 10 finalvideo.mp4

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