MoviePy简介
MoviePy是一个用于视频编辑的Python模块,它可被用于一些基本操作(如剪切、拼接、插入标题)、视频合成(即非线性编辑)、视频处理和创建高级特效。它可对大多数常见视频格式进行读写,包括GIF。
简单使用
安装moviepy库
pip install moviepy
简单操作:
from moviepy.editor import *
video = VideoFileClip("esword.mp4")
clip1 = video.subclip(10,20)#第10秒到第20秒的片段
clip2 = video.subclip(30,35)#第10秒到第20秒的片段
final_clip = concatenate_videoclips([clip1,clip2])
final_clip.write_videofile("new_esword.mp4")#写入10-20片段和30-35s片段的新视频
批量视频分段(根据时间)
import glob
from shutil import copy
from moviepy.editor import *
def subclips_from_dir(dir_path,new_path,clip_duration=3):
for all_file_name in glob.glob(dir_path):
file_name_array = all_file_name.split('/')
sub_dir = file_name_array[-2]
video = VideoFileClip(all_file_name)
file_name = file_name_array[-1]
video_duration = int(video.duration)
if not os.path.exists(os.path.join(new_path, sub_dir)): os.makedirs(os.path.join(new_path, sub_dir))
if video_duration<3:
copy(all_file_name,os.path.join(new_path,sub_dir,file_name))
else:
for i in range(0,video_duration,clip_duration):
new_file_name = os.path.join(new_path,sub_dir,str(i)+'_'+file_name)
sub_video = video.subclip(i, min(i + clip_duration, video_duration))
sub_video.write_videofile(new_file_name)
if __name__ == "__main__":
dir = "/home/esword/datasets/esword/*/*"
new_dir = "/home/esword/datasets/esword_3"
subclips_from_dir(dir,new_dir,3) #3秒一个视频分段
进阶应用
MoviePy最强大的功能当然还是各种剪辑
上述脚本只是懒得调ffmpeg而已😥😥
中文手册:
http://doc.moviepy.com.cn/
版权声明:本文为Ejzq1原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。