Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Moviepy-剪切帧(感兴趣区域)随时间从左向右移动的视频_Python_Gif_Video Editing_Moviepy - Fatal编程技术网

Python Moviepy-剪切帧(感兴趣区域)随时间从左向右移动的视频

Python Moviepy-剪切帧(感兴趣区域)随时间从左向右移动的视频,python,gif,video-editing,moviepy,Python,Gif,Video Editing,Moviepy,我正在使用MoviePy在服务器上自动从视频剪辑创建GIF。图书馆帮助进行各种转换和剪辑视频,以创建GIF 在我当前的项目中,我有一个视频剪辑,其中有很多移动的对象,这使得自动跟踪感兴趣的区域变得很困难。 (下面的快速gif显示了场景,尽管背景可以很容易地消除并跟踪对象。但假设跟踪对象超出了项目范围) 如gif所示,红色矩形下方是感兴趣的区域,该区域随时间从左向右移动。 我想裁剪该区域并创建GIF 我正在使用MoviePy,我从视频中剪切了一个矩形来创建gif。但矩形固定在其原始坐标位置。我正

我正在使用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")
如何添加时间因子,使坐标随时间变化


欢迎任何建议

您正在寻找moviepy中的
滚动功能。它的文档是缺乏的,但他们是,和源代码

moviepy.video.fx.all.scroll(剪辑,h=None,w=None,x\u速度=0,y\u速度=0,x\u开始=0,y\u开始=0,应用到class='mask')

参数:

  • 剪辑
    ;要操作的剪辑

  • h
    w
    确定最终剪辑的高度和宽度

  • x\u速度
    y\u速度
    决定滚动速度。不确定这些是用什么来衡量的,所以您可能需要研究源代码,或者只是尝试错误

  • x_start
    y_start
    这是从(0,0)开始滚动的距离

  • 应用于
    ;和面具有关,你不需要它

最终代码:

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")

注意,此代码未经测试。

什么是
vfx
vfx
表示视觉效果,需要从moviepy.editor导入
vfx
或类似内容。我已经更新了代码来删除它,并用推荐的在MoviePy中应用效果的方法来替换它。