溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何使用Python解決視頻剪輯重復(fù)性工作問(wèn)題

發(fā)布時(shí)間:2021-12-21 10:46:16 來(lái)源:億速云 閱讀:245 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下如何使用Python解決視頻剪輯重復(fù)性工作問(wèn)題,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

01 安裝

對(duì)視頻進(jìn)行批量剪輯,需要三個(gè)庫(kù),分別是Moviepy庫(kù)和Pathlib庫(kù),還有Tkinter庫(kù)。

首先我們對(duì)這兩個(gè)庫(kù)進(jìn)行安裝,命令如下:

pip install moviepy
pip install pathlib

02 剪輯

上面我們已經(jīng)安裝好所需要的庫(kù)了,現(xiàn)在開始來(lái)對(duì)視頻進(jìn)行剪輯操作。

視頻剪輯:

Moviepy庫(kù)有一個(gè)VideoFileClip函數(shù),將視頻傳入這個(gè)函數(shù)后,會(huì)返回一個(gè)VideoFileClip實(shí)例對(duì)象,該對(duì)象可以被subclip()進(jìn)行剪輯,

代碼如下:

from moviepy.editor import *
clip = VideoFileClip('1.mp4').subclip(2,4)
# 將剪出的視頻進(jìn)行存儲(chǔ)
clip.write_videofile('2.mp4')

視頻合并:

第一步跟視頻剪輯一樣,需要將合并的視頻傳入VideoFileClip函數(shù),使其成為一個(gè)VideoFileClip實(shí)例對(duì)象。然后調(diào)用Concatenate_videoclips函數(shù),將所有VideoFileClip實(shí)例對(duì)象的視頻進(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非常簡(jiǎn)單,當(dāng)視頻經(jīng)過(guò)VideoFileClip函數(shù)處理成為VideoFileClip實(shí)例對(duì)象后,即可直接保存為gif格式。

代碼如下:

from moviepy.editor import *
file = VideoFileClip(k)
file.write_gif(f'{name}.gif')

批量:

上面只是對(duì)單個(gè)視頻,或者個(gè)別文件夾的視頻進(jìn)行操作,但是我們想要的是批量進(jìn)行剪輯、合并和轉(zhuǎn)化。這里,Pathlib庫(kù)給我們提供了兩個(gè)PathPurePath函數(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)在需要對(duì)該程序進(jìn)行界面設(shè)計(jì),這里我們使用的Tkinter庫(kù)來(lái)進(jìn)行界面設(shè)計(jì),

代碼如下:

# 創(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'蘇新詩(shī)柳楷簡(jiǎn).ttf', 16), fg='black')
label_1.grid()
label_2 = tk.Label(root, text='輸入剪輯時(shí)間', font=(r'蘇新詩(shī)柳楷簡(jiǎn).ttf', 16), fg='black')
label_2.grid()
# 輸入框
enter_1 = tk.Entry(root, font=(r'蘇新詩(shī)柳楷簡(jiǎn).ttf', 16))
enter_2 = tk.Entry(root, font=(r'蘇新詩(shī)柳楷簡(jiǎn).ttf', 16))
# 設(shè)置輸入框的位置
enter_1.grid(row=0, column=1)
enter_2.grid(row=1, column=1)
# 按鈕
button = tk.Button(root, text='開始', font=(r'蘇新詩(shī)柳楷簡(jiǎn).ttf', 16), command=jianjivideo)
# 設(shè)置按鈕的位置
button.grid(row=1, column=2)
# 顯示窗口
root.mainloop()

看完了這篇文章,相信你對(duì)“如何使用Python解決視頻剪輯重復(fù)性工作問(wèn)題”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI