gnosticdev commited on
Commit
5662f62
·
verified ·
1 Parent(s): a5454e2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -33
app.py CHANGED
@@ -14,10 +14,11 @@ logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(
14
  INTRO_VIDEO = "introvideo.mp4"
15
  OUTRO_VIDEO = "outrovideo.mp4"
16
  MUSIC_BG = "musicafondo.mp3"
 
17
  EJEMPLO_VIDEO = "ejemplo.mp4"
18
 
19
  # Validar existencia de archivos
20
- for file in [INTRO_VIDEO, OUTRO_VIDEO, MUSIC_BG, EJEMPLO_VIDEO]:
21
  if not os.path.exists(file):
22
  logging.error(f"Falta archivo necesario: {file}")
23
  raise FileNotFoundError(f"Falta: {file}")
@@ -78,6 +79,19 @@ async def procesar_audio(texto, voz, duracion_video, audio_original):
78
  except Exception as e:
79
  logging.warning(f"Error limpiando {file}: {e}")
80
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
  async def procesar_video(video_input, texto_tts, voz_seleccionada):
82
  try:
83
  # Cargar componentes
@@ -97,17 +111,16 @@ async def procesar_video(video_input, texto_tts, voz_seleccionada):
97
  audio_original
98
  )
99
 
100
- # Asegurar que el video original mantenga su velocidad
101
- video_original = video_original.fx(vfx.speedx, 1.0) # Velocidad normal
102
 
103
- # Combinar video con audio
104
- video_con_audio = video_original.set_audio(audio_final)
105
 
106
  # Concatenar intro + video + outro SIN alteraciones
107
  video_final = concatenate_videoclips(
108
- [intro, video_con_audio, outro],
109
- method="compose", # Evitar problemas de grid
110
- padding=0 # Sin espacio entre clips
111
  )
112
 
113
  # Renderizar video final
@@ -135,28 +148,4 @@ with gr.Blocks() as demo:
135
  texto_tts = gr.Textbox(
136
  label="Texto para TTS",
137
  lines=3,
138
- placeholder="Escribe aquí tu texto..."
139
- )
140
- voz_seleccionada = gr.Dropdown(
141
- label="Voz",
142
- choices=["es-ES-AlvaroNeural", "es-MX-BeatrizNeural"],
143
- value="es-ES-AlvaroNeural"
144
- )
145
- procesar_btn = gr.Button("Generar Video")
146
- video_output = gr.Video(label="Video Procesado")
147
-
148
- with gr.Accordion("Ejemplos de Uso", open=False):
149
- gr.Examples(
150
- examples=[[EJEMPLO_VIDEO, "¡Hola! Esto es una prueba. Suscríbete al canal."]],
151
- inputs=[video_input, texto_tts],
152
- label="Ejemplos"
153
- )
154
-
155
- procesar_btn.click(
156
- procesar_video,
157
- inputs=[video_input, texto_tts, voz_seleccionada],
158
- outputs=video_output
159
- )
160
-
161
- if __name__ == "__main__":
162
- demo.queue().launch()
 
14
  INTRO_VIDEO = "introvideo.mp4"
15
  OUTRO_VIDEO = "outrovideo.mp4"
16
  MUSIC_BG = "musicafondo.mp3"
17
+ FX_GLITCH = "glitch.mp4"
18
  EJEMPLO_VIDEO = "ejemplo.mp4"
19
 
20
  # Validar existencia de archivos
21
+ for file in [INTRO_VIDEO, OUTRO_VIDEO, MUSIC_BG, FX_GLITCH, EJEMPLO_VIDEO]:
22
  if not os.path.exists(file):
23
  logging.error(f"Falta archivo necesario: {file}")
24
  raise FileNotFoundError(f"Falta: {file}")
 
79
  except Exception as e:
80
  logging.warning(f"Error limpiando {file}: {e}")
81
 
82
+ def agregar_glitch(video, intervalo=40):
83
+ """Agrega glitch cada X segundos SIN afectar el video principal"""
84
+ glitch = VideoFileClip(FX_GLITCH)
85
+ duracion_video = video.duration
86
+
87
+ glitches = []
88
+ for t in range(intervalo, math.ceil(duracion_video), intervalo):
89
+ glitch_clip = glitch.set_start(t).set_pos("center")
90
+ glitches.append(glitch_clip)
91
+
92
+ # Superponer glitches al video original (sin alterarlo)
93
+ return CompositeVideoClip([video] + glitches)
94
+
95
  async def procesar_video(video_input, texto_tts, voz_seleccionada):
96
  try:
97
  # Cargar componentes
 
111
  audio_original
112
  )
113
 
114
+ # Agregar glitch al video original
115
+ video_con_glitch = agregar_glitch(video_original, intervalo=40)
116
 
117
+ # Combinar video con glitch y audio
118
+ video_con_glitch = video_con_glitch.set_audio(audio_final)
119
 
120
  # Concatenar intro + video + outro SIN alteraciones
121
  video_final = concatenate_videoclips(
122
+ [intro, video_con_glitch, outro],
123
+ method="compose" # Usar "compose" para evitar problemas de grid
 
124
  )
125
 
126
  # Renderizar video final
 
148
  texto_tts = gr.Textbox(
149
  label="Texto para TTS",
150
  lines=3,
151
+ placeholder="Escribe aquí tu