这两天抖音九宫格发型怎么弄的(Python)

首页教程更新时间:2023-06-23 19:40:28

这两天抖音九宫格发型怎么弄的,Python(1)

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

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

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

想了解掌握这项技能的在后台私信“python”

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

1、视频处理依赖 moviepy

2、图片处理依赖 PIL

这两天抖音九宫格发型怎么弄的,Python(2)

这两天抖音九宫格发型怎么弄的,Python(3)

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

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

1、新建处理文件夹

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

这两天抖音九宫格发型怎么弄的,Python(4)

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

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

这两天抖音九宫格发型怎么弄的,Python(5)

defget_audio_from_video(video_raw_clip,output_path): """ 从视频中提取音频 :paramvideo_raw_clip:视频Clip对象 :paramoutput_path:输出音频文件完整路径 :return: """ audio=video_raw_clip.audio audio.write_audiofile(output_path) returnoutput_path

3、处理视频帧

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

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

i=1 forframeinself.video_raw_clip.iter_frames(): image=Image.fromarray(frame) #视频帧图片保存的临时路径(完整路径) frame_file_complete_path=self.path_temp "d.jpg"%i i =1

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

#1、剪成9张图片,计算每张图片的宽、高 item_width=int(self.video_width/3) item_height=int(self.video_height/3) #2、新的宽、高 item_width_new=self.video_width self.item_space*2 item_height_new=self.video_height self.item_space*2 #3、重新建一个画布背景 new_image=Image.new(image.mode,(item_width_new,item_height_new), color='white')

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

#4、裁剪图片,然后粘贴到新的画布中去 # i:横向、j:纵向 foriinrange(0,3): forjinrange(0,3): #裁剪区域 box=(j*item_width,i*item_height,(j 1)*item_width,(i 1)*item_height) #根据区域,裁剪图片 crop_image=image.crop(box) #横向、纵向第2块和第3块,要加上偏移距离 x=0ifj==0else(item_width self.item_space)*j y=0ifi==0else(item_height self.item_space)*i #将9张图片,按照上面计算的坐标值,粘贴到背景中去 new_image.paste(crop_image,(int(x),int(y))) #保存图片到本地 new_image.save(frame_file_complete_path)

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

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

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

defpics_to_video(pics_path,output_path,fps): """ 图片转为视频 pics_to_video('./../gif_temp/','./../video_temp/temp1.mp4',20) :parampics_path: :paramoutput_path: :return: """ image_paths=list(map(lambdax:pics_path x,os.listdir(pics_path))) #注意:这里必须进行一次排序,保证所有帧的顺序是一致 image_paths=sort_strings_with_emb_numbers(image_paths) #过滤掉非图片 image_paths=list(filter(lambdaimage_path:image_path.endswith('.jpg'),image_paths)) #图片剪辑类 clip=ImageSequenceClip(image_paths, fps=fps) clip.write_videofile(output_path)

5、加入 BGM 背景音乐

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

defvideo_with_audio(path_video_raw,path_bgm_raw,output): """ 视频合成音频 :return: """ videoclip=VideoFileClip(path_video_raw) audioclip=AudioFileClip(path_bgm_raw) #设置视频音频,并写入到文件中去 videoclip.set_audio(audioclip).write_videofile(output, codec='libx264', audio_codec='aac', temp_audiofile='temp-audio.m4a', remove_temp=True )

6、删除临时文件

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

defremove_folder(file_path): """ 删除文件夹 :paramfile_path: :return: """ shutil.rmtree(file_path) #删除临时文件 remove_folder(self.path_temp)

7、查看效果

这两天抖音九宫格发型怎么弄的,Python(6)

,
图文教程
相关文章
热门专题
推荐软件
奇热小说
奇热小说
下载
QQ2019手机版
QQ2019手机版
下载
王者荣耀
王者荣耀
下载
百度浏览器迷你版
百度浏览器迷你版
下载
2345浏览器手机版
2345浏览器手机版
下载
网易邮箱
网易邮箱
下载
爱奇艺
爱奇艺
下载
网易云音乐
网易云音乐
下载
WPSOffice
WPSOffice
下载
优酷
优酷
下载
谷歌浏览器(Chrome)
谷歌浏览器(Chrome)
下载
迅雷看看播放器
迅雷看看播放器
下载
UC浏览器
UC浏览器
下载
QQ音乐
QQ音乐
下载
阿里旺旺买家版v9.12.10C官方版
阿里旺旺买家版v9.12.10C官方版
下载
360安全卫士v12.1官方版
360安全卫士v12.1官方版
下载
猜你喜欢
妈妈网孕育
妈妈网孕育
下载
快省宝
快省宝
下载
搜火车
搜火车
下载
亿万人生2
亿万人生2
下载
维塔德男爵灭绝的复仇通关存档
维塔德男爵灭绝的复仇通关存档
下载
框架镜与隐形眼镜度数换算软件v1.0
框架镜与隐形眼镜度数换算软件v1.0
下载
少儿英语abc
少儿英语abc
下载
日日淘
日日淘
下载
sysinfo.ocx
sysinfo.ocx
下载
暴怒的大猩猩
暴怒的大猩猩
下载
thinksns开源社交系统v4.6.1免费版
thinksns开源社交系统v4.6.1免费版
下载
沙城战歌
沙城战歌
下载
宝宝学乐器
宝宝学乐器
下载
建筑之友app
建筑之友app
下载
小狐狸之星破解版
小狐狸之星破解版
下载
女神秃秃头
女神秃秃头
下载