EuuIia commited on
Commit
5f2ca24
·
verified ·
1 Parent(s): 5cd5809

Update api/ltx_server.py

Browse files
Files changed (1) hide show
  1. api/ltx_server.py +32 -25
api/ltx_server.py CHANGED
@@ -460,63 +460,70 @@ class VideoService:
460
 
461
  poda = crossfade_frames
462
  total_partes = len(video_paths)
463
- video_anterior_fade_fim = None
 
464
  nova_lista = []
465
 
466
  print(f"[DEBUG] Iniciando pipeline com {total_partes} vídeos e {poda} frames de crossfade")
467
 
468
  for i in range(total_partes):
469
  base = os.path.splitext(os.path.basename(video_paths[i]))[0]
470
- video_clone = os.path.join(pasta, f"{base}_clone_{i}.mp4")
471
- shutil.copy(video_paths[i], video_clone)
472
-
473
  # --- PODA ---
474
  video_podado = os.path.join(pasta, f"{base}_podado_{i}.mp4")
475
 
476
- total_frames = self._get_total_frames(video_clone)
477
- start_frame = total_frames - poda
478
-
479
- video_podado = os.path.join(pasta, f"{base}_podado_{i}.mp4")
480
-
 
 
 
 
 
 
 
 
481
  cmd_fim = (
482
- f'ffmpeg -y -hide_banner -loglevel error -i "{video_clone}" '
483
- f'-vf "trim=start_frame={start_frame}:end_frame={total_frames},setpts=PTS-STARTPTS" '
484
  f'-an "{video_podado}"'
485
  )
486
  subprocess.run(cmd_fim, shell=True, check=True)
487
  nova_lista.append(video_podado)
488
-
489
- # --- FADE_INI ---
490
- video_fade_ini = None
491
  if i > 0:
492
  video_fade_ini = os.path.join(pasta, f"{base}_fade_ini_{i}.mp4")
493
  cmd_ini = (
494
- f'ffmpeg -y -hide_banner -loglevel error -i "{video_clone}" '
495
  f'-vf "trim=end_frame={poda},setpts=PTS-STARTPTS" -an "{video_fade_ini}"'
496
  )
497
  subprocess.run(cmd_ini, shell=True, check=True)
498
 
499
  # --- TRANSIÇÃO ---
500
- if video_anterior_fade_fim and video_fade_ini:
501
- transicao = os.path.join(pasta, f"transicao_{i-1}_{i}.mp4")
502
  cmd_blend = (
503
  f'ffmpeg -y -hide_banner -loglevel error '
504
- f'-i "{video_anterior_fade_fim}" -i "{video_fade_ini}" '
505
  f'-filter_complex "[0:v][1:v]blend=all_expr=\'A*(1-T/{poda})+B*(T/{poda})\',format=yuv420p" '
506
- f'-frames:v {poda} "{transicao}"'
507
  )
508
  subprocess.run(cmd_blend, shell=True, check=True)
509
- nova_lista.append(transicao)
510
 
511
  # --- FADE_FIM ---
512
  if i < total_partes - 1:
513
  video_fade_fim = os.path.join(pasta, f"{base}_fade_fim_{i}.mp4")
514
-
515
- total_frames = self._get_total_frames(video_clone)
516
- start_frame = total_frames - poda
517
- cmd_fim = f'ffmpeg -y -hide_banner -loglevel error -i "{video_clone}" -vf "trim=start_frame={start_frame},setpts=PTS-STARTPTS" -an "{video_fade_fim}"'
 
518
  subprocess.run(cmd_fim, shell=True, check=True)
519
- video_anterior_fade_fim = video_fade_fim
520
 
521
  print(f"[DEBUG] Nova lista finalizada com {len(nova_lista)} partes.")
522
  print(f"[DEBUG] {nova_lista}")
 
460
 
461
  poda = crossfade_frames
462
  total_partes = len(video_paths)
463
+ video_fade_fim = None
464
+ video_fade_ini = None
465
  nova_lista = []
466
 
467
  print(f"[DEBUG] Iniciando pipeline com {total_partes} vídeos e {poda} frames de crossfade")
468
 
469
  for i in range(total_partes):
470
  base = os.path.splitext(os.path.basename(video_paths[i]))[0]
471
+
 
 
472
  # --- PODA ---
473
  video_podado = os.path.join(pasta, f"{base}_podado_{i}.mp4")
474
 
475
+
476
+ if i<total_partes-1:
477
+ end_frame = self._get_total_frames(base) - poda
478
+ else:
479
+ print(f"[DEBUG] ultima iteracao")
480
+ end_frame = self._get_total_frames(base)
481
+
482
+ if i>0:
483
+ start_frame = poda
484
+ else:
485
+ start_frame = 0
486
+ print(f"[DEBUG] primeira iteracao")
487
+
488
  cmd_fim = (
489
+ f'ffmpeg -y -hide_banner -loglevel error -i "{base}" '
490
+ f'-vf "trim=start_frame={start_frame}:end_frame={end_frame},setpts=PTS-STARTPTS" '
491
  f'-an "{video_podado}"'
492
  )
493
  subprocess.run(cmd_fim, shell=True, check=True)
494
  nova_lista.append(video_podado)
495
+
496
+
497
+ # --- FADE_INI ---
498
  if i > 0:
499
  video_fade_ini = os.path.join(pasta, f"{base}_fade_ini_{i}.mp4")
500
  cmd_ini = (
501
+ f'ffmpeg -y -hide_banner -loglevel error -i "{base}" '
502
  f'-vf "trim=end_frame={poda},setpts=PTS-STARTPTS" -an "{video_fade_ini}"'
503
  )
504
  subprocess.run(cmd_ini, shell=True, check=True)
505
 
506
  # --- TRANSIÇÃO ---
507
+ if video_fade_fim and video_fade_ini:
508
+ video_fade = os.path.join(pasta, f"transicao_{i-1}_{i}.mp4")
509
  cmd_blend = (
510
  f'ffmpeg -y -hide_banner -loglevel error '
511
+ f'-i "{video_fade_fim}" -i "{video_fade_ini}" '
512
  f'-filter_complex "[0:v][1:v]blend=all_expr=\'A*(1-T/{poda})+B*(T/{poda})\',format=yuv420p" '
513
+ f'-frames:v {poda} "{video_fade}"'
514
  )
515
  subprocess.run(cmd_blend, shell=True, check=True)
516
+ nova_lista.append(video_fade)
517
 
518
  # --- FADE_FIM ---
519
  if i < total_partes - 1:
520
  video_fade_fim = os.path.join(pasta, f"{base}_fade_fim_{i}.mp4")
521
+ cmd_fim = (
522
+ f'ffmpeg -y -hide_banner -loglevel error '
523
+ f'-i "{base}" -vf "trim=start_frame=-{poda},setpts=PTS-STARTPTS" '
524
+ f'-an "{video_fade_fim}"'
525
+ )
526
  subprocess.run(cmd_fim, shell=True, check=True)
 
527
 
528
  print(f"[DEBUG] Nova lista finalizada com {len(nova_lista)} partes.")
529
  print(f"[DEBUG] {nova_lista}")