当前位置: 首页 > 科技观察

教你用Python轻松制作淘宝主图视频生成器

时间:2023-03-19 01:42:21 科技观察

大家好,我是Python进阶。前言做过网店的朋友或多或少都会用到主图视频,因为它可以增加网店产品的曝光率,从而提高店铺产品的成交率。今天小编就来给大家介绍一下这样一款神器的制作方法,据说网上类似的软件都是付费软件,我们制作完成后就可以免费使用了。一、项目准备编辑器:sublimetext3音视频程序:FFmpeg模块:tkinter、os、PIL、time2、项目目标将多张图片合成一个视频,配上背景音乐三、实验步骤1、准备好图片大家就ok了网上随便搜一下,就不多说了。2.导入模块importtimefromtkinterimportfiledialogimporttkinterastfromPILimportImagefromtkinterimportmessageboximportos3。使用tkinter模块制作软件界面,tkinter模块是Python自带的模块。我们添加所有必需的组件。self.tl=[]#存储的图片列表self.aa=''#音频的地址self.fg=os.path.join(os.path.expanduser("~"),'Desktop')#桌面地址self.root=t.Tk()self.root.title('淘宝主图视频生成器v1.0')#主界面标题self.root.iconbitmap('1.ico')#添加主界面标题图片self.root.geometry('700x600')#主界面尺寸self.root.attributes('-alpha',0.9)#主界面透明度self.root.wm_attributes('-topmost',1)#主界面顶部self.tt=t.Text(self.root,width=75,height=30)#textbox#主界面所有按钮和部分标签组件self.b1=t.Button(self.root,text='打开图片文件',font=("宋体",13,'粗体'),command=self.open_file)self.b3=t.Button(self.root,text='打开音频文件',font=("宋体",13,'粗体'),command=self.adio)self.b7=t.Button(self.root,text='打开文件并批量修改',font=("宋体",13,'bold'),command=self.xg)self.b8=t.Button(self.root,text='查看照片',font=("歌曲类型",13,'bold'),command=self.ck)self.l1=t.标签(self.root,text='视频文件名:')self.e=t.Entry(self.root)self.b2=t.Button(self.root,text='生成主图视频',font=("歌曲类型",13,'bold'),command=self.video)self.b4=t.Button(self.root,text='播放音频文件',font=("歌曲font",13,'bold'),command=self.play)self.b5=t.Button(self.root,text='清除文本框内容',font=("宋体",13,'bold'),command=self.close)self.b6=t.Button(self.root,text='预览视频内容',font=("宋体",13,'bold'),command=self.player)self.l2=t.Label(self.root,text='视频分辨率:')self.l3=t.Label(self.root,text='长度:')self.e1=t.Entry(self.root,width=5)??self.l4=t.Label(self.root,text='width:')self.e2=t.Entry(self.root,width=5)self.tt.place(x=10,y=50)self.b1.place(x=100,y=10)self.l1.place(x=120,y=460)self.e.place(x=200,y=460)self.b2。地点(x=200,y=550)self.b3.place(x=240,y=10)self.b4.place(x=550,y=120)self.b5.place(x=550,y=200)self.b6.place(x=550,y=300)self.l2.place(x=120,y=500)self.l3.place(x=200,y=500)self.l4.place(x=280,y=500)self.e1.place(x=230,y=500)self.e2.place(x=310,y=500)self.b7.place(x=380,y=10)self.b8.place(x=580,y=10)self.root.mainloop()这样我们就可以生成一个带有组件的主界面了,请看:是不是好像功能很丰富?去一一实现它的功能四、软件功能的具体实现过程1)打开图片文件,打开音频文件。两个实现步骤类似,只是改变了签入文件的类型。我们需要使用tkinter中的filedialog模块来实现打开多个文件和打开单个文件的功能。目前,我们只支持两种后缀:png和jpg。#选择主图视频的图片aa=filedialog.askopenfilenames(title='选择所有主图文件',filetypes=[('png','PNG'),('jpg','JPG'),('AllFiles','*')])#提取其后缀为下一步做准备aa=self.tlaa[0]#文件名及其路径#选择音频文件dialog.askopenfilename(title='打开音频文件',filetypes=[('WAV','wav'),('MP3','mp3'),('AllFiles','*')])2)打印视频生成时的log输出到文本框ffmpeg生成视频会有一堆日志,但是这个日志是popen抓不到的,所以我们只好用dos抓包重定向到一个文件,然后我们在把文件的内容读入文本框,所以我们需要这样做:ifos.path.exists('1.txt'):#先判断是否有这个文件try:f=open(os.path.join(self.fg,'1.txt'),'r',encoding='utf-8')#打开文件except:messagebox.showinfo(title='prompt',message='-----主图视频文件生成成功失败----')#prompt最后:self.tt.insert('insert',f.read()+'\n')self.tt.insert('insert','\n')messagebox.showinfo(title='Prompt',message='-----主图视频文件生成成功----\n文件名为:%s.mp4'%self.e.get())f.close()#关闭文件流else:af=open(os.path.join(self.fg,'1.txt'),'w')#创建没有这个文件af.close()#关闭文件流3)使用ffmpeg生成视频这一步要看你的操作ffmpeg生成视频的步骤都掌握了,具体步骤如下:os.popen('ffmpeg-r0.3-t300-i{}/%d.png-i{}-strict-2-fmp4-s{}x{}{}>{}2>&1'.format(ab,self.aa,str(self.e1.get(),str(self.e2.get()),os.path.join(self.fg,self.e.get()+'.mp4'),os.path.join(self.fg,'1.txt')))看到这么长的参数你一定是一头雾水。让我一一解释ffmpeg。你懂的,程序名-r:视频帧-t视频结束事件-i一般接图片或音视频名-strict2表示使用aac音频编码的标准集-fmp4视频输出格式-s视频分辨率最后全部信息输出到文本文件,可以使用管道符号2>&1表示结果先输出到标准流再输出到文本文件。5.预览视频视频生成后,可以看到它的视频播放效果。这里我们还是使用os的popen方法,可以方便的调用系统视频播放器播放:os.popen(self.e.get()+'.mp4')这样就达到了预览视频的效果。4.项目总结通过使用ffmpeg,我们可以做出很多有趣的东西。本文旨在教大家思路,让大家对ffmpeg有更深入的了解,用它来制作更有价值的软件。最后,需要本文代码的朋友可以在后台回复关键字“淘宝主图”获取。有什么问题可以在公众号后台加小编微信,小编帮你解决。