MoviePy: 用Python剪辑视频
文章目录
前言
生活中视频使用的场景越来越多,生活中不免会碰到要对视频进行处理。
现在的视频剪辑软件也非常好用,可以进行精细化制作,但是效率就低了许多,如果有很多视频要处理,那就需要非常多的时间去处理。
所以作为一个开发希望能通过程序来处理视频,即便不能达到使用剪辑软件效果那么好,也可以先对视频进行一次处理,可以减少不少时间,把时间花在真正需要精细调整的地方。
像普通的视频截取、添加文字、视频组合、设置音频这些简单的用程序来批量处理就非常高效了。
安装
要处理视频这里要用到 Python
的 MoviePy
这个库,它是基于 FFmpeg
的跨平台库。
使用之前和其它库一样要先安装,非常简单使用 pip
安装就行了
|
|
国内安装会比较慢,建议使用国内的镜像,像清华或者阿里的速度都不错。
处理流程
MoviePy
的一般处理流程是:
- 加载视频
- 处理(截取、设置声音、裁剪…)
- 保存处理后的视频
提取片段
根据上面的流程,在使用之前需要把视频加载到程序中,需要使用到 VideoFileClip
,把视频文件的路径当成参数传进去。
如果只想要其中一段,我们可以通过 sub_clip
方法进行截取,里面参数是开始截取的时间和停止截取的时间。
最后 VideoFileClip
的 write_video_file
可以把处理过得程序保存到文件中,参数就是要保存的文件路径。
|
|
添加文字
在 MoviePy
中文字使用 TextClip
表示,与视频不同的是,文字的属性比较多。
通常会为文字设置字体、大小颜色、还有时长,这些设置好了才会在视频中显示出来,在调试的过程中经常会发现文字不显示,很有可能就是这些忘记设置了。
来看下简单的往视频添加 你好,MoviePy
如何实现
|
|
可以看到左上角多了 你好,MoviePy
组合多个视频
如果我们有多个视频想要把它们组合成一个可以通过 concatenate_videoclips
来合成,里面的参数就是我们需要组合的视频。
这里要注意,两个视频的尺寸大小要一样,不一样的话后面的会花掉。所以在组合之前最好把两个视频的尺寸大小调成一样。
这里使用的两个视频的尺寸是一样的,一个是没加文字之前的,另个一是加了文字的。
|
|
提取音频
碰到一个喜欢的视频,想要提取其中的音频怎么办?
在 MoviePy
中视频的对象是 VideoFileClip
,而音频对应的是 AudioFileClip
,视频包含了音频所以在 VideoFileClip
中有 audio
属性,它就是对应的音频,我们可以直接把他保存下来,就得到了对应的音频。
与保存视频类似,保存音频的方法是 write_audiofile
|
|
更改音频
有了上面的经验,更改音频就很简单了,我们只要用自己的音频文件把视频中的替换掉就可以了。
如果音频和视频的时长不一样,需要设置一下音频的时长,不然视频播完了,后面的画面是黑的。
|
|
参考

关注公众号[devbins],回复[moviepy]获取源码