video-resize / app.py
soiz1's picture
Update app.py
dab190d verified
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()