利用python+ffmpeg合并B站視頻及格式轉換的實例代碼
利用python+ffmpeg合并B站視頻及格式轉換 B站客戶端下載的視頻一般有兩種格式:早期的多為blv格式(由flv格式轉換而來,音視頻軌道在同一文件下)。
如今的多為m4s格式,音頻軌視頻軌分開 以下為利用ffmpeg簡單對文件處理,使其轉換為大多數播放器能正常播放的mp4格式 前提:已正常安裝ffmpeg
import tkinter as tkfrom tkinter import filedialogimport osimport tkinter.messageboxfrom tkinter import ttkmainGUI=tk.Tk()width = 400height = 400screenwidth = mainGUI.winfo_screenwidth()screenheight = mainGUI.winfo_screenheight()alignstr = ’%dx%d+%d+%d’ % (width, height, (screenwidth-width)/2, (screenheight-height)/2)mainGUI.geometry(alignstr)mainGUI.title('轉碼系統')def browseDialog(): root = tk.Tk() root.withdraw() return filedialog.askopenfilename()def browseDialogTo(): path=browseDialog() var.set(path)def browseDialogTo2(): path=browseDialog() var2.set(path)def browseDialogTof2(): path=browseDialog() varf2.set(path)def browseDialogTof3(): path=browseDialog() varf3.set(path)def browseDialogTof4(): path=browseDialog() varf4.set(path)tab = ttk.Notebook(mainGUI)frame0 = tk.Frame(tab)tab6 = tab.add(frame0, text = 'm4s轉mp4')frame1 = tk.Frame(tab)tab1 = tab.add(frame1, text = 'blv,flv轉mp4')frame2 = tk.Frame(tab)tab2 = tab.add(frame2, text = '提取音頻')frame3 = tk.Frame(tab)tab3 = tab.add(frame3, text = '音頻截取')tab.pack(expand = True, fill = tk.BOTH)#----------------------------------------------------------------------------------------------#l1=tk.Label(frame0,text = '請選擇視頻文件',font=(’Arial’, 15),width=100,height=2)l1.pack()var=tk.StringVar()var.set('')e1 = tk.Entry(frame0,textvariable = var, show = None)#顯示成明文形式e1.pack()b1=tk.Button(frame0, text=’瀏覽’, width=6, height=2, command=browseDialogTo)b1.pack()l2=tk.Label(frame0,text = '請選擇音頻文件',font=(’Arial’, 15),width=100,height=2)l2.pack()var2=tk.StringVar()var2.set('')e2 = tk.Entry(frame0,textvariable = var2, show = None)#顯示成明文形式e2.pack()b2=tk.Button(frame0, text=’瀏覽’, width=6, height=2, command=browseDialogTo2)b2.pack()l3=tk.Label(frame0,text = '請輸入新文件命名',font=(’Arial’, 15),width=100,height=2)l3.pack()e3 = tk.Entry(frame0, show = None)#顯示成明文形式e3.pack()def myCMD(path1,path2,name): ver=os.popen('FFmpeg -i '+path1+' -i '+path2+' -codec copy '+'C:Usersrenboyu010214DesktopoutputFile'+name+'.mp4') ver.close()def myCMDmain(): path1=e1.get() path2=e2.get() name=e3.get() myCMD(path1,path2,name) tkinter.messagebox.showinfo(title=’success’, message='轉碼成功!')b4=tk.Button(frame0, text=’確定’, width=6, height=2, command=myCMDmain)b4.pack()#----------------------------------------------------------------------------------------------#lf2=tk.Label(frame1,text = '請選擇blv或flv文件',font=(’Arial’, 15),width=100,height=2)lf2.pack()varf2=tk.StringVar()varf2.set('')ef2 = tk.Entry(frame1,textvariable = varf2, show = None)#顯示成明文形式ef2.pack()bf2=tk.Button(frame1, text=’瀏覽’, width=6, height=2, command=browseDialogTof2)bf2.pack()lf2_1=tk.Label(frame1,text = '請輸入新文件命名',font=(’Arial’, 15),width=100,height=2)lf2_1.pack()ef2_1 = tk.Entry(frame1, show = None)#顯示成明文形式ef2_1.pack()def myCMDmainf2(): path1=ef2.get() name=ef2_1.get() ver=os.popen('ffmpeg -i '+path1+' '+'C:Usersrenboyu010214DesktopoutputFile'+name+'.mp4') ver.close() tkinter.messagebox.showinfo(title=’success’, message='轉碼成功!')bf2=tk.Button(frame1, text=’確定’, width=6, height=2, command=myCMDmainf2)bf2.pack()#----------------------------------------------------------------------------------------------#lf3=tk.Label(frame2,text = '請選擇視頻文件',font=(’Arial’, 15),width=100,height=2)lf3.pack()varf3=tk.StringVar()varf3.set('')ef3 = tk.Entry(frame2,textvariable = varf3, show = None)#顯示成明文形式ef3.pack()bf3=tk.Button(frame2, text=’瀏覽’, width=6, height=2, command=browseDialogTof3)######bf3.pack()lf3_1=tk.Label(frame2,text = '請輸入新文件命名',font=(’Arial’, 15),width=100,height=2)lf3_1.pack()ef3_1 = tk.Entry(frame2, show = None)#顯示成明文形式ef3_1.pack()def myCMDmainf3(): path1=ef3.get() name=ef3_1.get() ver=os.popen('ffmpeg -i '+path1+' -acodec copy -vn '+'C:Usersrenboyu010214DesktopoutputFile'+name+'.aac') #ffmpeg -i F:video冠世一戰.mp4 -acodec copy -vn F:videooutput.aac ver.close() tkinter.messagebox.showinfo(title=’success’, message='音頻提取成功!')bf3=tk.Button(frame2, text=’確定’, width=6, height=2, command=myCMDmainf3)bf3.pack()#----------------------------------------------------------------------------------------------##----------------------------------------------------------------------------------------------#lf4=tk.Label(frame3,text = '請選擇音頻/視頻文件',font=(’Arial’, 15),width=100,height=2)lf4.pack()varf4=tk.StringVar()varf4.set('')ef4 = tk.Entry(frame3,textvariable = varf4, show = None)#顯示成明文形式ef4.pack()bf4=tk.Button(frame3, text=’瀏覽’, width=6, height=2, command=browseDialogTof4)######bf4.pack()lf4_1=tk.Label(frame3,text = '請輸入新文件命名(音頻后綴.mp3 視頻后綴.mp4)',font=(’Arial’, 15),width=100,height=2)lf4_1.pack()ef4_1 = tk.Entry(frame3, show = None)#顯示成明文形式ef4_1.pack()lf4_2=tk.Label(frame3,text = '請輸入開始時間(xx:xx:xx)',font=(’Arial’, 15),width=100,height=2)lf4_2.pack()ef4_2 = tk.Entry(frame3, show = None)#顯示成明文形式ef4_2.pack()lf4_3=tk.Label(frame3,text = '請輸入截取時間(xx:xx:xx)',font=(’Arial’, 15),width=100,height=2)lf4_3.pack()ef4_3 = tk.Entry(frame3, show = None)#顯示成明文形式ef4_3.pack()def myCMDmainf4(): path1=ef4.get() name=ef4_1.get() startTime=ef4_2.get() time=ef4_3.get() ver=os.popen('ffmpeg -ss '+startTime+' -t '+time+' -i '+path1+' -vcodec copy -acodec copy '+'C:Usersrenboyu010214DesktopoutputFile'+name) #ffmpeg -ss 00:00:00 -t 00:00:05 -i input.mp4 -vcodec copy -acodec copy output.mp4 ver.close() tkinter.messagebox.showinfo(title=’success’, message='音頻/視頻截取成功!')bf4=tk.Button(frame3, text=’確定’, width=6, height=2, command=myCMDmainf4)bf4.pack()#----------------------------------------------------------------------------------------------#mainGUI.mainloop()
到此這篇關于利用python+ffmpeg合并B站視頻及格式轉換的實例代碼的文章就介紹到這了,更多相關python+ffmpeg合并B站視頻及格式轉換內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!
相關文章:
1. Java 3D的動畫展示(Part1-使用JMF)2. 解決docker與vmware的沖突問題3. IntelliJ Idea 2020.1 正式發布,官方支持中文(必看)4. Django ORM實現按天獲取數據去重求和例子5. Python基于jieba, wordcloud庫生成中文詞云6. Django中的AutoField字段使用7. IntelliJ IDEA設置自動提示功能快捷鍵的方法8. asp.net core應用docke部署到centos7的全過程9. java使用FFmpeg合成視頻和音頻并獲取視頻中的音頻等操作(實例代碼詳解)10. PHP設計模式之 策略模式Strategy詳解【對象行為型】
