Как добавить несколько аудиофайлов в определенное время в видео с помощью ffmpeg?

#video #ffmpeg

#Видео #ffmpeg

Вопрос:

Я пытаюсь добавить 2 аудиофайла, каждый через 10 и 15 секунд после воспроизведения видео.

Я использовал следующую команду, но выходное видео воспроизводит оба аудиофайла одновременно через 10 секунд:

 ffmpeg -y -i video.mp4  
-itsoffset 10 -i audio1.mp3 
-itsoffset 15 -i audio2.mp3 
-filter_complex amix -map 0:v -map 1:a -map 2:a 
-c:v copy -c:a aac -strict experimental output.mp4
  

Как я могу заставить 2 файла воспроизводиться через 10 и 15 секунд каждый после воспроизведения видео?

Ответ №1:

да, решение заключается -async 1 в том, что я добавил общую формулу при добавлении N аудио в видео используйте фильтр amix с входами = N 1

пример: я добавил 4 аудио в одно видео

 ffmpeg -y -i video.mp4 -itsoffset 10 -i note1.mp3 -itsoffset 15 -i note2.mp3 -itsoffset 90.7 -i note3.mp3 -itsoffset 120.58 -i note4.mp3 -filter_complex amix=inputs=5[a] -map 0:v -map [a] -c:v copy -async 1 -c:a aac output.mp4
  

Комментарии:

1. @abdullah_nouraldaim Вы знаете, как также удалить исходное аудио из видео?

Ответ №2:

Я нашел решение. Мне пришлось добавить -async 1 в команду:

 ffmpeg -y -i video.mp4  
-itsoffset 10 -i audio1.mp3 
-itsoffset 15 -i audio2.mp3 
-filter_complex amix -map 0:v -map 1:a -map 2:a 
-c:v copy -async 1 -c:a aac -strict experimental output.mp4
  

Теперь все работает нормально!

Комментарии:

1. По какой-то причине ваш метод работает только для первого аудиофайла со смещением, второй у меня не работает.

2. @zack_lee Вы знаете, как также удалить исходный звук из видео?

Ответ №3:

Ответ Абдуллы Нуралдаима выше отлично подходит для меня, если я хочу сохранить оригинальный звук из видео.

Но если вы хотите удалить звук из исходного видео, вы можете запустить модифицированную версию ниже!

 ffmpeg -y -an -i video.mp4 -itsoffset 10 -i note1.mp3 -itsoffset 15 -i note2.mp3 -itsoffset 90.7 -i note3.mp3 -itsoffset 120.58 -i note4.mp3 -filter_complex amix=inputs=4[a] -map 0:v -map [a] -c:v copy -async 1 -c:a aac output.mp4
  

Изменения:

  1. добавить -an перед video.mp4 , чтобы удалить его аудиопоток
  2. изменить amix=inputs=5[a] на amix=inputs=4[a] , потому что после удаления аудиопотока из our video.mp4 теперь осталось только 4 аудиопотока.