Об’єднайте два відеокліпи в один, розмістивши їх поруч


38

У мене є два відеокліпи. Обидва - 640x480 та тривають 10 хвилин. Один містить фонове аудіо, інший - співаючий актор. Я хотів би створити єдиний 10-хвилинний відеокліп розміром 1280х480 (іншими словами, я хочу розмістити відео поруч і відтворити їх одночасно, змішуючи аудіо з обох кліпів). Я намагався розібратися, як це зробити за допомогою 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). Він відображає вихід із складного графіка фільтра у вихідний файл.
Jan

Я отримую Unrecognized option 'crf'. Помилка розбиття списку аргументів: Варіант не знайдено. Якщо я видаляю crтодіunrecognized option 'preset'
RS

Отриманняno such filter
користувач1767754

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 канали, якщо обидва входи стерео.

Привіт, чи можу я перекласти одне відео на інше?
Нісарг

@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

Додайте два відео поруч, а також додайте зображення накладеного зображення, яке відображається на набиванні відео. Тут ви можете змінити фонове [BgPaddingImage.jpg]зображення.

Показати це нижче. Відео створити з команди "Вище"

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


1
Яка мова це? Як ти це запускаєш?
муру

@muru Перевірте його команду FFMPEG ?? :)
Санджай Хадія
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.