Tuesday 10 October 2017

linux - Join videos with split screen


I am looking for a command to join two video files, however I want the videos joined split-screen, frame by frame, instead of one after another.


Any ideas? Seems this is not possible with ffmpeg.



Answer



With a recent version of ffmpeg (assuming both videos are the same resolution):


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 \
output.mp4

This essentially doubles the size of input1.mp4 by padding the right side with black the same size as the original video, and then places input2.mp4 over the top of that black area with the overlay filter.


If one of your videos has an audio track that you need to add to the output, add the option -map 0:a for the first file's audio, or -map 1:a for the second file's audio.


If you have two audio tracks that you would like to mix, use the amix filter:


ffmpeg -i input1.mp4 -i input2.mp4 \
-filter_complex \
"[0:v]pad=iw*2:ih[int]; \
[int][1:v]overlay=W/2:0[vid]; \
[0:a][1:a]amix=inputs=2:duration=longest[aud]" \
-map "[vid]" \
-map "[aud]" \
-c:v libx264 -crf 23 \
-c:a aac -b:a 192k \
output.mp4

No comments:

Post a Comment

Where does Skype save my contact's avatars in Linux?

I'm using Skype on Linux. Where can I find images cached by skype of my contact's avatars? Answer I wanted to get those Skype avat...