pcdoido2 commited on
Commit
5fec933
·
verified ·
1 Parent(s): f8f755c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +15 -15
app.py CHANGED
@@ -160,7 +160,7 @@ if st.button("Gerar Vídeo(s)"):
160
 
161
  filtros_corte = []
162
 
163
- # ✅ Zoom Progressivo
164
  if ativar_zoom_dinamico:
165
  filtros_corte.append(
166
  f"zoompan=z='min(zoom+{zoom_dinamico_velocidade},1.5)':d=1:"
@@ -169,13 +169,13 @@ if st.button("Gerar Vídeo(s)"):
169
  else:
170
  filtros_corte.append("scale=trunc(iw/2)*2:trunc(ih/2)*2")
171
 
172
- # ✅ Pan de câmera (horizontal)
173
  if movimento_camera == "Esquerda para Direita":
174
- filtros_corte.append("crop=w=720:h=1280:x='t*50':y=0")
175
  elif movimento_camera == "Direita para Esquerda":
176
- filtros_corte.append("crop=w=720:h=1280:x='(main_w-w)-t*50':y=0")
177
 
178
- # ✅ Motion Crop Inteligente (simulado)
179
  if ativar_motion_crop:
180
  filtros_corte.append("crop=720:1280:x='abs(mod(t*100\\,main_w-w))':y='(main_h-h)/2'")
181
 
@@ -229,7 +229,7 @@ if st.button("Gerar Vídeo(s)"):
229
 
230
  progresso.progress(35 + n * 5)
231
 
232
- # Filtros principais sobre o vídeo principal
233
  filtros_main = ["scale=720:1280:force_original_aspect_ratio=decrease"]
234
 
235
  if zoom != 1.0:
@@ -256,19 +256,19 @@ if st.button("Gerar Vídeo(s)"):
256
  "colorchannelmixer=.5:0:.5:0:.5:0:.5:0:.5:0:.5"
257
  ]))
258
 
259
- # ✅ Color Space alternado
260
  if ativar_color_space_alt:
261
  filtros_main.append(random.choice([
262
- "colorspace=all=bt601-6-625",
263
- "colorspace=all=bt470bg",
264
- "colorspace=all=smpte240m"
265
  ]))
266
 
267
- # ✅ Frame Blending (minterpolate)
268
  if ativar_frame_blending:
269
- filtros_main.append("minterpolate='mi_mode=mci:mc_mode=aobmc:vsbmc=1'")
270
 
271
- # Garantir múltiplos de 2 no final
272
  filtros_main.append("scale=trunc(iw/2)*2:trunc(ih/2)*2")
273
  # Montar filter_complex
274
  filtro_complex = (
@@ -375,14 +375,14 @@ if st.button("Gerar Vídeo(s)"):
375
  video_final_raw
376
  ], check=True, stderr=subprocess.PIPE)
377
 
378
- # 🧠 Obter duração real do vídeo final (após tudo)
379
  dur_proc = subprocess.run([
380
  "ffprobe", "-v", "error", "-show_entries", "format=duration",
381
  "-of", "default=noprint_wrappers=1:nokey=1", video_final_raw
382
  ], stdout=subprocess.PIPE)
383
  dur_video_real = float(dur_proc.stdout.decode().strip())
384
 
385
- # 🎵 Música sincronizada
386
  if musica:
387
  musica_path = os.path.join(temp_dir, "musica_original.mp3")
388
  with open(musica_path, "wb") as f:
 
160
 
161
  filtros_corte = []
162
 
163
+ # ✅ Zoom Progressivo (correto)
164
  if ativar_zoom_dinamico:
165
  filtros_corte.append(
166
  f"zoompan=z='min(zoom+{zoom_dinamico_velocidade},1.5)':d=1:"
 
169
  else:
170
  filtros_corte.append("scale=trunc(iw/2)*2:trunc(ih/2)*2")
171
 
172
+ # ✅ Movimento de Câmera (com upscale)
173
  if movimento_camera == "Esquerda para Direita":
174
+ filtros_corte.append("scale=740:1320,crop=720:1280:x='t*10':y=0")
175
  elif movimento_camera == "Direita para Esquerda":
176
+ filtros_corte.append("scale=740:1320,crop=720:1280:x='(in_w-w)-t*10':y=0")
177
 
178
+ # ✅ Motion Crop Inteligente
179
  if ativar_motion_crop:
180
  filtros_corte.append("crop=720:1280:x='abs(mod(t*100\\,main_w-w))':y='(main_h-h)/2'")
181
 
 
229
 
230
  progresso.progress(35 + n * 5)
231
 
232
+ # Filtros principais sobre o vídeo de cortes
233
  filtros_main = ["scale=720:1280:force_original_aspect_ratio=decrease"]
234
 
235
  if zoom != 1.0:
 
256
  "colorchannelmixer=.5:0:.5:0:.5:0:.5:0:.5:0:.5"
257
  ]))
258
 
259
+ # ✅ Color Space alternado (corrigido)
260
  if ativar_color_space_alt:
261
  filtros_main.append(random.choice([
262
+ "colorspace=ispace=bt709:ospace=bt601",
263
+ "colorspace=ispace=bt709:ospace=bt470bg",
264
+ "colorspace=ispace=bt709:ospace=smpte240m"
265
  ]))
266
 
267
+ # ✅ Frame Blending (com scale antes)
268
  if ativar_frame_blending:
269
+ filtros_main.append("scale=trunc(iw/2)*2:trunc(ih/2)*2,minterpolate='mi_mode=mci:mc_mode=aobmc:vsbmc=1'")
270
 
271
+ # Final padronização
272
  filtros_main.append("scale=trunc(iw/2)*2:trunc(ih/2)*2")
273
  # Montar filter_complex
274
  filtro_complex = (
 
375
  video_final_raw
376
  ], check=True, stderr=subprocess.PIPE)
377
 
378
+ # Obter duração real do vídeo final (após tudo)
379
  dur_proc = subprocess.run([
380
  "ffprobe", "-v", "error", "-show_entries", "format=duration",
381
  "-of", "default=noprint_wrappers=1:nokey=1", video_final_raw
382
  ], stdout=subprocess.PIPE)
383
  dur_video_real = float(dur_proc.stdout.decode().strip())
384
 
385
+ # Música (sincronizada com duração real)
386
  if musica:
387
  musica_path = os.path.join(temp_dir, "musica_original.mp3")
388
  with open(musica_path, "wb") as f: