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()
|