Spaces:
Runtime error
Runtime error
File size: 2,340 Bytes
c21bd5e 01b5c3c d9a2e36 01b5c3c 21fcda9 01b5c3c 21fcda9 01b5c3c 6eae906 f7b492b df7fc6d 4872a60 6eae906 4872a60 6eae906 01b5c3c c21bd5e e4fa945 6eae906 e4fa945 6eae906 4872a60 6eae906 c21bd5e e4fa945 6eae906 c21bd5e |
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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
import gradio as gr
from modeler import SfM
from moviepy.video.io.ffmpeg_tools import ffmpeg_extract_subclip
from pytube import YouTube
import uuid
uid=uuid.uuid4()
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 trim_clip(clip, start_t, end_t):
clip = Path(f"{uid}-tmp_aud.mp4")
song = AudioSegment.from_file(f"{uid}-tmp_aud.mp4", format="mp4")
start_min = int(start_t.split(":",1)[0])
start_sec = int(start_t.split(":",1)[1])
end_min = int(end_t.split(":",1)[0])
end_sec = int(end_t.split(":",1)[1])
start = ((start_min*60)+start_sec)*1000
end = ((end_min*60)+end_sec)*1000
song_clip = song[start: end]
song_clip.export(f"{uid}-trim.wav", format="wav")
print("New Audio file is created and saved")
return f"{uid}-trim.wav"
def make_model(vid_path):
sfm = SfM('results/', False, 'videos/vid1.mp4', 27)
sfm.structure_from_motion()
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")
out=gr.Files()
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() |