Created
November 26, 2022 16:49
-
-
Save shimpe/c4140e8bae81f89505d217afbebeeb76 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import moviepy.editor as mpy | |
from vectortween.Mapping import Mapping | |
basename = 'video.mp4' | |
inputfile = basename + ".mp4" | |
outputfile = basename + ".new.mp4" | |
video_file = mpy.VideoFileClip(inputfile) | |
duration = video_file.duration # duration | |
video_width, video_height = video_file.size | |
textclip = mpy.TextClip("www.YouTube.com",fontsize=30,color="red") | |
textclip_width, textclip_height = textclip.size | |
extra_margin = 10 | |
desired_final_x = video_width - textclip_width - extra_margin | |
desired_final_y = 0 | |
def position(t): | |
return Mapping.linlin(t, 0, duration, 0, desired_final_x), desired_final_y | |
add_text = textclip.set_position(position).set_duration(video_file.duration) | |
final = mpy.CompositeVideoClip([video_file,add_text]) | |
final.write_videofile(outputfile) |
camala or pyvectortween, In which module can be set the random position (every custom second) of overlay text on video?
I tried FFmpeg by this instruction: https://ffmpeg.org/ffmpeg-filters.html#Examples-71
- Show the text at a random position, switching to a new position every 30 seconds:
drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=if(eq(mod(t\,30)\,0)\,rand(0\,(w-text_w))\,x):y=if(eq(mod(t\,30)\,0)\,rand(0\,(h-text_h))\,y)"
My custom input, every 10 seconds: Working
ffmpeg -i video_input.mp4 -vf drawtext="fontfile='C\:/Users/BRIGHT/AppData/Local/Microsoft/WINDOWS/fonts/RacingSansOne-Regular.ttf':text='YouTube.com':fontsize=h/15:fontcolor=white:alpha=0.2:bordercolor=black:borderw=1:x=if(eq(mod(t\,10)\,0)\,rand(0\,(w-text_w))\,x):y=if(eq(mod(t\,10)\,0)\,rand(0\,(h-text_h))\,y)" -codec:a copy video_output.mp4
FFmpeg is too much complicated. Does have any option to create the same task by moviepy
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
It's amazing, text animations are very attractive. I going to try it :)