python+ffmpeg視頻轉碼轉格式(二)


python+tkinter制作窗口

首先我既然要去弄這個窗口,當然我們得知道tkinter這個模塊怎么用,下面我總結了一些簡單的用法 【示例】

import tkinter #導入Tkubter模塊 test = tkinter.Tk() test.mainloop()

執行結果:

這樣一個簡單的windows窗口就有了,tkinter模塊用法有很多,這里就不細說了,下面繼續說我們的轉碼。

首先就是先制作一個windwos窗口然后讓我輸入一些信息,下面是我寫的windows窗口。

import tkinter as tk #導入tkinter模塊,並起別名為tk wind=tk.Tk() #建立頂層控件wind wind.geometry("800x400") #設置窗口大小 wind.title("視頻轉碼") #設置窗口標題 title_lab=tk.Label(wind,text="視頻轉碼",font="仿宋 20 bold") #創建窗格標題內容,字體,顏色 title_lab.place(x=350,y=30) #設置標題位置 textlab=tk.Label(wind, text="請輸入視頻地址:", font="仿宋 20 bold", fg="blue", width=20) #創建表單名字,並設置字體、顏色、大小 textlab.place(x=0,y=100) #設置表單名字位置 text_entry=tk.Entry(wind, width=30,font="仿宋 20 bold") #建立輸入的控件entry,也就是表單 text_entry.place(x=300,y=100) #設置控件位置 mzlab=tk.Label(wind, text="請輸入新視頻名稱:", font="仿宋 20 bold",fg="blue", width=18) #創建表單名字,並設置字體、顏色、大小 mzlab.place(x=0,y=200) #設置表單名字位置 mz_entry=tk.Entry(wind, width=30,bg="white",font="仿宋 20 bold") #建立輸入的控件entry,也就是表單 mz_entry.place(x=300,y=200) #設置控件位置 btn=tk.Button(wind,text="提交", font="仿宋 20 bold", fg="blue", width=8) #設置提交按鈕,並設置字體樣式、大小 btn.place(x=350,y=300) #設置按鈕位置 wind.mainloop() #窗口的消息循環

最后效果圖:

顯示寫出來了,后面該弄功能了

ffmpeg轉碼

在寫功能之前首先得學習ffmpeg怎么用,不然的話功能也寫不出來

1. ffmpeg工具軟件

首先我們需要下載ffmpeg工具,下面是下載地址,下載的速度還算比較快,如果有覺的下載慢的,可以私聊我,我把軟件包發給大家或者直接在我的資源里面下載也行 FFmpeg官網地址:  FFmpeg下載地址: 

2. 使用方法

語法:

ffmpeg -i 源文件路徑及文件名稱 轉碼后文件路徑及名稱

示例:

ffmpeg -i D:\test\abc.flv D:\test\abc.mp4

實現就是這么簡單,建議大家現在系統命令行中先測試下這個工具,看看能不能達到大家的要求,大家要是想了解ffmpeg的全部用法可以去官網文檔上面查看

python調用ffmpeg

其實相當簡單,只需要在python導入OS模塊就可以了,下面直接上代碼

import os dir = os.getcwd() #獲取當前文件路徑,因為我這里把ffmpeg工具放到了代碼路徑,所以需要獲取一下當前路徑,這個根據大家實際情況寫 dir2 = '/windows-ffmpeg/x64/ffmpeg.exe' #ffmpeg具體位置 ff = dir+dir #組合路徑 result = eval(repr(ff).replace('\\','/')) #轉換反斜杠為斜杠,因為獲取到的路徑是反斜杠的,需要轉換成斜杠,轉換后會發現是雙斜杠,所以需要下面再轉換下 ff = result.replace('//','/') #雙斜杠轉為但斜杠 cmd = ff +' -i '+'D:\test\abc.flv' +' -c copy ' + 'D:\test\abc.mp4' #寫需要執行的命令 os.system(cmd) #執行系統命令,也就是進行轉碼

OK,執行上面代碼直接進行轉碼,這里需要注意的是路徑位置一定要對哦! 窗口有了,功能有了,那后面就是拼接了

成果

廢話不多說直接上結果:

import tkinter as tk import os wind=tk.Tk() wind.geometry("800x400") wind.title("視頻轉碼") title_lab=tk.Label(wind,text="視頻轉碼",font="仿宋 20 bold") title_lab.place(x=350,y=30) textlab=tk.Label(wind, text="請輸入視頻地址:", font="仿宋 20 bold", fg="blue", width=20) textlab.place(x=0,y=100) text_entry=tk.Entry(wind, width=30,font="仿宋 20 bold") text_entry.place(x=300,y=100) mzlab=tk.Label(wind, text="請輸入新視頻名稱:", font="仿宋 20 bold",fg="blue", width=18) mzlab.place(x=0,y=200) mz_entry=tk.Entry(wind, width=30,bg="white",font="仿宋 20 bold") mz_entry.place(x=300,y=200) #下面是引用了一個執行轉碼的方法,並聲明執行結果 def getTextInput(): lianjie = text_entry.get() mz = mz_entry.get() mz = mz + '.mp4' ff = '/windows-ffmpeg/x64/ffmpeg.exe' ff1 = os.getcwd() ff = ff1+ff result = eval(repr(ff).replace('\\','/')) ff = result.replace('//','/') cmd = ff +' -i '+lianjie+' -c copy '+mz if os.system(cmd) == 0: #判斷執行結果並進行轉碼 test1=tk.Tk() test1.geometry("200x100") test1.title("") title_lab=tk.Label(test1,text="視頻轉碼成功",font="仿宋 20 bold") title_lab.place(x=0,y=0) test1.mainloop() else: test2=tk.Tk() test2.geometry("200x100") test2.title("") title_lab=tk.Label(test2,text="視頻轉碼失敗",font="仿宋 20 bold") title_lab.place(x=0,y=0) test2.mainloop() btn=tk.Button(wind,text="提交", font="仿宋 20 bold", fg="blue", width=8,command=getTextInput) #將信息提交給上面的getTextInput方法 btn.place(x=350,y=300) wind.mainloop()

雙擊python文件的話會出現兩個窗口,一個是用來輸入信息的窗口一個是用來顯示報錯信息的窗口,這個工具有待完善,希望有會python的大神可以完善下

注意:這個工具需要注意的是如果你不想改代碼直接用的話,就直接把ffmpeg工具和你的代碼文件放到一起,還有如果你不寫轉碼后文件路徑默認會保存到存放代碼文件的地方。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM