Python通过⽂字⽣成语⾳,随机获取视频或图⽚素材⽣成伪原创的短视频
前段时间写了⼀篇《抖⾳⾃动引流脚本源码》主要通过语录系统⾃动⽣成语句或随机评论,适⽤于⾃动评论引流脚本。
今天脑洞⼤开,想⽤Python通过⽂字⽣成语⾳,随机获取视频或图⽚素材⽣成伪原创的短视频。
因为搬运短视频⼈⼯成本太⾼,我就想着能不能有⾃动化的⽅式来⽣成视频。
话不多说,先看看⽣成的视频效果
短视频:
你是我隔世的温柔,温暖我⼀⽣的眷恋
⼩视频:
你有信仰就年轻,岁⽉测试的不过是你的热忱
步骤⼀:
还是先通过语录系统获取⽂案。
msg = ("words.lanhaiqingbao/api.php").text
print(msg)
步骤⼆:
⽂案获取后,就是转语⾳了,百度⼀翻后,到⼀个百度语⾳AI⼯具 ,感兴趣的可以去看看,这⾥不多说,以下为主要代码:svn提交文件
if msg:
APP_ID =''
API_KEY =''
SECRET_KEY =''
client =AipSpeech(APP_ID, API_KEY, SECRET_KEY)小程序web开发工具
# 这⾥⽤的是百度语⾳识别,填⼊⾃⼰注册的API即可
# 参数说明ai.baidu/ai-doc/SPEECH/Gk4nlz8tc
result = client.synthesis(msg,'zh',1,{
'vol':10,'per': random.randint(3,4),'spd':3
})
# 识别正确返回语⾳⼆进制错误则返回dict 参照下⾯错误码
if not isinstance(result, dict):
with open(yuyin_path,'wb') as f:
f.write(result)
print('处理成功')
步骤三:
⽣成语⾳后,接下来就是获取语⾳时长,由于之前没注意这个问题,⾛错了很多弯路。
以下是代码:
print('获取⽂案语⾳时长')
voice_clip =AudioFileClip(voice_path)
voice_duration = voice_clip.duration # 语⾳时长
步骤四:
由于⽂案时长有长有短的,如果短视频⼀个⽂案展⽰时间过长会显得单调,展⽰时间过短⼜让⼈感觉 看不过来,所以,下⾯是优化⼀下每个素材的展⽰时间,可根据需要⾃⼰调整。
# 通过语⾳时长设置每个素材显⽰多少秒
sp_time =[]
if voice_duration >20:
minS =3
maxS =4.5
else:
minS =2
maxS =3.5
yt = voice_duration
while(yt):
if(yt<3):
sp_time.append(yt)
yt=0
break
else:
r = random.uniform(minS,maxS)
sp_time.append(r)
shell实战案例yt = yt - r
# 统计需要多少个素材
neep_pics =len(sp_time)
步骤五:
接下来就是获取素材了,代码如下:
# 获取背景⾳乐
print('随机选择⼀⾸背景⾳乐,并调整声⾳⼤⼩')
musics =[join(music_path,fn)for fn in listdir(music_path)dswith('.mp3')]
music = musics[random.randint(0,len(musics)-1)]
music_clip =AudioFileClip(music)
volumex(music_clip,0.7)
print('开始选择封⾯图⽚,获取所有美⼥图⽚,随机选择⼀张')
meinv_pics =[join(meinv_pic_dir,fn)for fn in listdir(meinv_pic_dir)dswith('.jpg')] meinv_one = meinv_pics[random.randint(0,len(meinv_pics)-1)]
print('开始选择视频内容素材')
rand_sp=random.sample(range(0,293), neep_pics)
img=Image.open(meinv_one)
try:
new_size((720,1280),Image.BILINEAR)
new_img.save(os.path.join(meinv_pic_dir,os.path.basename(meinv_one)))
except Exception as e:
print(e)
image_clips =ImageClip(meinv_one,duration=2.5)
browser用法步骤六:
最后就是素材合并了
video_clips =[]
video_clips.append(image_clips)
sp_num =0
for shipin in rand_sp:
sp_url = fengjing_pic_dir+'\\'+str(shipin)+'.mp4'
videos =VideoFileClip(sp_url)
videos = videos.subclip(0,sp_time[sp_num]).resize(width=720,height=1280)
video_clips.append(videos)
sp_num = sp_num +1
result_video =concatenate_videoclips(video_clips, method='compose')
抖音python入门教程audio_clip_add =CompositeAudioClip([music_clip,voice_clip])
result_video = result_video.set_audio(audio_clip_add)
翻译wrapprint('⾳乐合并完成')
print('开始导出视频...')
result_video = result_video.subclip(0,voice_duration)
result_video.write_videofile(final_video_path,fps=30,audio_codec="aac",codec="libx264") print('视频制作成功')
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论