製作縮時影片(Time-lapse video)通常需要耗費大量剪輯工作,但如果你只是想把一段普通影片快速加速輸出為縮時效果,使用 ffmpeg
搭配 Python 就能輕鬆搞定。
這篇文章將教你如何使用一段簡單的 Python 程式碼,將原始影片加速為 10 倍、20 倍甚至更快的縮時影片,適合應用在 GoPro 運動錄影、監視畫面整理、旅遊 Vlog 加速剪輯等情境。
成果顯示
原縮時影片再次縮時
🔧 所需環境
你需要安裝以下兩項工具:
1️⃣ Python(3.x)
你可以從 Python 官網 下載安裝。
2️⃣ FFmpeg
這是最強大的影片處理工具。下載方式如下:
- 前往 FFmpeg 官方下載頁
- 安裝後確認是否可在命令列執行
ffmpeg -version
🧑💻 完整 Python 程式碼:加速影片產生縮時效果
import subprocess
def create_timelapse_from_video(input_path, output_path, speed=10):
"""
使用 ffmpeg 將影片加速製作縮時影片。
:param input_path: 原始影片路徑
:param output_path: 縮時影片輸出路徑
:param speed: 加速倍率(例如 10 表示變成 10 倍速)
"""
pts_factor = 1 / speed # 計算播放時間比例(PTS)
cmd = [
'ffmpeg', '-y', # -y 表示自動覆蓋輸出檔案
'-i', input_path, # 指定輸入影片
'-filter:v', f'setpts={pts_factor}*PTS', # 套用加速濾鏡
'-an', # 移除聲音
output_path # 指定輸出影片
]
subprocess.run(cmd, check=True)
🚀 使用方式:呼叫函式製作 20 倍速縮時影片
假設你有一段影片 input.mp4
,希望輸出為 output_fast.mp4
並加速 20 倍:
create_timelapse_from_video(
input_path=r"G:\DCIM\100GOPRO\飛機縮時\input.mp4",
output_path=r"G:\DCIM\100GOPRO\飛機縮時\output_fast.mp4",
speed=20
)
🧠 工作原理:setpts
是什麼?
setpts
是 FFmpeg 中的濾鏡,用來調整影片每一幀的顯示時間。舉例來說:
- 正常速度:
setpts=1.0*PTS
- 兩倍速:
setpts=0.5*PTS
- 十倍速:
setpts=0.1*PTS
因為播放時間減少,畫面看起來就變快了。如果你同時要保留聲音,可以另外搭配 atempo
音訊濾鏡(但有倍率限制)。