File size: 1,601 Bytes
8d2001a 8ce7fdb c0ff040 8ce7fdb b4e1ca3 8d2001a 4a23dca bd9db3e 85cb9b5 8d2001a 8ce7fdb 8d2001a 8ce7fdb 86f6646 95eab87 bd9db3e 6fc3067 b74384a 95eab87 f50a5fd 2938c1f b74384a bd9db3e f50a5fd 6fc3067 d4c877d f50a5fd d4c877d 8d2001a 2abe17e 8d2001a d4c877d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
import gradio as gr
from scenedetect import open_video, SceneManager
from scenedetect.detectors import ContentDetector
#from scenedetect.video_splitter import split_video_ffmpeg
from moviepy.video.io.ffmpeg_tools import ffmpeg_extract_subclip
outputs = []
def find_scenes(video_path, threshold=27.0):
# Open our video, create a scene manager, and add a detector.
video = open_video(video_path)
scene_manager = SceneManager()
scene_manager.add_detector(
ContentDetector(threshold=threshold))
scene_manager.detect_scenes(video, show_progress=True)
scene_list = scene_manager.get_scene_list()
outputs.append("json")
#print(scene_list)
shots = []
for i, scene in enumerate(scene_list):
shot_in = scene[0].get_frames() / scene[0].get_framerate()
shot_out = (scene[1].get_frames() - 1) / scene[0].get_framerate()
target_name = str(i)+"_cut.mp4"
ffmpeg_extract_subclip(video_path, shot_in, shot_out, targetname=target_name)
shots.append(target_name)
outputs.append("video")
#shot_in = scene_list[1][0].get_frames() / scene_list[1][0].get_framerate()
#shot_out = (scene_list[1][1].get_frames() - 1) / scene_list[1][0].get_framerate()
#print(shot_in, shot_out)
print(scene_list, *tuple(shots), sep=', ')
print(outputs)
#ffmpeg_extract_subclip(video_path, shot_in, shot_out, targetname="cut.mp4")
return scene_list, tuple(shots)
video_input=gr.Video(source="upload", format="mp4");
gr.Interface(fn=find_scenes, inputs=video_input, outputs=outputs).launch() |