1. 场景

如果你经常刷抖音和微信朋友圈,一定发现了最近九宫格短视频很火!

从朋友圈九宫格图片,到九宫格视频,相比传统的图片视频,前者似乎更有个性和逼格


除了传统的剪辑软件可以实现,是否有其他更快捷方便的方式?比如:一键生成,批量生成?

废话不多说,本篇文章将大家使用 Python 一键生成九宫格短视频,优雅地帮你在朋友圈装一次逼!

2.准备

在开始实战之前,使用 pip 安装 2 个依赖,分别是:

1、视频处理依赖 moviepy

2、图片处理依赖 PIL


3.实战一下

在实战之前,先准备一段原始视频素材

下面通过 6 个步骤,将原始视频换为九宫格视频


1、新建处理文件夹

新建一个临时文件夹和一个视频输出文件夹


2、获取视频的音频文件及视频基础信息

首先,根据原始视频,使用 moviepy 构建一个 VideoFileClip 对象,从而获取到视频的宽、高、帧率、时长等信息


接着,从视频中提取 BGM 音频对象,并写入到文件中


3、处理视频帧

我们使用原始视频 Clip 对象的 iter_frames() 方法,循环获取所有的视频帧图片

需要指出的是,为了保证后面视频合成的便捷性,这里对视频帧的文件名按顺序进行命令


视频每一帧都被裁剪成 9 张图片,我们可以显式指定图片之间的距离,然后计算出新画布的宽和高,最后绘制一个白底背景的图片


接着,获取每一块区域的坐标值,针对横向、纵向第 2、3 个图片区域上间隔偏移,粘贴到上面新建的图片上即可


4、一篮子图片重新合成视频

把上一步生成的帧图片,按照原视频的帧率为视频

需要注意的是,为了保证生成的视频不会错乱,最好对帧图片按照名称进行一次排序

5、入 BGM 背景音乐

将原始视频的音频文件设置到上一步生成的视频文件,然后写入一个新的文件中去

6、删除临时文件

利用 shutil将上面视频处理的临时文件,包含帧图片、临时视频文件删除掉

7、查看效果

以东莞仔、渣哥、乌鸦的一段视频为例,最终处理后的效果如下: