MoviePy:用 Python 写视频剪辑脚本

moviepy 在 GitHub 上拿到了 14,657 Star。

这个库把视频变成 numpy 数组,让你能用 Python 脚本完成裁剪、拼接、加字幕、合成画面这些操作。支持常见音视频格式和 GIF,Windows、Mac、Linux 全平台可用,Python 3.9 以上就能跑。

1、这玩意儿是干嘛的

一句话:把视频剪辑的每一步写成 Python 代码。

你平时在剪辑软件里拖来拖去的那些操作,切片段、调音量、加文字、叠画面、加转场,MoviePy 全能用脚本表达。单条视频处理看不出什么优势,但遇到几百条视频要统一加水印、批量生成带标题的短视频、每周自动产出片头片尾这类场景,脚本化工作流能省下大量手动操作的时间。

正文顶部截图

2、核心思路

MoviePy 把视频帧和音频读进来,转成 numpy 数组。每个像素的值都摆在那里,想怎么改就怎么改。几行代码就能定义一种视频效果或者音频处理逻辑,同样的效果用 ffmpeg 命令可能要写一长串参数。

代价是比直接调 ffmpeg 慢,毕竟多了数据导入导出这一步。但对于多数场景来说,开发效率和代码可读性比这点性能差异重要。

3、一个例子看明白

from moviepy import VideoFileClip, TextClip, CompositeVideoClip

# 加载视频,截取 10 到 20 秒,音量降到 80%
clip = (
    VideoFileClip("example.mp4")
    .subclipped(10, 20)
    .with_volume_scaled(0.8)
)

# 生成文字片段,设置位置和时长
txt_clip = TextClip(
    font="Arial.ttf", text="Hello there!",
    font_size=70, color='white'
).with_duration(10).with_position('center')

# 把文字叠到视频上,输出最终文件
final_video = CompositeVideoClip([clip, txt_clip])
final_video.write_videofile("result.mp4")

链式调用的 API 设计让处理流程读起来像流水线。加载素材、应用效果、合成输出,三步走完。每个方法返回的都是新的 clip 对象,组合起来很自然。

README区域截图

4、安装和版本注意

pip install moviepy

库最近升到了 v2.0,有不兼容的改动。v1 已经停止维护,新项目直接上 v2。从 v1 迁移的话,官方文档里有升级指南。如果需要自定义 ffmpeg 路径或者开启预览功能,文档的安装章节有详细说明。

5、适合哪些人用

  • 需要批量处理视频的 Python 开发者,比如给几百条视频统一加水印或片尾
  • 做自动化视频生成的场景,根据数据动态生成图表动画或报告视频
  • 在搭视频处理管线,需要把剪辑步骤写成可复用的脚本而不是手动操作
  • 教学场景下用代码演示视频处理原理,比拖拽界面更透明

项目由 Zulko 发起,MIT 协议开源。v2 版本由 OsaAjani 主导开发,目前仍在活跃维护中。社区在 Reddit 有专门的讨论频道,GitHub 上欢迎提交 issue 和 PR。

ani 主导开发,目前仍在活跃维护中。社区在 Reddit 有专门的讨论频道,GitHub 上欢迎提交 issue 和 PR。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐