import gradio as gr from moviepy.editor import VideoFileClip, concatenate_videoclips import random # Función para procesar los videos def process_videos(videos, rotate_option): clips = [] # Cargar y recortar cada video a los primeros 3 segundos for video_path in videos: clip = VideoFileClip(video_path) # Recortar el video a los primeros 3 segundos if clip.duration > 3: clip = clip.subclip(0, 3) # Aplicar la rotación seleccionada if rotate_option == "90 grados": clip = clip.rotate(90) elif rotate_option == "180 grados": clip = clip.rotate(180) elif rotate_option == "270 grados": clip = clip.rotate(270) clips.append(clip) # Mezclar los clips en orden aleatorio random.shuffle(clips) # Unir los clips mezclados final_clip = concatenate_videoclips(clips) # Guardar el video unido en un archivo output_path = "output_video.mp4" final_clip.write_videofile(output_path, codec="libx264") # Devolver la ruta del archivo final return output_path # Crear la interfaz de Gradio iface = gr.Interface( fn=process_videos, inputs=[ gr.Files(label="Sube tus videos (MP4)", file_count="multiple", type="filepath"), # Cambiamos a "filepath" gr.Radio(["Sin rotación", "90 grados", "180 grados", "270 grados"], label="Rotar video") ], outputs=gr.File(label="Video unido de salida"), title="Mezclar y Unir Videos con Rotación", description="Sube varios videos en formato 9:16. El sistema cortará los primeros 3 segundos de cada video, los mezclará en un orden aleatorio, aplicará la rotación seleccionada y generará un nuevo archivo de video." ) # Ejecutar la interfaz iface.launch()