1. MoviePy(推荐)
功能全面,适合剪辑、特效、合成等高级操作。
bash
pip install moviepy
需额外安装ImageMagick(用于文字特效)。
python
from moviepy.editor import VideoFileClip
clip = VideoFileClip("input.mp4").subclip(10, 20) 10-20秒
clip.write_videofile("output.mp4")
python
cropped_clip = clip.crop(x1=300, y1=100, x2=900, y2=700) 左上角(300,100)到右下角(900,700)
cropped_clip.write_videofile("cropped.mp4")
python
from moviepy.editor import TextClip, AudioFileClip
text = TextClip("Hello World", fontsize=50, color='white').set_duration(5).set_position('center')
audio = AudioFileClip("music.mp3").subclip(0, 5)
final_clip = CompositeVideoClip([clip, text]).set_audio(audio)
final_clip.write_videofile("final.mp4")
python
import os
for file in os.listdir("videos/"):
clip = VideoFileClip(f"videos/{file}").subclip(5, 15)
clip.write_videofile(f"trimmed_{file}")
2. OpenCV
适合逐帧处理、计算机视觉结合场景(如物体检测)。
bash
pip install opencv-python
python
import cv2
cap = cv2.VideoCapture("input.mp4")
fps = cap.get(cv2.CAP_PROP_FPS)
start_frame = int(10 fps) 10秒开始
end_frame = int(20 fps) 20秒结束
逐帧读取并保存
out = cv2.VideoWriter("output.mp4", cv2.VideoWriter_fourcc('mp4v'), fps, (width, height))
cap.set(cv2.CAP_PROP_POS_FRAMES, start_frame)
for _ in range(start_frame, end_frame):
ret, frame = cap.read
out.write(frame)
python
cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2) 绘制矩形框
cv2.putText(frame, "Motion", (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)
? 3. FFmpeg命令行调用
适合高性能剪辑(如直接流复制,无需重编码)。
从[官网下载FFmpeg]并配置环境变量。
python
import subprocess
subprocess.run([
ffmpeg", "-i", "input.mp4",
-ss", "00:00:10", "-to", "00:00:20", 时间段
-c", "copy", "output.mp4" 直接复制流(无损)
])
工具对比与选择建议
| 工具 | 适用场景 | 优势 | 局限 |
||-|-
| MoviePy | 高级剪辑(特效/文字/音频) | API简洁,功能丰富 | 处理速度较慢 |
| OpenCV | 帧级操作/计算机视觉任务 | 精准控制每帧,实时处理 | 代码较复杂,无内置音频 |
| FFmpeg | 快速无损剪辑/大型文件 | 极速处理(流复制) | 需命令行知识 |
实用技巧
python
clip = clip.resize(newsize=(640, 480)) MoviePy调整分辨率
根据需求选择工具:
快速裁剪用FFmpeg;
复杂特效用MoviePy;
实时分析用OpenCV。