Spaces:
Runtime error
Runtime error
| 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) | |