Ami*_*mit 9 python gif video-editing moviepy
我正在使用 MoviePy 在服务器上自动从视频剪辑创建 GIF。该库帮助对视频进行各种转换和修剪以创建 GIF。
在我当前的项目中,我有一个包含大量移动对象的视频剪辑,因此很难自动跟踪感兴趣的区域。 (下面的快速 gif 显示了该场景,尽管那里的背景可以很容易消除并跟踪对象。但是假设跟踪对象超出了项目的范围)。
如下面的 gif 所示,红色矩形是随着时间从左向右移动的感兴趣区域。我想裁剪该区域并创建一个 GIF。
我正在使用 MoviePy,从视频中裁剪出一个矩形来创建 gif。但矩形固定在其原始坐标位置。我正在寻找一种随时间移动该矩形并裁剪它以创建 GIF 的方法。
clip = (VideoFileClip("my_video.mp4")
.subclip((1,10.1),(1,14.9))
.resize(0.5)
.crop(x1=145,y1=110,x2=400,y2=810))
clip.write_gif("my_gif.gif")
Run Code Online (Sandbox Code Playgroud)
如何添加时间因子,使得该坐标随时间变化。
欢迎任何建议。
您正在寻找scrollmoviepy 中的函数。缺少它的文档,但它们在这里,源代码在这里。
moviepy.video.fx.all.scroll(clip, h=None, w=None, x_speed=0, y_speed=0, x_start=0, y_start=0, apply_to='mask')
参数:
clip; 要执行操作的剪辑
h并w决定最终剪辑的高度和宽度
x_speed并y_speed决定滚动的速度。不确定这些是用什么来衡量的,所以您可能必须研究源代码,或者只是反复试验。
x_start这y_start是它开始滚动的距 (0,0) 的距离。
apply_to; 与口罩有关的东西,你不需要它!
最终代码:
clip = (VideoFileClip("my_video.mp4")
.subclip((1,10.1),(1,14.9))
.resize(0.5)
.crop(x1=145,y1=110,x2=400,y2=810))
# You won't need to set `w` and `h` if you are separately cropping it
new_clip = clip.scroll(w=clip.w, h=var, x_speed=speed, y_start=height_to_top_of_wanted_bit)
new_clip.set_duration(1.0 / speed)
new_clip.write_gif("my_gif.gif")
Run Code Online (Sandbox Code Playgroud)
请注意,此代码未经测试。