Объедините два видеоклипа в один, расположив их рядом друг с другом

38

У меня есть два видео клипа. Оба 640x480 и последние 10 минут. Один содержит фоновый звук, другой поющий актер. Я хотел бы создать один 10-минутный видеоклип размером 1280x480 (иными словами, я хочу разместить видео рядом друг с другом и воспроизводить их одновременно, смешивая аудио из обоих клипов). Я пытался выяснить, как это сделать с помощью ffmpeg / avidemux, но до сих пор я оказался пустым. Все они относятся к объединению, когда я ищу слияния.

Любые рекомендации?

Восстановить Монику
источник

Ответы:

45
ffmpeg \
  -i input1.mp4 \
  -i input2.mp4 \
  -filter_complex '[0:v]pad=iw*2:ih[int];[int][1:v]overlay=W/2:0[vid]' \
  -map [vid] \
  -c:v libx264 \
  -crf 23 \
  -preset veryfast \
  output.mp4

Это по существу удваивает размер input1.mp4, добавляя правую сторону черным цветом, равным размеру исходного видео, и затем помещает input2.mp4 поверх этой черной области с помощью наложенного фильтра.

Источник: https://superuser.com/questions/153160/join-videos-split-screen

январь
источник
Что делает -map [vid]?
0xcaff
@caffinatedmonkey [vid]- это так называемая linklabel , которая является определенной меткой выходной ссылки в графе фильтра (строка выше с filter_complex). Он отображает выходные данные из сложного графа фильтра в выходной файл.
января
Я получаю Unrecognized option 'crf'. Ошибка разделения списка аргументов: опция не найдена. Если я удалю crтогдаunrecognized option 'preset'
RS
Получениеno such filter
user1767754
25

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

Тем не менее, использование hstackfilter_complex обеспечивает идеальную производительность:

ffmpeg -i left.mp4 -i right.mp4 -filter_complex hstack output.mp4
Альбус Дамблдор
источник
22

Это можно сделать всего двумя фильтрами, и звук с обоих входов также будет включен.

ffmpeg -i left.mp4 -i right.mp4 -filter_complex \
"[0:v][1:v]hstack=inputs=2[v]; \
 [0:a][1:a]amerge[a]" \
-map "[v]" -map "[a]" -ac 2 output.mp4
  • hstack разместит каждое видео рядом.
  • Amerge объединит звук с обоих входов в один многоканальный аудиопоток и -ac 2сделает его стереофоническим; без этой опции аудиопоток может закончиться как 4 канала, если оба входа стереофонические.
llogan
источник
Здравствуйте. Могу ли я наложить одно видео на другое?
Нисарг
@Nisarg Используйте оверлейный фильтр .
Llogan
Я хочу, чтобы верхнее видео было немного прозрачным, чтобы можно было видеть, что происходит в фоновом режиме. Вы можете помочь мне с этим?
Нисарг
Здравствуйте, сэр, можете ли вы позаботиться об этом ?
Нисарг
1
Я потерял аудио с принятым ответом. Этот работает отлично.
Мэтт Хау
2
ffmpeg -y -ss 0 -t 5 -i inputVideo1.mp4 -ss 0 -t 5 -i inputVideo2.mp4 -i BgPaddingImage.jpg -filter_complex nullsrc=size=720*720[base];[base][2:v]overlay=1,format=yuv420p[base1];[0:v]setpts=PTS-STARTPTS,scale=345*700[upperleft];[1:v]setpts=PTS-STARTPTS,scale=345*700[upperright];[base1][upperleft]overlay=shortest=1:x=10:y=10[tmp1];[tmp1][upperright]overlay=shortest=1:x=366:y=10 -c:a copy -strict experimental -ss 0 -t 5 -preset ultrafast -an output.mp4

Добавьте два видео бок о бок, а также добавьте изображение OverLay, которое будет отображаться на видео, с помощью которого вы можете изменить фоновое изображение, [BgPaddingImage.jpg]здесь установите путь к изображению bg.

Покажите это ниже Видео, его создание из вышеупомянутой команды

введите описание изображения здесь

Санджай Хадия
источник
1
Что это за язык? Как вы управляете этим?
Муру
@muru Проверь это сейчас своей командой FFMPEG ?? :)
Санджай Хадия