使用 Python 一键生成九宫格短视频,轻松在朋友圈装 X

2024-09-10
来源:网络整理

1.场景

如果你经常使用抖音和微信朋友圈的话,你一定发现,九宫格短视频最近非常火!

从朋友圈的九宫格图片到九宫格视频,前者似乎比传统的图片和视频更有个性、更有风格。除了传统的剪辑软件,还有其他更快捷方便的方式吗?比如:一键生成、批量生成、批量生成?

废话不多说,本文就帮你一键生成九宫格短视频,优雅地秀在朋友圈里!

2. 准备

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

1. 视频处理依赖性

2.图像处理依赖PIL

# 安装两个依赖项

# 视频处理

pip3

# 图像处理依赖项

pip3

3.练习

实战前准备一份原版视频素材

以下6个步骤将原始视频转换为九宫格视频。

1. 新建处理文件夹

创建新的临时文件夹和视频输出文件夹

():

“””

如果文件夹不存在则创建一个文件夹;否则不执行任何操作

: :

::

“””

ifos.path.():

操作系统()

# 创建新的临时文件夹和输出文件夹

(自己。)

(自己。)

2.获取视频的音频文件和视频基本信息

首先基于原始视频,使用构建一个对象来获取视频的宽度、高度、帧率、时长等信息

自我。=()

# 宽度、高度

自我。,自我。=自我..w,自我..h

# 帧速率

自身.fps = 自身..fps

# 视频时长

自我。= 自我。。

接下来从视频中提取BGM音频对象并写入文件

德欧(,):

“””

从视频中提取音频

: : 视频剪辑对象

: : 输出音频文件完整路径

::

“””

= 。

.()

3.处理视频帧

我们使用原始的视频剪辑对象的方法循环遍历所有视频帧图像。

需要指出的是,为了保证后续视频合成的方便,视频帧的文件名都是按顺序排列的。

我 = 1

..:

= .()

# 视频帧图像保存的临时路径(完整路径)

路径 = 自身。 + “d.jpg” % i

我 += 1

视频的每一帧被裁剪成9幅图像,我们可以明确指定图像之间的距离,然后计算新画布的宽和高,最后绘制一幅白色背景的图像。

# 1.切分成9张图片,并计算每张图片的宽和高

= int(自身/ 3)

= int(自身/ 3)

# 2. 新的宽度和高度

= 自身。 + 自身。 * 2

= 自身。 + 自身。 * 2

# 3. 重新创建画布背景

= .new(.模式,(,),

='')

接下来获取各个区域的坐标值,分别在水平和垂直方向上为第二、第三个图像区域添加间隔偏移,粘贴到上面刚刚新建的图像上。

# 4. 裁剪图片并粘贴到新画布中

# i: 水平, j: 垂直

论坛( 0, 3):

forj(0,3):

#作物面积

盒子 = (j * , i * , (j + 1) * , (i + 1) * )

# 根据区域裁剪图像

= .裁剪(盒子)

# 在水平和垂直方向上添加第二和第三个块的偏移距离

x = 0ifj == ( + 自身) * j

y = 0ifi == ( + 自身)* i

# 根据上面计算出的坐标值将9张图片粘贴到背景中

.(,(int(x),int(y)))

# 将图片保存到本地

.保存(路径)

4. 从一篮子图像中重新合成视频

将上一步生成的帧图像按照原视频的帧率转换成视频

需要注意的是,为了保证生成的视频不乱序,最好将帧图像按照名称进行排序。

(,,帧速率):

“””

将图片转换为视频

('./..//','./..//.mp4',20)

: :

: :

::

“””

= 列表(map(:+ x,os.()))

#注意:这里必须进行排序,保证所有帧的顺序一致

= ()

# 过滤掉非图像

= 列表((:.('.jpg'),))

# 图像剪辑

剪辑 = (,

fps=每秒帧数)

夹子。()

5.添加背景音乐

将原视频的音频文件设置为上一步生成的视频文件,然后写入新文件

(,,):

“””

视频合成音频

::

“””

= ()

= ()

#设置视频音频并写入文件

.().(,

= '',

='aac',

='温度-.m4a',

= 真

6.删除临时文件

使用上述视频处理的临时文件,包括帧图像和临时视频文件,将其删除

():

“””

删除文件夹

: :

::

“””

.()

# 删除临时文件

(自己。)

7.检查效果

以东关子、扎格、乌鸦的视频为例,处理之后最终效果如下:

4. 最后

通过以上一系列操作,我们就实现了将一段视频处理成九宫格视频

分享