images/blog-posts

影像处理・视频编辑

返回教程主页

上篇 影像处理・人脸识别

关于影像处理除了进行类似计算机视觉与数字图像处理的操作,我们还可以像一些非线性编辑软件一样对视频材料进行剪辑处理,以及添加专场、字幕等操作。通常此类操作都会使用到ffmpeg这款开源的数字媒体处理工具,而它有一个叫做moviepy的接口,可以让我们轻松上手。

安装moviepy

使用pip就能完成下载安装,命令如下:

pip install moviepy

如果安装过程出现问题可以去到项目网页(https://github.com/Zulko/moviepy)查看原因,或者搜索相关信息。

载入视频

首先我们可以载入一段视频,然后获取相关信息,如:帧率、时长、分辨率……:

import moviepy.editor as mpy

video = mpy.VideoFileClip('我的视频.mp4')
print(video.fps, video.duration, video.size)

运行后输出:

15.0 39.93 [1368, 768]

mpy.VideoFileClip接收一个字符串类型的视频地址用于载入该视频并实例化一个VideoClip对象。.fps为帧率;.duration为时长;.size为分辨率大小。

截取视频

使用.subclip方法可以截取视频:

sub1 = video.subclip(0, 5)
print(sub1.duration)
sub2 = video.subclip(-5)
print(sub2.duration)

.subclip用于截取视频并返回对应的VideoClip对象,通过.subclip的参数可以决定我们截取视频的位置。第一个参数表示开始时间;第二个参数表示终止时间,默认为原视频的终止时间。

导出视频

使用.write_videofile方法可以将视频对象导出成视频文件:

sub1.write_videofile('sub1.mp4')

.write_videofile就收一个字符串类型的参数用于指定视频保存的文件名。

添加淡入淡出

sub1_faded = sub1.fadein(0.5).fadeout(0.5)
sub1_faded.write_videofile('sub1_faded.mp4')

淡入为.fadein,会返回对应的VideoClip对象,可以传入一个浮点型参数用于设定时长;淡出为.fadeout,同样会返回对应的VideoClip对象,也可以传入浮点型参数设定时长。

拼接视频

final = mpy.concatenate([
    sub1.fadein(0.5).fadeout(0.5),
    sub2.fadein(0.5).fadeout(0.5),
])
final.write_videofile('final.mp4')

使用mpy.concatenate函数可以拼接视频并返回对应的VideoClip对象。它就收一个列表作为输入参数,该列表的每一项都是VideoClip对象。

继续学习

更多操作可以去到官方文档(https://zulko.github.io/moviepy/)学习。

下篇 数据分析・操作环境准备

SUBSCRIBE


🔒 No spam. Unsubscribe any time.

About kk

kk

Vincenzo Antedoro is an engineer who helps those who want to invest in renewables. For the rest he enjoys teaching with the method of learning by doing..

» More about kk