File size: 1,485 Bytes
ccdd093
 
 
dab190d
 
ccdd093
dab190d
 
ccdd093
dab190d
 
 
ccdd093
 
 
dab190d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ccdd093
dab190d
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
import gradio as gr
from moviepy.editor import VideoFileClip

# アップロードされた動画の解像度を表示する関数
def show_original_resolution(video_path):
    clip = VideoFileClip(video_path)
    width, height = clip.size
    return f"元の解像度: {width} x {height}"

# リサイズ処理の関数(解像度は取得済みなので返さない)
def resize_video(video_path, width, height):
    clip = VideoFileClip(video_path)
    resized_clip = clip.resize(newsize=(width, height))
    output_path = "/tmp/resized_video.mp4"
    resized_clip.write_videofile(output_path, codec="libx264", audio_codec="aac")
    return output_path

# Gradio Blocksを使ってインターフェースを組み立て
with gr.Blocks() as demo:
    gr.Markdown("### 動画リサイズツール")

    with gr.Row():
        video_input = gr.File(label="アップロードする動画", type="filepath")
        resolution_display = gr.Textbox(label="元の解像度", interactive=False)

    video_input.change(fn=show_original_resolution, inputs=video_input, outputs=resolution_display)

    width_input = gr.Number(label="リサイズ後の幅", value=640)
    height_input = gr.Number(label="リサイズ後の高さ", value=480)

    resize_button = gr.Button("リサイズ実行")
    output_video = gr.File(label="リサイズされた動画")

    resize_button.click(fn=resize_video, inputs=[video_input, width_input, height_input], outputs=output_video)

demo.launch()