Scal dwa klipy wideo w jeden, umieszczając je obok siebie


38

Mam dwa klipy wideo. Oba mają rozdzielczość 640 x 480 i trwają 10 minut. Jeden zawiera podkład audio, drugi zaśpiewa aktora. Chciałbym utworzyć pojedynczy 10-minutowy klip wideo o wymiarach 1280 x 480 (innymi słowy, chcę umieścić filmy obok siebie i odtwarzać je jednocześnie, miksując audio z obu klipów). Próbowałem wymyślić, jak to zrobić za pomocą ffmpeg / avidemux, ale do tej pory byłem pusty. Wszystkie odnoszą się do konkatenacji, gdy szukam scalenia.

Jakieś rekomendacje?

Odpowiedzi:


44
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

Zasadniczo podwaja to rozmiar input1.mp4, wypełniając prawą stronę czarnym kolorem tego samego rozmiaru, co oryginalne wideo, a następnie umieszcza input2.mp4 na górze tego czarnego obszaru z filtrem nakładki.

Źródło: https://superuser.com/questions/153160/join-videos-split-screen


Co ma -map [vid]zrobić?
0xcaff,

@ cffinatedmonkey [vid]to tak zwany linklabel , który jest zdefiniowaną etykietą łącza wyjściowego na wykresie filtra (linia powyżej z argumentem filter_complex ). Odwzorowuje dane wyjściowe ze złożonego wykresu filtrów na plik wyjściowy.
Jan

Dostaję Unrecognized option 'crf'. Błąd podziału listy argumentów: Nie znaleziono opcji. Jeśli usunę crtounrecognized option 'preset'
RS

Pierwszeno such filter
użytkownik1767754

25

Szczerze mówiąc, użycie zaakceptowanej odpowiedzi spowodowało dla mnie wiele opuszczonych ramek.

Jednak użycie hstackfilter_complex dało idealnie płynną wydajność:

ffmpeg -i left.mp4 -i right.mp4 -filter_complex hstack output.mp4

22

Można to zrobić za pomocą tylko dwóch filtrów, a dźwięk z obu wejść również zostanie włączony.

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 umieści każdy film obok siebie.
  • amerge połączy dźwięk z obu wejść w jeden, wielokanałowy strumień audio i -ac 2sprawi, że będzie stereo; bez tej opcji strumień audio może skończyć jako 4 kanały, jeśli oba wejścia są stereofoniczne.

Witam, czy mogę nakładać jeden film na inny?
Nisarg

@Nisarg Użyj filtra nakładki .
llogan

Chcę, aby górne wideo było trochę przezroczyste, aby można było zobaczyć, co dzieje się w tle. Czy możesz mi w tym pomóc?
Nisarg

Witam Panie, Czy dbasz wyglądać ten out.
Nisarg

1
Straciłem dźwięk z zaakceptowaną odpowiedzią. Ten działa idealnie.
Matt Hough

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

Dodaj dwa filmy obok siebie, a także dodaj obraz OverLay, który wyświetla się na wideo Padding With Możesz zmienić obraz tła [BgPaddingImage.jpg]tutaj ustawić swoją ścieżkę obrazu bg.

Pokaż to poniżej Wideo jego tworzenie z polecenia powyżej

wprowadź opis zdjęcia tutaj


1
Jaki to język? Jak to działa?
muru

@muru Sprawdź to teraz jego polecenie FFMPEG? :)
Sanjay Hadiya
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.