File size: 3,057 Bytes
0835fb6
 
 
 
e7124c9
e129053
e8d7638
cb1ba7f
23d4cfa
 
8bec4e8
 
 
 
 
 
 
0835fb6
 
8bec4e8
de207be
8bec4e8
 
 
 
 
 
0835fb6
c980ffd
47db964
 
 
 
 
 
 
 
8e34222
47db964
 
 
d3dc0d5
47db964
bbc83e3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
afd822e
0835fb6
 
 
 
 
47db964
0835fb6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
from transcribe import transcribe
from moviepy import *
from translate import translate  
from edite_video import video_edit
import gradio as gr
import requests
import os


def extract_audio(input_video_name):
    # Define the input video file and output audio file
    mp3_file = "audio.mp3"
    # Load the video clip
    video_clip = VideoFileClip(input_video_name)

    # Extract the audio from the video clip
    audio_clip = video_clip.audio
    duration = audio_clip.duration
    print(duration)
    # Write the audio to a separate file
    audio_clip.write_audiofile(mp3_file)

    # Close the video and audio clips
    audio_clip.close()
    video_clip.close()

    print("Audio extraction successful!")
    return mp3_file, duration

def download_video(url):

    response = requests.get(url, stream=True)
    response.raise_for_status()
    with open("video.mp4", 'wb') as file:
        for chunk in response.iter_content(chunk_size=8192):
            if chunk:
                file.write(chunk)
        file.close()
    print(f"Downloaded successfully")
    return "video.mp4"

def main(url, clip_type,  progress=gr.Progress()):

    if clip_type == "dub":
        progress(0, desc="Starting")
        video = download_video(url)
        progress(5, desc="downloaded")
        mp3_file, duration = extract_audio(video)
        progress(10, desc="extract audio")
        srt_list = transcribe(mp3_file)
        progress(35, desc="transcribe")
        subtitle_file = translate(srt_list)
        progress(55, desc="translate")
        output_video_file = video_edit(subtitle_file, video, input_audio= "audio.mp3")
        progress(100, desc="finish")
        os.remove(subtitle_file)
    else:
        progress(0, desc="Starting")
        video = download_video(url)
        progress(5, desc="downloaded")
        mp3_file, duration = extract_audio(video)
        progress(10, desc="extract audio")
        srt_list = transcribe(mp3_file)
        progress(35, desc="transcribe")
        subtitle_file = translate(srt_list)
        progress(55, desc="translate")
        output_video_file = video_edit(subtitle_file, video, input_audio= "audio.mp3")
        progress(100, desc="finish")
        os.remove(subtitle_file)
    return output_video_file


with gr.Blocks() as demo:
    gr.Markdown("Start typing below and then click **Run** to see the output.")
    with gr.Column():
        video_file_input = gr.Text(label="Upload Video url")
        clip_type = gr.Dropdown(["auto edit", "default"], label="Clip Type")
        btn = gr.Button("create")
        video_file_output = gr.Video(label="result: ")
        btn.click(fn=main, inputs=[video_file_input, clip_type], outputs=video_file_output)
"""    with gr.Row():
        vid_out = gr.Video()
        srt_file = gr.File()
        btn2 = gr.Button("transcribe")
        gr.on(
            triggers=[btn2.click],
            fn=write_google,
            inputs=out,
        ).then(video_edit, [out, video_path_output, audio_path_output], outputs=[vid_out, srt_file])"""


demo.launch(debug=True)