gnosticdev commited on
Commit
a5454e2
verified
1 Parent(s): 5accea7

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +10 -24
app.py CHANGED
@@ -2,7 +2,6 @@ import tempfile
2
  import logging
3
  import os
4
  import asyncio
5
- import math # <-- M贸dulo a帽adido
6
  from moviepy.editor import *
7
  import edge_tts
8
  import gradio as gr
@@ -15,11 +14,10 @@ logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(
15
  INTRO_VIDEO = "introvideo.mp4"
16
  OUTRO_VIDEO = "outrovideo.mp4"
17
  MUSIC_BG = "musicafondo.mp3"
18
- FX_GLITCH = "glitch.mp4"
19
  EJEMPLO_VIDEO = "ejemplo.mp4"
20
 
21
  # Validar existencia de archivos
22
- for file in [INTRO_VIDEO, OUTRO_VIDEO, MUSIC_BG, FX_GLITCH, EJEMPLO_VIDEO]:
23
  if not os.path.exists(file):
24
  logging.error(f"Falta archivo necesario: {file}")
25
  raise FileNotFoundError(f"Falta: {file}")
@@ -80,19 +78,6 @@ async def procesar_audio(texto, voz, duracion_video, audio_original):
80
  except Exception as e:
81
  logging.warning(f"Error limpiando {file}: {e}")
82
 
83
- def agregar_glitch(video, intervalo=40):
84
- """Agrega glitch cada X segundos SIN alterar velocidad"""
85
- glitch = VideoFileClip(FX_GLITCH)
86
- duracion_video = video.duration
87
-
88
- # Crear glitches en intervalos
89
- glitches = []
90
- for t in range(intervalo, math.ceil(duracion_video), intervalo):
91
- glitch_clip = glitch.set_start(t).set_pos("center")
92
- glitches.append(glitch_clip)
93
-
94
- return CompositeVideoClip([video] + glitches)
95
-
96
  async def procesar_video(video_input, texto_tts, voz_seleccionada):
97
  try:
98
  # Cargar componentes
@@ -112,16 +97,17 @@ async def procesar_video(video_input, texto_tts, voz_seleccionada):
112
  audio_original
113
  )
114
 
115
- # Agregar glitch al video original
116
- video_con_glitch = agregar_glitch(video_original, intervalo=40)
117
 
118
- # Combinar video con glitch y audio
119
- video_con_glitch = video_con_glitch.set_audio(audio_final)
120
 
121
- # Concatenar intro + video + outro
122
  video_final = concatenate_videoclips(
123
- [intro, video_con_glitch, outro],
124
- method="chain" # Concatenaci贸n secuencial
 
125
  )
126
 
127
  # Renderizar video final
@@ -130,7 +116,7 @@ async def procesar_video(video_input, texto_tts, voz_seleccionada):
130
  tmp.name,
131
  codec="libx264",
132
  audio_codec="aac",
133
- fps=video_original.fps,
134
  threads=4,
135
  verbose=False
136
  )
 
2
  import logging
3
  import os
4
  import asyncio
 
5
  from moviepy.editor import *
6
  import edge_tts
7
  import gradio as gr
 
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
  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
  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
 
116
  tmp.name,
117
  codec="libx264",
118
  audio_codec="aac",
119
+ fps=video_original.fps, # Mantener FPS original
120
  threads=4,
121
  verbose=False
122
  )