vi2 / app.py
GAS17's picture
Update app.py
585f312 verified
raw
history blame
1.84 kB
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()