FFMpeg can blend two input files which allows for a gradual transition from one to the other. This post will demonstrate how this can be done with two image files or video files. Let's get started.
Blending Images
Let's snag a couple images to show how blending can be used in transitioning from one to the other. More specifically, we're grabbing one image and cropping them to form two images.
$ wget https://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Bush-Arnie-morph.jpg/300px-Bush-Arnie-morph.jpg -O src.jpg
$ convert -crop 100x300+0+0 src.jpg s1.jpg
$ convert -crop 100x300+200+0 src.jpg s2.jpg
Next, let's generate a 5 second video using the two source images. Notice the A/B coefficients are relative to time finally capping at 1 when there remains 1 second of video left. The blending coefficients define how much of one or the other video frame is blended.
$ ffmpeg -loop 1 -i s1.jpg -loop 1 -i s2.jpg -filter_complex "[1:v][0:v]blend=all_expr='A*(if(gte(T,$((5-1))),1,T/$((5-1))))+B*(1-(if(gte(T,$((5-1))),1,T/$((5-1)))))'" -t 5 foo.mp4
The result;
Blending Videos
We can provide a similar effect on videos. Let's grab a source video and split it into two videos that we'll blend between.
$ youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best' -o src.mp4 https://www.youtube.com/watch?v=-sUXMzkh-jI
$ ffmpeg -i src.mp4 -ss 10 -t 5 -an vid1.mp4
$ ffmpeg -i src.mp4 -ss 60 -t 5 -an vid2.mp4
Let's blend the videos in the same manner as our images;
$ ffmpeg -i vid1.mp4 -i vid2.mp4 -filter_complex "[1:v][0:v]blend=all_expr='A*(if(gte(T,$((5-1))),1,T/$((5-1))))+B*(1-(if(gte(T,$((5-1))),1,T/$((5-1)))))'" foo00.mp4
There you are, the most fun you can have while blending short of making margaritas.
Cheers.
Wow, Thanks fot the post. This is exactly I was looking for. But my main issue is I want to join 2 videos one after other with blending effect. Can you give me some hint on it?
ReplyDeleteI've got a post in the works that will show a way to do this. Two input videos, last X seconds will blend into the next video while mixing audio. Look for it later this week.
ReplyDelete