使用 Python 腳本輕松剪輯/分割大視頻
有時您可能有一個大的視頻文件,并且您希望將該視頻拆分為許多較小的視頻,這些視頻的開始和結束時間由您自己指定。當然,您不想使用視頻編輯器手動完成,因為這將花費很長時間。
例如,當您有一個 10 分鐘的視頻時,您想從中創建 3 個較小的剪輯,例如第一個在 1:20 到 2:20 之間,第二個 在 3:00 到 4:00 之間,最后一個在 7:10 到 8:15 之間。這樣的事情在理論上很難,但對于 Python 及其驚人的工具來說卻不是!
幸運的是,我們可以幫助您在一分鐘內完成任務。
要求
首先,確保在 Windows 或 Linux 發行版上安裝了 Python 3,并確保pip已安裝。然后,運行以下pip命令來安裝所需的 Python 模塊來完成這項工作,即moviepy:
linuxmi@linuxmi:~/www.linuxmi.com$ pip3 install moviepy --user
然后,在當前工作目錄中創建 2 個文件:
- linuxmi_split.py: 稍后將包含 Python 代碼。
- linuxmi_times.txt:其中應該包含您想要的剪輯的開始和結束時間,我們稍后會填寫。
假設您要剪輯的原始視頻長 20 分鐘,并且您想創建3 個較小的視頻,第一個是從開始到 1 分鐘(從 0 到 50 秒),第二個介于1:00 和 1:30,第三個在1:40 和 3:00之間)。然后,您的linuxmi_times.txt文件內容應如下所示:
0-50
60-90
100-180
請注意我們需要如何將格式從1:00轉換為60(始終以秒為單位)。
您可以在該文件中添加任意數量的行。例如,如果你想創建 100 個更小的剪輯,那么你可以做到。只需確保您遵循完全相同的格式:(start_time-end_time中間沒有空格,并且每個空格都在自己的單獨行中)。
Python 腳本
現在,進入重要部分,將以下代碼放入Python 文件linuxmi_split.py:
#!/usr/bin/env python
from moviepy.video.io.ffmpeg_tools import ffmpeg_extract_subclip
# 替換下面的文件名。
required_video_file = "www.linuxmi.com.mp4"
with open("linuxmi_times.txt") as f:
times = f.readlines()
times = [x.strip() for x in times]
for time in times:
starttime = int(time.split("-")[0])
endtime = int(time.split("-")[1])
ffmpeg_extract_subclip(required_video_file, starttime, endtime, targetname=str(times.index(time)+1)+".mp4")
將www.linuxmi.com.mp4您替換為你擁有的視頻文件(必須在同一當前工作目錄中)。如果您嘗試剪輯其他格式,例如.webm或者 .avi,則只需將Python 腳本中.mp4所有出現的替換為您想要的格式。(其中只有兩個;在您輸入的文件名和代碼的最后一行)。
現在,運行 Python 代碼:
linuxmi@linuxmi:~/www.linuxmi.com$ python3 linuxmi_split.pys
輸出:
Moviepy - Running:
>>> "+ " ".join(cmd)
Moviepy - Command successful
Moviepy - Running:
>>> "+ " ".join(cmd)
Moviepy - Command successful
Moviepy - Running:
>>> "+ " ".join(cmd)
Moviepy - Command successful
并看到 3 個視頻文件已創建并正常工作!
結論
Python 是一種令人驚嘆且有效的語言,可以執行任何類型的腳本。節省了工作的大量時間。例如,此任務有助于管理您的社交媒體活動,或者如果您想保留較小的較大視頻片段,你也可能會出于其他目而喜歡。