Python轻松搞定视频剪辑重复性工作问题
01 安装
对视频进行批量剪辑,需要三个库,分别是moviepy
库和pathlib
库,还有tkinter
库。
首先我们对这两个库进行安装,命令如下:
pip install moviepy pip install pathlib
02 剪辑
上面我们已经安装好所需要的库了,现在开始来对视频进行剪辑操作。
视频剪辑:
moviepy
库有一个videofileclip
函数,将视频传入这个函数后,会返回一个videofileclip
实例对象,该对象可以被subclip()
进行剪辑,
代码如下:
from moviepy.editor import * clip = videofileclip('1.mp4').subclip(2,4) # 将剪出的视频进行存储 clip.write_videofile('2.mp4')
视频合并:
第一步跟视频剪辑一样,需要将合并的视频传入videofileclip
函数,使其成为一个videofileclip
实例对象。然后调用concatenate_videoclips
函数,将所有videofileclip
实例对象的视频进行合并,最后进行保存。
代码如下:
from moviepy.editor import videofileclip,concatenate_videoclips clip_1 = videofileclip('1.mp4') clip_2 = videofileclip('2.mp4') file = concatenate_videoclips([clip_1,clip_2]) file.write_videofile('3.mp4')
视频转化为gif:
将视频转化成gif
非常简单,当视频经过videofileclip
函数处理成为videofileclip
实例对象后,即可直接保存为gif
格式。
代码如下:
from moviepy.editor import * file = videofileclip(k) file.write_gif(f'{name}.gif')
批量:
上面只是对单个视频,或者个别文件夹的视频进行操作,但是我们想要的是批量进行剪辑、合并和转化。这里,pathlib
库给我们提供了两个path
和purepath
函数,可以很方便的找到电脑中mp4文件,
代码如下:
files = [] p = path(src_path) for x in p.iterdir(): if purepath(x).match('*.mp4'): files.append(x)
之后和上面的代码进行合并,即可实现批量获取的功能 。
gui界面:
程序的功能已经全部实现了,我们现在需要对该程序进行界面设计,这里我们使用的tkinter
库来进行界面设计,
代码如下:
# 创建窗口 root = tk.tk() # 标题 root.title('视频剪辑') # 窗口大小 root.geometry('450x200') # 窗口的初始位置 root.geometry('+400+200') # 标签的控件 label_1 = tk.label(root, text='输入文件地址', font=(r'苏新诗柳楷简.ttf', 16), fg='black') label_1.grid() label_2 = tk.label(root, text='输入剪辑时间', font=(r'苏新诗柳楷简.ttf', 16), fg='black') label_2.grid() # 输入框 enter_1 = tk.entry(root, font=(r'苏新诗柳楷简.ttf', 16)) enter_2 = tk.entry(root, font=(r'苏新诗柳楷简.ttf', 16)) # 设置输入框的位置 enter_1.grid(row=0, column=1) enter_2.grid(row=1, column=1) # 按钮 button = tk.button(root, text='开始', font=(r'苏新诗柳楷简.ttf', 16), command=jianjivideo) # 设置按钮的位置 button.grid(row=1, column=2) # 显示窗口 root.mainloop()
小结:
本文详细介绍了,如何使用moviepy
库和pathlib
库,还有tkinter
库,做一个批量处理视频的软件。
有兴趣的同学可以自己复现一下代码进行学习。
到此这篇关于python轻松搞定视频剪辑重复性工作问题的文章就介绍到这了,更多相关python解决视频剪辑重复性工作问题内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
上一篇: 烧麦是冷水下锅还是热水下锅