Teste3 / app.py
AlexandreScriptsMT's picture
Update app.py
3b6bdc0 verified
raw
history blame
1.45 kB
import gradio as gr
import tempfile
import subprocess
from pathlib import Path
def convert_webm_to_mp4(webm_file):
"""
Recebe um arquivo WebM, converte para MP4 e retorna o caminho do MP4.
"""
if webm_file is None:
# Retorna um MP4 dummy se nenhum WebM for enviado
return "https://sample-videos.com/video123/mp4/240/big_buck_bunny_240p_1mb.mp4"
tmp_dir = tempfile.mkdtemp()
mp4_path = Path(tmp_dir) / "output.mp4"
try:
subprocess.run([
"ffmpeg",
"-y",
"-i", webm_file.name,
"-c:v", "libx264",
"-preset", "fast",
"-pix_fmt", "yuv420p",
str(mp4_path)
], check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
except subprocess.CalledProcessError as e:
return f"Error converting video: {e.stderr.decode()}"
return mp4_path
# Interface Gradio
with gr.Blocks() as demo:
gr.Markdown("### WebM to MP4 Converter\nUpload a WebM video and get MP4 back.")
with gr.Row():
# Aqui removemos `type="file"`
webm_input = gr.Video(label="WebM Input")
mp4_output = gr.Video(label="MP4 Output")
convert_btn = gr.Button("Convert")
# Handler Index 0
convert_btn.click(fn=convert_webm_to_mp4, inputs=[webm_input], outputs=[mp4_output])
if __name__ == "__main__":
demo.launch(server_name="0.0.0.0", server_port=7860, share=True)