gnosticdev commited on
Commit
ced4e6e
verified
1 Parent(s): 02e97a3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +12 -11
app.py CHANGED
@@ -23,7 +23,6 @@ MUSIC_BG = "musicafondo.mp3"
23
  FX_SOUND = "fxsound.mp3"
24
  WATERMARK = "watermark.png"
25
  EJEMPLO_VIDEO = "ejemplo.mp4" # Video de ejemplo en el root
26
- OUTPUT_DIR = "output_videos" # Carpeta para videos finales
27
 
28
  # Validar existencia de archivos obligatorios
29
  for file in [INTRO_VIDEO, OUTRO_VIDEO, MUSIC_BG, FX_SOUND, WATERMARK, EJEMPLO_VIDEO]:
@@ -31,9 +30,6 @@ for file in [INTRO_VIDEO, OUTRO_VIDEO, MUSIC_BG, FX_SOUND, WATERMARK, EJEMPLO_VI
31
  logging.error(f"Falta archivo necesario: {file}")
32
  raise FileNotFoundError(f"Falta archivo necesario: {file}")
33
 
34
- # Crear carpeta de salida si no existe
35
- os.makedirs(OUTPUT_DIR, exist_ok=True)
36
-
37
  def eliminar_archivo_tiempo(ruta, delay=1800):
38
  """Elimina un archivo despu茅s de 'delay' segundos (30 minutos por defecto)."""
39
  def eliminar():
@@ -162,16 +158,21 @@ async def procesar_video(video_input, texto_tts, voz_seleccionada, metodo_corte,
162
  # Procesar audio
163
  audio_final = await procesar_audio(texto_tts, voz_seleccionada, duracion_total, duracion_intro, duracion_video_editado)
164
 
165
- # Renderizar video final
166
- video_final = video_final.set_audio(audio_final)
167
- timestamp = int(time.time())
168
- output_path = os.path.join(OUTPUT_DIR, f"video_{timestamp}.mp4")
169
-
170
- video_final.write_videofile(output_path, codec="libx264", fps=24)
 
 
 
 
 
171
 
172
  # Programar eliminaci贸n del video en 30 minutos
173
  eliminar_archivo_tiempo(output_path, delay=1800)
174
- logging.info(f"Video guardado temporalmente en: {output_path}")
175
  return output_path
176
  except Exception as e:
177
  logging.error(f"Error durante el procesamiento: {e}")
 
23
  FX_SOUND = "fxsound.mp3"
24
  WATERMARK = "watermark.png"
25
  EJEMPLO_VIDEO = "ejemplo.mp4" # Video de ejemplo en el root
 
26
 
27
  # Validar existencia de archivos obligatorios
28
  for file in [INTRO_VIDEO, OUTRO_VIDEO, MUSIC_BG, FX_SOUND, WATERMARK, EJEMPLO_VIDEO]:
 
30
  logging.error(f"Falta archivo necesario: {file}")
31
  raise FileNotFoundError(f"Falta archivo necesario: {file}")
32
 
 
 
 
33
  def eliminar_archivo_tiempo(ruta, delay=1800):
34
  """Elimina un archivo despu茅s de 'delay' segundos (30 minutos por defecto)."""
35
  def eliminar():
 
158
  # Procesar audio
159
  audio_final = await procesar_audio(texto_tts, voz_seleccionada, duracion_total, duracion_intro, duracion_video_editado)
160
 
161
+ # Renderizar video final como archivo temporal accesible para Gradio
162
+ with tempfile.NamedTemporaryFile(suffix=".mp4", delete=False) as tmp:
163
+ video_final.set_audio(audio_final).write_videofile(
164
+ tmp.name,
165
+ codec="libx264",
166
+ audio_codec="aac",
167
+ temp_audiofile="temp-audio.m4a",
168
+ remove_temp=True,
169
+ fps=24
170
+ )
171
+ output_path = tmp.name
172
 
173
  # Programar eliminaci贸n del video en 30 minutos
174
  eliminar_archivo_tiempo(output_path, delay=1800)
175
+ logging.info(f"Video temporal listo para Gradio: {output_path}")
176
  return output_path
177
  except Exception as e:
178
  logging.error(f"Error durante el procesamiento: {e}")