Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| from modeler import SfM | |
| from moviepy.video.io.ffmpeg_tools import ffmpeg_extract_subclip | |
| from pytube import YouTube | |
| import uuid | |
| import os | |
| uid=uuid.uuid4() | |
| if not os.path.exists(f'{uid}'): | |
| os.makedirs(f'{uid}') | |
| def load_video_yt(vid): | |
| yt = YouTube(vid) | |
| vid = yt.streams.filter(progressive=True, file_extension='mp4').order_by('resolution').desc().first().download(filename=f"{uid}-tmp.mp4") | |
| #vid_aud = yt.streams.filter(only_audio=True)[0].download(filename=f"{uid}-tmp_aud.mp4") | |
| print (f'Video Length: {yt.length}') | |
| return f"{uid}-tmp.mp4" | |
| def trim_vid(vid,start_time,end_time): | |
| start_hr=int(start_time.split(":",2)[0])*360 | |
| start_min=int(start_time.split(":",2)[1])*60 | |
| start_sec=int(start_time.split(":",2)[2]) | |
| end_hr=int(end_time.split(":",2)[0])*360 | |
| end_min=int(end_time.split(":",2)[1])*60 | |
| end_sec=int(end_time.split(":",2)[2]) | |
| start=start_hr+start_min+start_sec | |
| end=end_hr+end_min+end_sec | |
| vid = f"{uid}-tmp.mp4" | |
| ffmpeg_extract_subclip(vid, start, end, targetname=f"{uid}-clip.mp4") | |
| return f"{uid}-clip.mp4" | |
| def make_model(vid_path): | |
| sfm = SfM(f'{uid}/', False, f'{uid}-clip.mp4', 27) | |
| sfm.find_structure_from_motion() | |
| return f'{uid}/' | |
| with gr.Blocks() as app: | |
| with gr.Row(): | |
| inp_url=gr.Textbox(label="URL") | |
| load_yt_btn=gr.Button() | |
| with gr.Row(): | |
| pre_vid = gr.Video(type='filepath') | |
| clip_vid=gr.Video() | |
| with gr.Row(): | |
| start_time = gr.Textbox(label = "Start", value = "0:00:00", placeholder = "0:00:23") | |
| end_time = gr.Textbox(label = "End", value = "0:00:05", placeholder = "0:00:54") | |
| trim_clip_btn = gr.Button("Trim Clip") | |
| make_btn=gr.Button() | |
| out=gr.Files() | |
| make_btn.click(make_model,clip_vid,out) | |
| load_yt_btn.click(load_video_yt, inp_url, [pre_vid]) | |
| trim_clip_btn.click(trim_vid,[pre_vid,start_time,end_time],clip_vid) | |
| app.launch() |