import cv2 from scenedetect import detect, ContentDetector from moviepy.editor import VideoFileClip import sys # 检测视频中的场景 scene_list = detect(sys.argv[1], ContentDetector()) frame_list = [] for i, scene in enumerate(scene_list): if i==0: print(scene[0].get_frames(),scene[1].get_frames()+2) frame_list.append([scene[0].get_frames(),scene[1].get_frames()+2]) elif i==len(scene_list)-1: print(scene[0].get_frames()+2,scene[1].get_frames()) frame_list.append([scene[0].get_frames()+2,scene[1].get_frames()]) else: print(scene[0].get_frames()+2,scene[1].get_frames()+2) frame_list.append([scene[0].get_frames()+2,scene[1].get_frames()+2]) # 打开原始视频 video_clip = VideoFileClip(sys.argv[1]) # 遍历场景并保存为新的 MP4 文件 for i, (start_frame, end_frame) in enumerate(scene_list): # 将帧数转换为秒 start_time = start_frame.get_seconds() # 使用 get_seconds() 转换为秒 end_time = end_frame.get_seconds() # 使用 get_seconds() 转换为秒 # 切割视频 scene_clip = video_clip.subclip(start_time, end_time) # 设置输出文件名 output_filename = f"oringal_{i+1}.mp4" # 保存场景为 MP4 文件 scene_clip.write_videofile(output_filename, codec="libx264", fps=video_clip.fps) print(f"Scene {i+1} has been saved as {output_filename}") # 关闭视频文件 video_clip.close() # 打开原始视频 video_clip = VideoFileClip(sys.argv[1]) fps =video_clip.fps # 遍历场景并保存为新的 MP4 文件 for index,item in enumerate(frame_list): # 将帧数转换为秒 start_time = item[0]/fps end_time = item[1]/fps # 切割视频 scene_clip = video_clip.subclip(start_time, end_time) # 设置输出文件名 output_filename = f"modified_{index+1}.mp4" # 保存场景为 MP4 文件 scene_clip.write_videofile(output_filename, codec="libx264", fps=video_clip.fps) print(f"Scene {i+1} has been saved as {output_filename}") # 关闭视频文件 video_clip.close()