Python輕松搞定視頻剪輯重復(fù)性工作問題
01 安裝
對視頻進(jìn)行批量剪輯,需要三個庫,分別是Moviepy
庫和Pathlib
庫,還有Tkinter
庫。
首先我們對這兩個庫進(jìn)行安裝,命令如下:
pip install moviepy pip install pathlib
02 剪輯
上面我們已經(jīng)安裝好所需要的庫了,現(xiàn)在開始來對視頻進(jìn)行剪輯操作。
視頻剪輯:
Moviepy
庫有一個VideoFileClip
函數(shù),將視頻傳入這個函數(shù)后,會返回一個VideoFileClip
實(shí)例對象,該對象可以被subclip()
進(jìn)行剪輯,
代碼如下:
from moviepy.editor import * clip = VideoFileClip('1.mp4').subclip(2,4) # 將剪出的視頻進(jìn)行存儲 clip.write_videofile('2.mp4')
視頻合并:
第一步跟視頻剪輯一樣,需要將合并的視頻傳入VideoFileClip
函數(shù),使其成為一個VideoFileClip
實(shí)例對象。然后調(diào)用Concatenate_videoclips
函數(shù),將所有VideoFileClip
實(shí)例對象的視頻進(jìn)行合并,最后進(jìn)行保存。
代碼如下:
from moviepy.editor import VideoFileClip,concatenate_videoclips clip_1 = VideoFileClip('1.mp4') clip_2 = VideoFileClip('2.mp4') file = concatenate_videoclips([clip_1,clip_2]) file.write_videofile('3.mp4')
視頻轉(zhuǎn)化為gif:
將視頻轉(zhuǎn)化成gif
非常簡單,當(dāng)視頻經(jīng)過VideoFileClip
函數(shù)處理成為VideoFileClip
實(shí)例對象后,即可直接保存為gif
格式。
代碼如下:
from moviepy.editor import * file = VideoFileClip(k) file.write_gif(f'{name}.gif')
批量:
上面只是對單個視頻,或者個別文件夾的視頻進(jìn)行操作,但是我們想要的是批量進(jìn)行剪輯、合并和轉(zhuǎn)化。這里,Pathlib
庫給我們提供了兩個Path
和PurePath
函數(shù),可以很方便的找到電腦中mp4文件,
代碼如下:
files = [] p = Path(src_path) for x in p.iterdir(): if PurePath(x).match('*.mp4'): files.append(x)
之后和上面的代碼進(jìn)行合并,即可實(shí)現(xiàn)批量獲取的功能 。
GUI界面:
程序的功能已經(jīng)全部實(shí)現(xiàn)了,我們現(xiàn)在需要對該程序進(jìn)行界面設(shè)計,這里我們使用的Tkinter
庫來進(jìn)行界面設(shè)計,
代碼如下:
# 創(chuàng)建窗口 root = tk.Tk() # 標(biāo)題 root.title('視頻剪輯') # 窗口大小 root.geometry('450x200') # 窗口的初始位置 root.geometry('+400+200') # 標(biāo)簽的控件 label_1 = tk.Label(root, text='輸入文件地址', font=(r'蘇新詩柳楷簡.ttf', 16), fg='black') label_1.grid() label_2 = tk.Label(root, text='輸入剪輯時間', font=(r'蘇新詩柳楷簡.ttf', 16), fg='black') label_2.grid() # 輸入框 enter_1 = tk.Entry(root, font=(r'蘇新詩柳楷簡.ttf', 16)) enter_2 = tk.Entry(root, font=(r'蘇新詩柳楷簡.ttf', 16)) # 設(shè)置輸入框的位置 enter_1.grid(row=0, column=1) enter_2.grid(row=1, column=1) # 按鈕 button = tk.Button(root, text='開始', font=(r'蘇新詩柳楷簡.ttf', 16), command=jianjivideo) # 設(shè)置按鈕的位置 button.grid(row=1, column=2) # 顯示窗口 root.mainloop()
小結(jié):
本文詳細(xì)介紹了,如何使用Moviepy
庫和Pathlib
庫,還有Tkinter
庫,做一個批量處理視頻的軟件。
有興趣的同學(xué)可以自己復(fù)現(xiàn)一下代碼進(jìn)行學(xué)習(xí)。
到此這篇關(guān)于Python輕松搞定視頻剪輯重復(fù)性工作問題的文章就介紹到這了,更多相關(guān)Python解決視頻剪輯重復(fù)性工作問題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python3獲取文件中url內(nèi)容并下載代碼實(shí)例
這篇文章主要介紹了python3獲取文件中url內(nèi)容并下載代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-12-12python連接sql?server數(shù)據(jù)庫的方法實(shí)戰(zhàn)
當(dāng)我們用Python來編寫網(wǎng)站,必須要能夠通過python操作數(shù)據(jù)庫,下面這篇文章主要給大家介紹了關(guān)于python連接sql?server數(shù)據(jù)庫的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08Python繪圖系統(tǒng)之散點(diǎn)圖和條形圖的實(shí)現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了如何使用Python繪制散點(diǎn)圖和條形圖,文中的示例代碼講解詳細(xì),對我們的學(xué)習(xí)或工作有一定的幫助,感興趣的可以了解一下2023-08-08python實(shí)現(xiàn)最大優(yōu)先隊(duì)列
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)最大優(yōu)先隊(duì)列,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-08-08關(guān)于Python3 類方法、靜態(tài)方法新解
今天小編就為大家分享一篇關(guān)于Python3 類方法、靜態(tài)方法新解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08numpy給array增加維度np.newaxis的實(shí)例
今天小編就為大家分享一篇numpy給array增加維度np.newaxis的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11Python中如何將Tqdm與Asyncio結(jié)合使用呢
這篇文章主要和大家詳細(xì)介紹了在Python中如何將Tqdm與Asyncio結(jié)合使用呢,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-05-05