手把手教你制作批量剪辑、合并、转化视频的软件~

简介: 大家好,我是志斌~在广州做视频剪辑的同学这几天给我吐槽,说她每天都要剪辑大量的视频,虽然操作很简单,但是却都是重复性的工作,占用了她大量的时间。

大家好,我是志斌~


在广州做视频剪辑的同学这几天给我吐槽,说她每天都要剪辑大量的视频,虽然操作很简单,但是却都是重复性的工作,占用了她大量的时间。


于是她来找我,想问问我能不能用Python帮她搞定这些重复的剪辑工作,让她能够有更多的精力去搞点有难度的!


这肯定是能的!Python除了不能帮你生孩子外,好像真没它不能干的!所以我们来跟大家分享一下如何用Python进行视频剪辑。


01安装


对视频进行批量剪辑,需要三个库,分别是Moviepy库和Pathlib库,还有Tkinter库。


首先我们对这两个库进行安装,命令如下:

pip install moviepy
pip install pathlib


02剪辑


上面我们已经安装好所需要的库了,现在开始来对视频进行剪辑操作。


01 视频剪辑


Moviepy库有一个VideoFileClip函数,将视频传入这个函数后,会返回一个VideoFileClip实例对象,该对象可以被subclip()进行剪辑,代码如下:


from moviepy.editor import *
clip = VideoFileClip('1.mp4').subclip(2,4)
# 将剪出的视频进行存储
clip.write_videofile('2.mp4')



02 视频合并


第一步跟视频剪辑一样,需要将合并的视频传入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')


03 视频转化为gif


将视频转化成gif非常简单,当视频经过VideoFileClip函数处理成为VideoFileClip实例对象后,即可直接保存为gif格式。代码如下:


from moviepy.editor import *
file = VideoFileClip(k)
file.write_gif(f'{name}.gif')


03批量


上面只是对单个视频,或者个别文件夹的视频进行操作,但是我们想要的是批量进行剪辑、合并和转化。这里,Pathlib库给我们提供了两个Path和PurePath函数,可以很方便的找到电脑中mp4文件,代码如下:


files = []
p = Path(src_path)
for x in p.iterdir():
 if PurePath(x).match('*.mp4'):
     files.append(x)


之后和上面的代码进行合并,即可实现批量获取的功能 。


04GUI界面


程序的功能已经全部实现了,我们现在需要对该程序进行界面设计,这里我们使用的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()


05小结


1. 本文详细介绍了,如何使用Moviepy库和Pathlib库,还有Tkinter库,做一个批量处理视频的软件。

2. 有兴趣的同学可以自己复现一下代码进行学习。

3. 本文仅供学习参考,不做它用。

4. 获取代码方式看评论区~


相关文章
|
开发工具 开发者
阿里云 在智能媒体服务中,智能生产制作时长包,可以批量混剪视频吗?
【1月更文挑战第15天】【1月更文挑战第73篇】阿里云 在智能媒体服务中,智能生产制作时长包,可以批量混剪视频吗?
648 5
解锁时间价值:日程安排管理的科学方法
本文探讨了日程安排管理的重要性、常见问题及优化策略,强调了有效管理时间对提高工作效率、减轻压力、实现目标和平衡生活的重要性。通过设定SMART目标、运用优先级管理工具、合理规划时间、利用数字工具和技术、管理干扰与分心、保持灵活性以及激励自己与团队等策略,帮助个人和企业构建高效的时间管理体系。
|
7月前
|
人工智能 算法 搜索推荐
CoAT: 基于蒙特卡洛树搜索和关联记忆的大模型推理能力优化框架
研究者提出了一种新的关联思维链(CoAT)方法,通过整合蒙特卡洛树搜索(MCTS)和关联记忆机制,提升大语言模型(LLMs)的推理能力。CoAT框架优化了MCTS算法,增强了结构化推理和动态知识整合,适用于复杂推理、多跳问答和代码生成等任务。实验结果显示,CoAT在精确匹配和F1分数上表现优异,超越了多个基线模型。然而,该方法在计算资源消耗和实时推理速度方面仍有改进空间。
570 5
CoAT: 基于蒙特卡洛树搜索和关联记忆的大模型推理能力优化框架
成功解决TypeError: ‘encoding’ is an invalid keyword argument for this function
成功解决TypeError: ‘encoding’ is an invalid keyword argument for this function
|
10月前
|
存储 人工智能 大数据
拼多多详情API的价值与应用解析
拼多多作为中国电商市场的重要参与者,其开放平台提供的商品详情API接口为电商行业带来了新的机遇和挑战。该接口允许开发者通过编程方式获取商品的详细信息,包括标题、价格、描述、图片、规格参数和库存等,推动了电商运营的智能化和高效化。本文将深入解析拼多多详情API的价值与应用,帮助商家和开发者更好地理解和利用这一宝贵资源。
505 0
|
存储 物联网 API
API在实际有什么运用?
API(Application Programming Interface,应用程序接口)是一组定义、协议和工具的集合,用于建立软件与软件之间的互操作性。它允许开发人员使用预先定义的方法来请求服务、访问数据或执行特定功能,而无需了解底层代码的具体实现。在现代软件开发中,API扮演着至关重要的角色,从简单的网页应用到复杂的企业系统,都离不开API的支持。
791 1
|
存储 运维 监控
大数据分析平台之 OLAP 架构的最佳实践
本文将分享聚水潭云原生 OLAP 架构的最佳实践。
如何把多个文件(夹)向上移动1层(或多层)(在批量复制前或后进行)
该文介绍了如何使用一个工具将四个文件夹内的所有文件合并到另一个文件夹中。工具可以从百度网盘或蓝奏云下载,提取码分别为qwu2和2r1z。操作步骤包括:打开工具,选择文件批量复制,设置源路径上移,确定设置后将文件夹拖入,导入文件,移除不需要的文件夹路径,最后执行移动操作。移动过程中会删除空文件夹,并在回收站中可见。
|
开发框架 前端开发 机器人
从模型到前端,你应该知道的LLM生态系统指南
LLM在在2023年发展的风生水起,一个围绕LLM的庞大生态系统正在形成,本文通过介绍这个生态系统的核心组成部分,来详细整理LLM的发展。
801 2
|
数据采集 Web App开发 搜索推荐
项目配置之道:优化Scrapy参数提升爬虫效率
项目配置之道:优化Scrapy参数提升爬虫效率