GAS17 commited on
Commit
f005c80
verified
1 Parent(s): d514ee2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -18
app.py CHANGED
@@ -12,25 +12,29 @@ def convertir_mov_a_mp4(ruta_mov):
12
  return ruta_mp4
13
 
14
  # Funci贸n para procesar los videos
15
- def process_videos(videos, rotations, song):
16
  clips = []
17
  errores = [] # Para almacenar los videos que no se pudieron procesar
18
 
19
  # Procesar cada video cargado
20
- for idx, video_path in enumerate(videos):
21
  try:
22
  if video_path.endswith('.MOV'):
23
  # Convertir MOV a MP4
24
  video_path = convertir_mov_a_mp4(video_path)
25
  if video_path.endswith(('.mp4')):
26
- clip = VideoFileClip(video_path).subclip(2) # Cortar los primeros 2 segundos y eliminar el audio
27
 
28
- # Aplicar la rotaci贸n seleccionada por el usuario para cada video
29
- if rotations[idx] == "90 grados":
 
 
 
 
30
  clip = clip.rotate(90)
31
- elif rotations[idx] == "180 grados":
32
  clip = clip.rotate(180)
33
- elif rotations[idx] == "270 grados":
34
  clip = clip.rotate(270)
35
 
36
  clips.append(clip)
@@ -41,7 +45,7 @@ def process_videos(videos, rotations, song):
41
 
42
  # Si no se proces贸 ning煤n video, mostrar los errores
43
  if len(clips) == 0:
44
- return None, f"No se pudieron procesar los videos. Errores: {', '.join(errores)}"
45
 
46
  # Mezclar los clips en orden aleatorio
47
  random.shuffle(clips)
@@ -61,26 +65,25 @@ def process_videos(videos, rotations, song):
61
  output_path = "output_video.mp4"
62
  final_clip.write_videofile(output_path, codec="libx264", audio_codec="aac")
63
 
64
- return output_path, None # Devolver el archivo generado para la descarga y None para el error
 
65
  except Exception as e:
66
- return None, f"Error al concatenar los clips: {str(e)}"
67
 
68
  # Crear la interfaz de Gradio
69
- def process_individual_video(video):
70
- return video
71
-
72
- video_inputs = [gr.Video(label=f"Sube el video {i+1}", type="filepath") for i in range(5)]
73
- rotation_inputs = [gr.Radio(["Sin rotaci贸n", "90 grados", "180 grados", "270 grados"], label=f"Rotar video {i+1}") for i in range(5)]
74
-
75
  demo = gr.Interface(
76
  fn=process_videos,
77
- inputs=video_inputs + rotation_inputs + [gr.Audio(label="Sube una canci贸n", type="filepath")],
 
 
 
 
78
  outputs=[
79
  gr.Video(label="Previsualiza tu video procesado"), # Para mostrar el video en un reproductor
80
  gr.File(label="Descargar video procesado") # Para permitir la descarga del video final
81
  ],
82
  title="Mezclar y Unir Videos con Rotaci贸n y M煤sica",
83
- description="Sube varios videos, corta los primeros 2 segundos, ajusta la rotaci贸n de cada uno, y a帽ade m煤sica.",
84
  )
85
 
86
  # Ejecutar la interfaz
 
12
  return ruta_mp4
13
 
14
  # Funci贸n para procesar los videos
15
+ def process_videos(videos, rotate_option, song):
16
  clips = []
17
  errores = [] # Para almacenar los videos que no se pudieron procesar
18
 
19
  # Procesar cada video cargado
20
+ for video_path in videos:
21
  try:
22
  if video_path.endswith('.MOV'):
23
  # Convertir MOV a MP4
24
  video_path = convertir_mov_a_mp4(video_path)
25
  if video_path.endswith(('.mp4')):
26
+ clip = VideoFileClip(video_path).without_audio() # Eliminar el audio original del video
27
 
28
+ # Recortar el video a los primeros 3 segundos
29
+ if clip.duration > 3:
30
+ clip = clip.subclip(0, 3)
31
+
32
+ # Aplicar la rotaci贸n seg煤n la opci贸n seleccionada
33
+ if rotate_option == "90 grados":
34
  clip = clip.rotate(90)
35
+ elif rotate_option == "180 grados":
36
  clip = clip.rotate(180)
37
+ elif rotate_option == "270 grados":
38
  clip = clip.rotate(270)
39
 
40
  clips.append(clip)
 
45
 
46
  # Si no se proces贸 ning煤n video, mostrar los errores
47
  if len(clips) == 0:
48
+ return None, None # Devolver None para ambas salidas si hay errores
49
 
50
  # Mezclar los clips en orden aleatorio
51
  random.shuffle(clips)
 
65
  output_path = "output_video.mp4"
66
  final_clip.write_videofile(output_path, codec="libx264", audio_codec="aac")
67
 
68
+ # Devolver la ruta del video para previsualizaci贸n y descarga
69
+ return output_path, output_path
70
  except Exception as e:
71
+ return None, None # Devolver None en caso de errores
72
 
73
  # Crear la interfaz de Gradio
 
 
 
 
 
 
74
  demo = gr.Interface(
75
  fn=process_videos,
76
+ inputs=[
77
+ gr.Files(label="Sube tus videos (MP4, MOV)", file_count="multiple", type="filepath"),
78
+ gr.Radio(["Sin rotaci贸n", "90 grados", "180 grados", "270 grados"], label="Rotar video"),
79
+ gr.Audio(label="Sube una canci贸n", type="filepath") # A帽adir un campo para subir la canci贸n
80
+ ],
81
  outputs=[
82
  gr.Video(label="Previsualiza tu video procesado"), # Para mostrar el video en un reproductor
83
  gr.File(label="Descargar video procesado") # Para permitir la descarga del video final
84
  ],
85
  title="Mezclar y Unir Videos con Rotaci贸n y M煤sica",
86
+ description="Sube varios videos, rec贸rtalos, m茅zclalos, reemplaza el audio con una canci贸n y aplica una rotaci贸n.",
87
  )
88
 
89
  # Ejecutar la interfaz