У меня есть видеофайл, который разделен на три разных раздела. Я хочу заменить среднюю часть этого видео другим клипом. Однако я все же хочу сохранить звук исходного видео. Могу я сделать это в ffmpeg?
Вот мои требования:
- Исходное видео длится 60 секунд.
- Часть, которую я хочу заменить, составляет от 25 до 45 секунд.
- Я хочу сохранить исходный звук от 25 до 45 секунд и просто заменить визуальную часть другим клипом.
- Сгенерированное видео также будет продолжительностью 60 секунд. Однако у него будет новое видео от 25 до 45 секунд.
Спасибо.
2 ответа
Вероятно, вы захотите сделать три отдельных шага:
- разделить исходный вход на три клипа (0-25, 25-45, 45-60)
- изменить средний клип, чтобы использовать исходное аудио и пользовательское видео (см. ниже)
- объединить все три клипа
Чтобы получить средний клип с оригинальным звуком и новым видео, вы можете просто использовать -карта вариант:
ffmpeg -i original.mp4 -i newvideo.mp4 -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 newmiddle.mp4
Простой метод — использовать установки фильтр, чтобы добавить задержку к new.mp4
, а затем наложение фильтр с enable
возможность разместить new.mp4
над original.mp4
:
ffmpeg -i original.mp4 -i new.mp4 -filter_complex "[1]setpts=PTS-STARTPTS+25/TB[fg];[0][fg]overlay=enable="between(t,25,45)"[v]" -map "[v]" -map 1:a -c:a copy output.mp4
Это предполагает
new.mp4
имеет ту же ширину x высоту, что иoriginal.mp4
. Если нет, добавьте фильтр scale, scale2ref, pad и / или обрезки.Удалите настройки, если хотите
new.mp4
для воспроизведения с собственной отметкой времени 25 секунд вместо отметки времени 0 при наложении.
Спасибо @rauberdaniel. 🙂 К сожалению, объединение файлов дает мне ошибку о
Non-monotonous DTS in output stream
.— Настоящий нуб
19 часов назад