用Python写一个营销号垃圾视频生成器

可能是闲着太无聊,然而复习是不可能复习的,就做了一个这个玩意儿,改天进军UC和百家号(不会真有人用吧)

先看看效果:(1:20以后)

用Python做的营销号视频生成器!

资源准备

分析一下平时能刷到的垃圾视频,可以发现有几个小特征:

文本格式固定,而且内容没有什么意义

语音是女性

视频一般都是一些什么自然风光,和文本也没有什么关联

有一个大家一听就知道是营销号的 BGM

这样的话,就可以开始找素材了

我们上B站找一段自然风光的拍摄视频

上B站找一段自然风光的拍摄视频(自己去找一个两分钟左右的,太短了不行,太长了没必要)(下文中用的video_ori.mp4)

找到营销号用的BGM(项目的Github上有我用的)(下文中的bgm.mp3)

注册百度开发者 (为了使用他们免费的文字转语音API)

生成营销号视频文案(等下你就知道了)

让我们现在就开始做吧(假设你已经有了背景视频和BGM)

生成营销号视频文案

def Generatetxt(somebody,something,other_word):

txt = '''{}{}是怎么回事呢?{}相信大家一定很熟悉,

但是{}{}是怎么回事呢,下面就让小编来带着大家一起了解吧!

{}{},其实就是{},大家可能会很惊讶{}怎么会{}呢?但事实就是这样,

小编也感到非常惊讶。就是关于{}{}的事情了,大家有什么想法呢,

欢迎在评论区告诉小编来一起讨论哦!

'''

txt = txt.format(somebody,something,somebody,somebody,something,somebody,something,other_word,somebody,something,somebody,something)

return txt

是不是感觉很熟悉,使用

print(Generatetxt("健身", "伤害身体", "运动过度肌肉会损伤"))

放一段生成品上来

健身伤害身体是怎么回事呢?健身相信大家一定很熟悉,但是健身伤害身体是怎么回事呢,下面就让小编来带着大家一起了解吧!

健身伤害身体,其实就是运动过度肌肉会损伤,大家可能会很惊讶健身怎么会伤害身体呢?但事实就是这样,小编也感到非常惊讶。

这就是关于健身伤害身体的事情了,大家有什么想法呢,欢迎在评论区告诉小编来一起讨论哦!

文本生成语音

首先需要安装 baidu-aip 库 (SDK),直接pip install baidu-aip就好了

申请百度语音识别接入的开发者账号,网址:百度开发者,目的是为了获取AppID,API Key,Secret Key

这里使用的就是最简单的合成方法,具体使用可以去看他们的文档。免费生成中文语音可以用50000次,还是良心的

from aip import AipSpeech

def GenerateMP3(txt):

#这里用你自己申请到的

APP_ID = '**********'

API_KEY = '**************'

SECRET_KEY = '**************'

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

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

'vol': 4, 'per': 0, 'spd': 5

})

if not isinstance(result, dict):

with open('./sound.mp3', 'wb') as f:

f.write(result)

我直接保存到代码文件目录的sound.mp3,可以自己修改一下各项参数。包括语音的速度,语调,音量等等。

语音+bgm+背景视频 融合

这个地方我踩了好多坑,不知道为什么我用subprocess调用ffmpeg总是出毛病,pydub库也总是报json文件错误。所以我选择了moviepy库

moviepy官方文档

这个库还是蛮好用的,就是网上的中文文案还在制作中,很多东西还得去官方文档搜英文说明。

先把代码放一下:

def video_add_mp3(file_name, mp31_file,mp32_file,new_filename, time):

video = VideoFileClip(file_name)

audioclip = AudioFileClip(mp31_file)

audioclip2 = AudioFileClip(mp32_file)

compo = CompositeAudioClip([audioclip.set_start(2),

audioclip2.set_start(0)])

#print(type(compo)

videoclip = video.set_audio(compo)

videoclip = videoclip.subclip(0, time)

try:

videoclip.write_videofile(new_filename)

video.reader.close()

return new_filename

except:

traceback.print_exc()

return None

应该很容易读懂,构建两个AudioFileClip对象,作为bgm和语音;构建一个VideoFileClip作为视频图像。然后两个音频融合,BGM先播放,语音2秒后播放,再把视频剪成参数中的time秒,这个时间和视频剪辑的函数下面会说到:

视频剪辑:

def VideoClip(filename, start=0, end=None):

tmp_name = filename.split('.')

new_filename = tmp_name[0] + '_clip.' + tmp_name[1]

video = VideoFileClip(filename)

try:

result = video.subclip(start, end)

result.write_videofile(new_filename)

video.reader.close()

return new_filename

except:

traceback.print_exc()

return None

没什么技术含量了

获取MP3的长度:

def get_mp3length(path):

audio = MP3(path)

return audio.info.length

整体代码:

from aip import AipSpeech

from mutagen.mp3 import MP3

from moviepy.editor import *

import traceback

def Generatetxt(somebody,something,other_word):

txt = '''{}{}是怎么回事呢?{}相信大家一定很熟悉,但是{}{}是怎么回事呢,下面就让小编来带着大家一起了解吧!

{}{},其实就是{},大家可能会很惊讶{}怎么会{}呢?但事实就是这样,小编也感到非常惊讶。

这就是关于{}{}的事情了,大家有什么想法呢,欢迎在评论区告诉小编来一起讨论哦!

'''

txt = txt.format(somebody,something,somebody,somebody,something,somebody,something,other_word,somebody,something,somebody,something)

return txt

def GenerateMP3(txt):

APP_ID = '************'

API_KEY = '****************'

SECRET_KEY = '************************'

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

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

'vol': 4, 'per': 0, 'spd': 5

})

if not isinstance(result, dict):

with open('./sound.mp3', 'wb') as f:

f.write(result)

def get_mp3length(path):

audio = MP3(path)

return audio.info.length

def video_add_mp3(file_name, mp31_file,mp32_file,new_filename, time):

video = VideoFileClip(file_name)

audioclip = AudioFileClip(mp31_file)

audioclip2 = AudioFileClip(mp32_file)

compo = CompositeAudioClip([audioclip.set_start(2),

audioclip2.set_start(0)])

print(type(compo))

videoclip = video.set_audio(compo)

videoclip = videoclip.subclip(0, time)

try:

videoclip.write_videofile(new_filename)

video.reader.close()

return new_filename

except:

traceback.print_exc()

return None

if __name__ == '__main__':

print(Generatetxt("健身", "伤害身体", "运动过度肌肉损伤"))

GenerateMP3(Generatetxt("健身", "伤害身体", "运动过度肌肉损伤"))

Mp3TimeLength = get_mp3length("sound.mp3")

video_add_mp3("video_ori.mp4", 'sound.mp3','bgm.mp3','After.mp4',Mp3TimeLength + 3)

就这样了8

对了 源码和我用的素材传Github了:Github链接

原文链接:https://blog.csdn.net/weixin_43483965/article/details/105626492

python广告营销平台_荐用Python写一个营销号垃圾视频生成器相关推荐

  1. 用Python写一个营销号垃圾视频生成器

    用Python写一个营销号垃圾视频生成器 可能是闲着太无聊,然而复习是不可能复习的,就做了一个这个玩意儿,改天进军UC和百家号(不会真有人用吧) 先看看效果:(1:20以后) 用Python做的营销号 ...

  2. python广告营销平台_如何用 Python 开发一个【视频营销号】生成器?

    ​之前小帅b在网上看到一个营销号文案生成器,把我给乐的: 其实这个用 Python 实现非常简单,根据用户输入的内容,简单替换一下关键字就可以了,我随手写了一下生成方法: 调用一波: 是不是老小编了? ...

  3. python k线合成_手把手教你写一个Python版的K线合成函数

    手把手教你写一个Python版的K线合成函数 在编写.使用策略时,经常会使用一些不常用的K线周期数据.然而交易所.数据源又没有提供这些周期的数据.只能通过使用已有周期的数据进行合成.合成算法已经有一个 ...

  4. python搭建自动化测试平台_如何用python语言搭建自动化测试环境

    原标题:如何用python语言搭建自动化测试环境 技术分享:基于Python语言的Web自动化测试环境搭建 近期发现很多初学者在学习自动化的过程当中,在环境安装环节总是出现问题,所以详细的出一篇环境搭 ...

  5. python画饼图柱状图_荐【python数据分析(24)】Matplotlib库基本图形绘制(1)(线形图、柱状图、堆叠图、面积图、填图、饼图)...

    0. 前期准备: 导入三个必备的库,推荐使用jupyter notebook或者spyder编程环境 import numpy as np import pandas as pd import mat ...

  6. python老师 课时费_花10分钟写一个Python脚本,搞定了初中老师一下午的工作

    有个朋友是一个初中老师.嗯,教学行政两手抓的那种初中老师. 一天晚上突然微信问我,怎么把图片转成PDF.懵了一下,这个直接打印成PDF不就可以了? 遂告诉他,结果感觉两个人不是一个世界的: 好不容易教 ...

  7. 用JAVA写一个古诗生成器_简简单单用java写一个营销号话术生成器

    废话不多讲直接上代码import java.util.Scanner; public class sb { public static void main(String[] args) { Strin ...

  8. python 彩票 遗漏值_荐Python遗漏知识点一

    Python笔记之遗漏 print('name:', user_name, '年龄:', user_age, sep ='|' , end = ' ') f = open("poem.txt ...

  9. python gui开发工具_深入解析Python,透析应用开发,涵盖9大应用领域的Python框架...

    前言 当前,Python 已经成为最流行的程序设计语言之一,被越来越多的人作为首选语言来学习和应用.作为一种解释型的语言,Python具有内置的高级数据结构和简单有效的面向对象编程机制.同时,其语法简 ...

最新文章

  1. // synopsys_translate_off,parallel_case 和 full_case
  2. Mac pycharm flask 用内网ip 运行 web
  3. linux内核spi总线驱动分析,Linux下的SPI总线驱动(三)
  4. 图解如何安装Oracle 10g的
  5. 循环队列和链队的表示和实现
  6. 高质量程序设计指南C++学习总结一
  7. 基于stm32单片机外文文献_单片机STM32外文文献翻译、中英文翻译
  8. 注意力测试软件系统,注意力综合评估训练系统
  9. 上交计算机考研专业课,2020上海交通大学计算机考研经验,过来人谈考研
  10. 为Web登陆添加验证码功能
  11. 【手把手教你】搭建自己的量化分析数据库
  12. vb.net指定范围内获取随机数
  13. Python开发 CDN查询子域名查询
  14. 又有程序员跳楼了 我们是有多累?
  15. JavaScript写移动端答题网页程序
  16. ubuntu显示器分辨率不对_Ubuntu安装事宜之一 — 屏幕分辨率问题
  17. java 立刻回收_如何实现Java程序自动回收垃圾
  18. ubuntu 16.04-设置合上笔记本盖子不休眠
  19. Unity3D 里IK手柄的用运
  20. 软件测试面试题:什么是数据的对立性,有几个层次?

热门文章

  1. react、vue项目代码阅读熟悉技巧
  2. 配置一个高性能低成本的计算机,推荐的大型机PC主机配置,用于低成本和高性能的游戏...
  3. 解读CIO角色 他们每天做什么? [zt]
  4. C++ 类 :类成员函数定义
  5. oracle指定查询行数
  6. Win10 快速启动对驱动的影响
  7. mac使用终端连接服务器错误:ECDSA host key for [ip address] has changed and you have requested strict checking解决
  8. 未来最高明的数据恢复师
  9. 浅谈Substance painter/Designer软件
  10. css三角形四条边全攻略