In this article we will see how we can set position of clip in composite video file in MoviePy. MoviePy is a Python module for video editing, which can be used for basic operations on videos and GIF’s. Meaning of composite is combining different elements, composite video is the combination of different video clips unlike stacking and concatenation of video files composite files are easy to implement but complex structure. Composite file combine the clips over one another and get played at same time, position and timing of video playback can be set any time. When first clip size is larger than the second clip the second clip appear to be in a larger window and its default position is at the top left hand side although we can change this any time.
In order to do this we will use crossfadein method with the VideoFileClip object
Syntax : clip.set_position((x, y))
Argument : It takes position as argument
Return : It returns VideoFileClip object
Below is the implementation
Python3
# Import everything needed to edit video clips from moviepy.editor import * # loading video dsa gfg intro video clip = VideoFileClip( "dsa_geek.webm" ) # getting only first 5 seconds clip1 = clip.subclip( 0 , 5 ) # rotating clip by 180 degree to get the clip3 clip2 = clip1.rotate( 180 ) # resizing the clip2 reducing it by 50 % clip2 = clip2.resize(0.5) # setting start time to the clip2 clip2 = clip2.set_start( 3 ) # setting position of the clip2 clip2 = clip2.set_position(( 100 , 100 )) # creating a composite video final = CompositeVideoClip([clip1, clip2]) # showing final clip final.ipython_display(width = 480 ) |
Output :
Moviepy - Building video __temp__.mp4. Moviepy - Writing video __temp__.mp4 Moviepy - Done ! Moviepy - video ready __temp__.mp4
Another example
Python3
# Import everything needed to edit video clips from moviepy.editor import * # loading video gfg clip = VideoFileClip( "Lazyroar.mp4" ) # getting subclip from it clip1 = clip.subclip( 0 , 5 ) # mirroring image according to the y axis clip2 = clip.fx(vfx.mirror_y).set_start( 4 ) # resizing the clip2 reducing it by 50 % clip2 = clip2.resize(0.5) # setting position of the clip2 clip2 = clip2.set_position(( 150 , 100 )) # creating a composite video final = CompositeVideoClip([clip1, clip2]) # showing final clip final.ipython_display(width = 480 ) |
Output :
Moviepy - Building video __temp__.mp4. MoviePy - Writing audio in __temp__TEMP_MPY_wvf_snd.mp3 MoviePy - Done. Moviepy - Writing video __temp__.mp4 Moviepy - Done ! Moviepy - video ready __temp__.mp4