今天我们来教大家

用 Python 自动生成快闪文字视频

最出名的快闪文字视频

当属苹果16年的广告了

文字搭配着音乐节奏闪现

效果简单又震撼

虽说这两年好像已经被做烂了

前两天出去吃个烤串发现店家的广告都是快闪类型的

但是如果真的想做其实还有点麻烦

不管你是用PPT还是Premier

都得慢慢对齐鼓点节奏

做一个视频怕是要循环这首歌上百遍

做完就不想再听到这首歌了

效果堪比把歌曲设为早晨的闹钟

今天!

悦创来帮一下各位苦逼的视频从业人员

我们用万能的Python

自动生成快闪文字视频!

就算老板要求做两小时的快闪文字视频

都不用害怕了!

首先我用非常出名的一首鬼畜来尝试

改革春风吹满地

原作品为小可儿在B站创作的

https://www.bilibili.com/video/av19390801

可以点击阅读原文观看

然后我们看看由程序自动找鼓点生成的快闪文字视频

上面视频当中

所有的鼓点都是由程序自动找到的

视频的生成也是全部由程序完成

唯一需要手动操作的就是

将文字按照需要切分出来

其实这一步也可以省略

比如下面这个视频

我利用分词模块

将这篇新闻

https://news.163.com/19/0618/20/EHVSFA1J0001875P.html

用快闪文字的方式

呈现出来

这个新闻呈现的方式

是不是很带感呢

当然如果每篇新闻都这么看

估计得累死……

如果你想直接获取这个快闪文字的Python代码

可以在后台回复:快闪文字

接下来我们一步步简单讲解这个代码是如何实现的

首先我们需要用到的模块有

librosa

moviepy

jieba

click

其中

librosa用来分析鼓点节奏

moviepy用来生成视频

jieba用来分词

click用来制作命令行工具

首先导入我们需要的模块

import librosa
from moviepy.editor import TextClip, CompositeVideoClip, AudioFileClip
import jieba
import click

接下来定义我们的主函数main()

其中输入参数有6个

width: 生成视频的宽度

height: 生成视频的高度

text: 存有文字的文本文件地址

music: 背景音乐

word_split: 是否自动分词(不自动分词就按换行切分)

output: 生成视频的文件名

同时我们利用click来帮我们

将这个python文件做成命令行工具

click的用法如下

具体可以看github

https://github.com/pallets/click

于是我们的main()函数变成下面这样

@click.command()
@click.option('--width', prompt='Width', default=360, help='The width of video clips')
@click.option('--height', prompt='Height', default=240, help='The height of video clips')
@click.option('--text', prompt='Text file', default='text.txt', help='The source text file')
@click.option('--music', prompt='Music file', default='改革春风吹满地.mp3', help='The music file')
@click.option('--word_split', prompt='Split words', default=False, help='Split words or not')
@click.option('--output', prompt='Output file', default='FlashText.mp4', help='The output file name')
def main(width, height, text, music, word_split, output):

其中prompt参数表示运行程序时会弹出的输入提示

default为默认值

即用户直接回车时选取的值

接下来在main()函数里

我们完成所有的事情

首先读入存有文字的文本文件

 with open(text, 'r', encoding='utf-8') as f:text_str = f.read()

然后我们根据用户选择来看是否要分词

 if word_split:seg_list = jieba.lcut(text_str)punct = set(''':!),.:;?]}¢'"、。〉》」』】〕〗〞︰︱︳﹐、﹒﹔﹕﹖﹗﹚﹜﹞!),.:;?|}︴︶︸︺︼︾﹀﹂﹄﹏、~¢々‖•·ˇˉ―--′’”([{£¥'"‵〈《「『【〔〖([{£¥〝︵︷︹︻︽︿﹁﹃﹙﹛﹝({“‘-—_…/\\''')word_list = list(filter(lambda x: x not in punct, seg_list))else:word_list = text_str.split('\n')

这里当word_split为True时

我们用jieba.lcut(text_str)获得分词后的列表

类似下图这样

接下来我们用两句话来剔除掉

分词后的列表中的标点符号

其中最主要就是用filter()函数

结合lambda来剔除

算是一个比较简单的剔除符号的方法

而如果word_split为False

那么我们直接将文档以换行符来切分

完成文字的分割以后

我们就来分析音乐鼓点

这里librosa就帮上大忙了

librosa是个非常强大的Python模块

可以分析音频的各种信息

这里我们用到它的beat_track方法

 y, sr = librosa.load(music)tempo, beats = librosa.beat.beat_track(y=y, sr=sr)beat_times = list(librosa.frames_to_time(beats, sr=sr))beat_times.append(beat_times[-1] + 1)

最终我们会得到一个beat_times列表

里面包含了每个鼓点的时间

同时可以注意到最后一行

beat_times.append(beat_times[-1] + 1)

这里我将列表最后一位重复了一下

并往后偏移1秒

主要是方便我们后面处理最后一个鼓点的视频片段

得到了鼓点时间列表以后

我们来开始制作每个文字视频片段

 clips = []for index, beat_time in enumerate(beat_times[:-1]):if index >= len(word_list):breakprint(f'{index + 1}/{len(beat_times)}——{word_list[index]}')text_clip = TextClip(word_list[index],fontsize=width // 8,color='white',size=(width, height),method='caption',font='msyhbd.ttc')\.set_start(beat_time)\.set_end(beat_times[index + 1])text_clip = text_clip.set_pos('center')clips.append(text_clip)

这里我们用到moviepy

moviepy是我个人非常喜欢的一个python模块

一个非常强大的python视频制作模块

以后有机会再多讲讲这个模块的使用

这里我们用到了moviepy的文字片段

TextClip()

里面第一个参数是具体的文字

然后可以设置字体大小、颜色等

method='caption'是表示这个文字是标题类

当TextClip设置为标题类时

我们可以同时设置size

当文字宽度超过size时会自动换行

然后可以直接链式调用两个方法

set_start()和set_end()

用来设置这个视频片段的起始和结束时间

这里我们就正好设置为某个鼓点和下一个鼓点之间的时间

这样我们就完成了每个文字片段视频的制作

最后来生成完整的视频

 final_clip = CompositeVideoClip(clips)audio_clip = AudioFileClip(music)final_video = final_clip.set_audio(audio_clip)final_video.write_videofile(output,fps=30,codec='mpeg4',preset='ultrafast',audio_codec="libmp3lame",threads=4)

利用moviepy的CompositeVideoClip

来合成多个视频片段clip

用AudioFileClip制作音频片段

然后合成

最后直接用write_videofile()方法生成完整视频

这个方法里可以设置视频、音频编码

以及帧率FPS

最后加上

if __name__ == '__main__':main()

就大功告成啦!

这样以后想要制作简单的快闪文字视频

只需要运行这个python文件

根据提示输入信息

就可以等着程序帮你搞定啦

是不是超方便

本期悦创小课堂到这里就结束了啦

欢迎关注AI悦创

我会继续教大家一些好玩有趣的脑洞项目

用 Python 自动生成快闪文字视频相关推荐

  1. 使用Python自动生成带有图表文字的PDF(附带万字完整代码)

    目录 1.前言 2.数据取数与Reportlab包说明 3 .导入PDF生成相关包 4.初始化函数封装

  2. 用Python自动生成NBA巨星生涯数据曲线

    1.序 之前写过一个用 python 自动生成球员职业生涯数据的程序(原文请关注本人公众号),大家的反响很好,我也感到很欣慰.有问我怎么做的,如何学 python 的,也有提建议说集成到 web 里面 ...

  3. 用Python自动生成数据日报!

    今天聊聊怎么用Python自动生成数据日报! 其实我觉得蛮简单,核心就是你组装好日报的内容模板,然后将变化的量交给python去填充,需要用到的基本就是python处理excel.word和ppt等相 ...

  4. Python自动生成代码 - 通过tkinter图形化操作生成代码框架

    Python自动生成代码 - 通过tkinter图形化操作生成代码框架 背景 脚本代码 Demo_CodeGenerator.py display.py FileHandler.py: 脚本运行结果: ...

  5. python新建word文档_使用Python 自动生成 Word 文档的教程

    当然要用第三方库啦 :) 使用以下命令安装: pip install python-docx 使用该库的基本步骤为: 1.建立一个文档对象(可自动使用默认模板建立,也可以使用已有文件). 2.设置文档 ...

  6. python自动生成和读取word_使用Python自动生成Word文档的教程

    当然要用第三方库啦 :) 使用以下命令安装: pip install python-docx 使用该库的基本步骤为: 1.建立一个文档对象(可自动使用默认模板建立,也可以使用已有文件). 2.设置文档 ...

  7. 情人节到了,用Python自动生成520照片墙吧~

    导语 情人节到了,用Python自动生成520照片墙可好,没有对象的自己看 相关文件 关注微信公众号 Python日志, 公众号内回复'照片墙'获取. 视频教学 视频教学:哔哩哔哩照片墙制作 开发工具 ...

  8. FCPX插件:快闪文字排版动画Stomp Typography

    Stomp Typography这是一组快闪文字排版动画fcpx插件,可以为大家的视频添加闪烁的文字排版元素,非常适用于展示您的个人品牌.照片.视频.商业幻灯片.商业广告.活动开场白.演示文稿.电视节 ...

  9. python自动生成word报告

    python自动生成word报告 运用zipfile解压docx并替换模版内容 本文章主要介绍根据所提供的word模版,运用python zipfile库将word解压为xml格式,并通过文字替换自动 ...

  10. python自动汇总表格_用Python自动生成Excel报表

    作者 / 来源:林骥(ID:linjiwx) 01 安装和导入模块 以 Python 中的 openpyxl 模块为例,它能够读取和修改 Excel 文件,如果你还没有安装,可以通过以下命令进行安装: ...

最新文章

  1. 【3DMax教程】三维产品可视化视频教程 3d Products Visualization Course
  2. 连接LilyPad之Windows平台的驱动
  3. VTK:模型之Spring
  4. 如何使用SAP Cloud for Customer OData服务创建Lead
  5. java 字符串数组定义_「string数组」string 数组怎么定义 - seo实验室
  6. [软技能] 在前后端分离项目里,请说说前端传递的token的流程?
  7. Docker安装禅道项目管理平台zendao-v11.6.x
  8. “跨界养猪”这件事,华为正式回应了
  9. linux 反汇编目标文件,用于查看目标文件或可执行文件的组成信息的命令:objdump命令...
  10. 解决:fatal: not a git repository (or any of the parent directories): .git的问题
  11. python数据分析-《Python数据分析与数据化运营》电子版
  12. html5小游戏代码-2048游戏
  13. 简单记录如何通过 VS Code 和 Auto Build Marlin编译和更新marlin固件
  14. 基于SSM的医院科室人员管理系统
  15. 云服务器htdocs文件夹在,htdocs文件夹
  16. 免服务器软件库源码实现超级管理动态发布会员系统卡密系统充值对接卡密网软件发布板块后台功能 软件商店1.3.1
  17. OSChina 周二乱弹 —— 好支威有希
  18. 这篇文章就是要让你入门java多线程【多线程入门】
  19. python拟合非线性模型_python-绘制分段拟合到非线性数据
  20. VMware安装centos虚拟机

热门文章

  1. 密码字典生成工具—Crunch的使用
  2. 修正统计的 5 个方法
  3. android jar包下载地址
  4. 科学函数计算机怎么关机,函数计算器的功能有哪些?关机是哪个键?
  5. web前端效率提升之浏览器与本地文件的映射-遁地龙卷风
  6. NTKO文档控件常见报错信息集合
  7. android手机投影到电视软件下载,安卓手机怎么投屏到电视?这两种方法最简单!...
  8. ms17-010 php版本,MS17-010补丁360版
  9. 快收下这份照片模糊变清晰方法攻略
  10. smartdeblur(图片模糊处理工具) v2.2