Spaces:
Runtime error
Runtime error
File size: 1,259 Bytes
af1695b 37d5502 33c4afa 37d5502 af1695b 37d5502 33c4afa ad45296 37d5502 ad45296 37d5502 ad45296 37d5502 9a470b2 37d5502 ad45296 37d5502 1c02b32 ad45296 1c02b32 37d5502 ad45296 | 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 | 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:
# 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 explícita, compatível com App Builder
iface = gr.Interface(
fn=convert_webm_to_mp4,
inputs=gr.Video(label="WebM Input"),
outputs=gr.Video(label="MP4 Output"),
allow_flagging="never"
)
if __name__ == "__main__":
# Garantir que a primeira função do Space (Index 0) seja essa
iface.launch(server_name="0.0.0.0", server_port=7860, share=True)
|