各位同学好久不见

又来到毕老师小课堂时间了

今天我们来教大家

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

最出名的快闪文字视频

当属苹果16年的广告了

文字搭配着音乐节奏闪现

效果简单又震撼

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

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

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

不管你是用PPT还是Premier

都得慢慢对齐鼓点节奏

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

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

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

今天!

毕老师来帮一下各位苦逼的视频从业人员

我们用万能的Python

自动生成快闪文字视频!

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

都不用害怕了!

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

改革春风吹满地

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

然后我们看看由程序自动找鼓点生成的快闪文字视频https://www.zhihu.com/video/1124734415242416128

上面视频当中

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

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

唯一需要手动操作的就是

将文字按照需要切分出来

其实这一步也可以省略

比如下面这个视频

我利用分词模块

将这篇新闻

用快闪文字的方式

呈现出来https://www.zhihu.com/video/1124734564881666048

这个新闻呈现的方式

是不是很带感呢

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

估计得累死……

如果你想直接获取这个快闪文字的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

于是我们的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]):

print(f'{index + 1}/{len(beat_times)}——{word_list[index]}')

if index >= len(word_list):

break

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文件

根据提示输入信息

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

是不是超方便

本期毕老师小课堂到这里就结束了啦

欢迎关注毕老师

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

我是毕老师,依然会不定时给你们分享一些有趣好玩实用的东西,欢迎关注~

警察蜀黍!就是这个人!脑子简直有泡!还不赶紧关注一下!

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

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

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

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

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

  3. 5天学会python_学会Python自动制作Word,将看到一个5天4位数的赚钱机会

    接单 周二推了一篇Python编辑ppt的文章,行哥告诉读者学会重复处理PPT接单兼职更加高效.因为Python是一种生产工具,掌握生产工具后就应该拿去尝试赚钱. 本文行哥给读者系统介绍下Python ...

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

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

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

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

  6. python自动生成字幕_自动生成字幕软件?

    其实把视频上传到 Youtube 就好了,前提是视频的声音清晰,它会自动生成字幕,然后再用 Downsub 之类的网站就可以把这个字幕抓下来: 还有一个网站, gosubtitle ,我只试过一次,给 ...

  7. 通过web系统实现淘宝营销引流,小说或者视频上传之后自动生成二维码,通过二维码分享之后引入微信或者扣扣加群,群满自动切换到下一个,以及数据统计分析和若干个小工具集成

    通过web系统实现淘宝营销引流,小说或者视频上传之后自动生成二维码,通过二维码分享之后引入微信或者扣扣加群,群满自动切换到下一个,以及数据统计分析和若干个小工具集成. 主要实现技术: 1.大文件视频分 ...

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

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

  9. python自动生成word报告

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

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

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

最新文章

  1. 8、python基础知识-用户输入
  2. amd显卡风扇调节_和AMD首席游戏架构师Frank Azor聊聊RX 6000系列显卡那些事儿
  3. linux io体系结构,Linux IO体系结构
  4. Apollo进阶课程⑳丨Apollo感知之旅——机器学习与感知的未来
  5. 软件测试--数据库基础知识
  6. python彩票预测算法软件_python用遗传算法 神经网络 模糊逻辑控制算法对彩票乐透数据进行预测...
  7. 等额本息PMT和PPMT推导计算公式
  8. 热电偶的工作原理及结构 1
  9. centos7 teamspeak3的搭建
  10. 人脑能用计算机算法吗,电脑到人脑,计算机必不可少的4大思维
  11. 完美修改证件照背景详细步骤,可以消除边界处的白边或者红边
  12. 【Spring实战】----Spring事务管理配置解析
  13. Autosar DaVinci Developer的一些基本功能
  14. BGP服务器是什么 BGP对比三线、单线服务器有什么优缺点
  15. 计算机在化学化工中的应用ppt绪论,化工应用数学第一章绪论摘要.ppt
  16. 什么企业邮箱办公最好用,163企业邮箱最全介绍!
  17. vb内部排序7大算法
  18. 识别各种花草植物是什么软件?这些识别软件可以帮你识别
  19. python mysql 的默认值_python--MySQL 库,表的详细操作
  20. 软件工程毕业设计课题(70)微信小程序毕业设计PHP校园共享洗衣小程序系统设计与实现

热门文章

  1. CRM客户管理系统的功能模块有哪些
  2. CTPN OCR目标检测及源码
  3. Spring事务管理A方法内部调用B方法的回滚问题(springboot事务管理)
  4. 给html标签加上鼠标划过小手样式
  5. 零数开放许可链入选《互联网周刊》2021区块链应用创新TOP50
  6. 计算机 word 节是什么,Word中的分节符是什么,如何使用?
  7. python 分析qq聊天记录
  8. django 框架 SQL 语句 查询篇
  9. 你为什么那么努力还是不开心!
  10. 小程序容器进一步强化国家政务服务平台功能