天天刷抖音,发现一些 好玩的 快闪文字视频, 自己尝试着做了几个,用了很多 的 工具做了一下,发下需要收费, 于是,用Python整了个 工具来合成 文字视频,效果如下:PFinal社区,快闪文字视频https://www.zhihu.com/video/1127196631308853248

目录结构如下:

工作流程如下:

data.txt 是需要读取和现实的文字:

假如生活,欺骗了你,不要悲伤,不要心急,多被骗几次,就好了。

这世上,99%的事,都可以,用钱来解决,唯一,不能解决的,那1%,就是没有钱。

由于断句的问题还没有解决,所以 手工 加,号断的句。入口main.py代码如下:

# -*- coding:utf-8 -*-

import os

from generate_img.generate_img import generate_bg_img

from generate_img.generate_img import generate_img

from generate_img.generate_img import get_text

from generate_img.generate_img import img_to_video

from generate_img.generate_img import video_to_img

from generate_img.generate_img import get_radio

if __name__ == '__main__':

if os.path.exists('bg.png') == False:

generate_bg_img()

text_list_all = get_text()

if len(text_list_all) > 0:

radio = 1

for text_list in text_list_all:

i = 1

get_radio(','.join(text_list), radio)

for text in text_list:

generate_img(text, i, 50)

i += 1

img_to_video(len(text_list), radio)

radio += 1

generate_bg_img() 方法 是生成背景图片的方法

def generate_bg_img():

image = Image.new("RGB", (544, 960), "black")

draw_table = ImageDraw.Draw(im=image)

# image.show()

image.save('bg.png', 'PNG')

image.close()

generate_img() 方法 是把文字转换成 每一帧图片,转换成的图片如下:

def generate_img(text="中文", k=1, num=50, last_string=''):

img = cv2.imdecode(np.fromfile('bg_' + str(random.randint(1, 2)) + '.jpg', dtype=np.uint8), -1)

x = random.randint(10, 100)

# print(img.shape)

y = random.randint(100, img.shape[0] - 200)

colors = {1: "black", 2: "red", 3: "white"}

f = 1

font_size = random.randint(30, 70)

while f <= num:

cv2img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # cv2和PIL中颜色的hex码的储存顺序不同

pilimg = Image.fromarray(cv2img)

draw = ImageDraw.Draw(pilimg)

font = ImageFont.truetype("simkai.ttf", font_size + random.randint(1, 2), encoding="utf-8")

draw.text((x + random.randint(-5, +5), y + random.randint(-5, +5)), text, colors[random.randint(1, 3)],

font=font) # 参数1:打印坐标,参数2:文本,参数3:字体颜色,参数4:字体

cv2charimg = cv2.cvtColor(np.array(pilimg), cv2.COLOR_RGB2BGR)

cv2.imencode('.jpg', cv2charimg)[1].tofile('image/' + str(k) + "_" + str(f) + ".jpg")

cv2.waitKey(0)

cv2.destroyAllWindows()

f += 1

get_text() 方法是 获取 字符串断句的列表

def get_text():

text_list = [];

with open('data.txt', "r", encoding='utf-8', errors='ignore') as f:

for string in f.readlines():

text_list.append(string.split(','))

return text_list

img_to_video() 方法是图片生成 视频的方法:

def img_to_video(total, radio):

# print(open('auido_%s.mp3' % str(radio)))

fps = 28

size = (544, 960)

name = random.randint(1, 1000)

videowriter = cv2.VideoWriter(str(name) + ".mp4", cv2.VideoWriter_fourcc(*"mp4v"), fps, size)

for f in range(1, 51):

img_fen = cv2.imread('fen.png')

videowriter.write(img_fen)

path = r'image/'

for x in range(1, total + 1):

for i in range(1, 51):

# print(path + str(x) + '_' + str(i) + '.jpg')

img = cv2.imread(path + str(x) + '_' + str(i) + '.jpg')

cv2.waitKey(1)

videowriter.write(img)

videowriter.release()

time.sleep(1)

print("video audio merge!!!!!")

audioclip = AudioFileClip('auido_%s.mp3' % str(radio))

print(str(name) + ".mp4")

videoclip = VideoFileClip(str(name) + ".mp4")

# print(videoclip)

videoclip2 = videoclip.set_audio(audioclip)

video = CompositeVideoClip([videoclip2])

video.write_videofile(str(name) + str(random.randint(1, 10)) + ".mp4", codec='mpeg4', fps=28)

在这个方法之前, 需要把 把字符串转换成,音频, 使用了 百度的语音合成API,代码如下:

def get_radio(text, i):

client = AipSpeech(config.APP_ID, config.API_KEY, config.SECRET_KEY)

result = client.synthesis(text, 'zh', 1, {

'vol': 5,

'spd': 2,

'per': 4

})

if not isinstance(result, dict):

with open('auido_%s.mp3' % str(i), 'wb') as f:

f.write(result)

需要的可以 留言.

更多知识分享,请扫码关注:

java抖音字符视频_代码生成抖音文字视频相关推荐

  1. gopro7怎么回看视频_玩转手机短视频剪辑,学一个暑假就够了!

    哈喽,大家好!我是学壹少年的阿飞学长鸭! 不知道你们有没有发现一个趋势,视频正在侵蚀你的生活. 刷刷抖音.逛逛b站,打开app,各种美食教程.搞笑段子.化妆教程.娱乐轶事,开始了就停不下来,一刷就是一 ...

  2. vue怎么合并两个视频_【软件分享】视频分割合并软件哪款好用呢?怎么剪切合并视频?...

    现在有很多小伙伴都喜欢喜欢自己拍视频上传到各大视频平台,有时候会遇到关于视频剪辑方面的难题,比如说,视频怎么剪切?怎么将两段小视频合并成一个呢?这些都是一些比较常常遇到的问题,今天小编就给大家介绍一款 ...

  3. wallpaper怎么导入视频_怎样制作Wallpaper Engine视频壁纸 制作视频壁纸方法图文教程...

    Wallpaper Engine突然间在国内就大火了起来,很多用户纷纷给自己的电脑换上了新妆.然而也有一些用户觉得网上的资源自己都不喜欢,想要自己制作一款满意的视频壁纸.那么,如何制作Wallpape ...

  4. python实现双屏同时播放视频_多画面同时播放视频 如何在一个视频画面中播放多个视频?...

    今天小编要介绍的多屏拼接,不是普遍意义上的4个显示器组成一个大屏,多屏显卡怎么设置四屏拼接,用电视机进行多屏拼接,而是使用多屏拼接软件来实现视频多屏拼接同时播放的效果哦~以前小编也介绍过分屏切换的效果 ...

  5. 如何用python爬视频_使用Python爬取视频

    说明:本实例可从视频网站爬取相关视频碎片,最后拼接成一个完整的视频,可以是vip视频. 步骤1:打开某个视频页面,如腾讯视频<一出好戏>(地址:https://v.qq.com/x/cov ...

  6. python如何播放视频_在网上看到一个视频!怎么下载下来啊?

    原标题:在网上看到一个视频!怎么下载下来啊? 大家早,我是云景,之前我给大家连续分享过三篇关于下载网页视频的技巧,但是有些同学觉得难!因为里面用到了Python的知识. 其实,我之前也分享过一个更加简 ...

  7. axure 抖音部件库_致敬抖音一周年:用Axure还原酷炫高保真原型【附系列教程】...

    短视频里的社会一哥--抖音 "一入抖音深似海,从此淑女是路人",97年的王璐在谈到她对抖音这款应用的印象时,调侃地说到.她说刚开始玩抖音,一刷就一下午,根本停不下来,太有魔性了. ...

  8. java语言实现视频音频采集_详解js的视频和音频采集

    今天要写的,不是大家平时会用到的东西.因为兼容性实在不行,只是为了说明下前端原来还能干这些事. 大家能想象前端是能将摄像头和麦克风的视频流和音频流提取出来,再为所欲为的么.或者说我想把我canvas画 ...

  9. java修改默认字符编码_设置默认的Java字符编码?

    如何以编程方式正确设置JVM(1.5.x)使用​​的默认字符编码? 我已经读过-Dfile.encoding =以前是以往的方式去为旧的JVM -我没有那么奢侈的原因,我不会进入. 我努力了: Sys ...

  10. java车牌识别字符分割_车牌识别LPR(六)-- 字符分割

    第六篇:字符分割 在知道了车牌字符的规律之后,可以根据车牌的特点对字符进行分割.一般最容易想到的方法就是根据车牌投影.像素统计特征对车牌图像进行字符分割的方法.是一种最常用的.最基本的.最简单的车牌字 ...

最新文章

  1. 【转】Traceview的使用
  2. android 详解画图,android画图之贝塞尔曲线讲解详解
  3. (转载)KVM is required to run this AVD /dev/kvm permission denied Ubuntu Android Studio
  4. 去重之后统计条数_BOPET:12的普通包装膜到底去哪了?
  5. B端设计指南-表格设计的常见问题
  6. 用计算机弹猪猪侠数字,猪猪侠之挑战数字
  7. 【毕设】jsp+基于JB的人事管理系统(源代码+论文)
  8. 威学一百_涨价通知丨威学一百VIP全年畅学卡价格即将上调!
  9. 如何实现 迭代器 可迭代对象 (2.1)
  10. 在苹果Mac中如何一键转换繁体与简体中文?
  11. 现在流行「毕业式」裁员吗?
  12. SpringBoot2.0.0启动流程
  13. c语言中为什么无法打开原文件格式,为什么vs2012无法打开源文件graphics.h和bio
  14. Android科大讯飞语音集成(语音输入,语音合成文字转声音)
  15. LoadLibrary加载dll失败, 报告找不到指定的模块 的问题的解决
  16. 百度云曲显平:AIOps时代下如何用运维数据系统性地解决运维问题?
  17. edu邮箱填写服务器,学生邮箱Outlook使用设置
  18. python中file方法
  19. php 数组压缩成一行,php对特定数组进行压缩
  20. PTA 7-80 打折促销*

热门文章

  1. 计算机软件硬件和应用知识论文,有关计算机及应用毕业论文
  2. 如何使用GoldWave中文版进行声道分离?
  3. 【学习笔记】标签噪声下利用深度学习进行图像分类任务——概述
  4. 数据结构与算法st1:稀疏数组的学习(五子棋的存盘与续盘)
  5. 求平方根java实现
  6. python做网络图_使用Python的networkx绘制精美网络图教程
  7. 2023年计算机考研院校推荐50所
  8. 【ElasticSearch】ES分页查询超过10000限制解决
  9. Win32多语言IME应用程序编程接口(API)
  10. 开心庄园html的代码,HTML第五章(示例代码)