Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -102,31 +102,49 @@ async def procesar_video(video_input, texto_tts, voz_seleccionada):
|
|
102 |
audios.append(tts_audio.set_start(0).volumex(0.85))
|
103 |
audio_final = CompositeAudioClip(audios).set_duration(duracion_video)
|
104 |
|
105 |
-
#
|
106 |
-
|
107 |
-
current_time = 0
|
108 |
-
while current_time < duracion_video:
|
109 |
-
end_time = current_time + SEGMENT_DURATION
|
110 |
-
if end_time > duracion_video:
|
111 |
-
end_time = duracion_video
|
112 |
-
segment = video_original.subclip(current_time, end_time)
|
113 |
-
segments.append(segment)
|
114 |
-
current_time += SEGMENT_DURATION # Avanzar exactamente 30 segundos
|
115 |
|
116 |
-
#
|
117 |
-
|
118 |
-
for i in range(len(segments)):
|
119 |
-
if i == 0:
|
120 |
-
clips.append(segments[i]) # El primer segmento no necesita transici贸n
|
121 |
-
else:
|
122 |
-
# Crear transici贸n entre el final del clip anterior y el inicio del actual
|
123 |
-
transition = create_slide_transition(clips[-1], segments[i])
|
124 |
-
clips.pop() # Eliminar el 煤ltimo clip agregado
|
125 |
-
clips.append(transition) # Agregar la transici贸n
|
126 |
-
clips.append(segments[i]) # Agregar el nuevo segmento
|
127 |
|
128 |
-
#
|
129 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
130 |
|
131 |
# Agregar intro y outro
|
132 |
intro = VideoFileClip(INTRO_VIDEO, target_resolution=(720, 1280))
|
|
|
102 |
audios.append(tts_audio.set_start(0).volumex(0.85))
|
103 |
audio_final = CompositeAudioClip(audios).set_duration(duracion_video)
|
104 |
|
105 |
+
# CORRECCI脫N: Simplificar la creaci贸n de segmentos y transiciones
|
106 |
+
# Dividir el video en segmentos exactos de 30 segundos y aplicar transiciones solo en esos puntos
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
107 |
|
108 |
+
# Crear un 煤nico clip con todo el contenido, con transiciones solo cada 30 segundos
|
109 |
+
video_final = video_original.copy()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
110 |
|
111 |
+
# Si es necesario, realizar cortes y transiciones cada 30 segundos
|
112 |
+
if duracion_video > SEGMENT_DURATION:
|
113 |
+
clips = []
|
114 |
+
num_segments = int(duracion_video // SEGMENT_DURATION) + (1 if duracion_video % SEGMENT_DURATION > 0 else 0)
|
115 |
+
|
116 |
+
for i in range(num_segments):
|
117 |
+
start_time = i * SEGMENT_DURATION
|
118 |
+
end_time = min(start_time + SEGMENT_DURATION, duracion_video)
|
119 |
+
|
120 |
+
# Obtener segmento actual
|
121 |
+
segment = video_original.subclip(start_time, end_time)
|
122 |
+
|
123 |
+
# Para el primer segmento, solo a帽adirlo al resultado
|
124 |
+
if i == 0:
|
125 |
+
clips.append(segment)
|
126 |
+
else:
|
127 |
+
# Para los dem谩s segmentos, a帽adir transici贸n
|
128 |
+
prev_segment = clips[-1]
|
129 |
+
# Crear transici贸n entre segmentos
|
130 |
+
transition = create_slide_transition(prev_segment, segment)
|
131 |
+
|
132 |
+
# Recortar el segmento anterior para que termine justo antes de la transici贸n
|
133 |
+
prev_end = prev_segment.duration - TRANSITION_DURATION
|
134 |
+
if prev_end > 0:
|
135 |
+
clips[-1] = prev_segment.subclip(0, prev_end)
|
136 |
+
|
137 |
+
# A帽adir la transici贸n
|
138 |
+
clips.append(transition)
|
139 |
+
|
140 |
+
# A帽adir el segmento actual, empezando despu茅s de la transici贸n
|
141 |
+
clips.append(segment)
|
142 |
+
|
143 |
+
# Combinar todos los clips
|
144 |
+
video_final = concatenate_videoclips(clips, method="compose")
|
145 |
+
|
146 |
+
# Establecer el audio final
|
147 |
+
video_final = video_final.set_audio(audio_final)
|
148 |
|
149 |
# Agregar intro y outro
|
150 |
intro = VideoFileClip(INTRO_VIDEO, target_resolution=(720, 1280))
|