Carlos s commited on
Commit
b75ee16
·
verified ·
1 Parent(s): d56ea23

Update api/ltx_server.py

Browse files
Files changed (1) hide show
  1. api/ltx_server.py +2 -50
api/ltx_server.py CHANGED
@@ -503,56 +503,8 @@ class VideoService:
503
  print(f"⚠️ Falha ao ler metadados de {path}")
504
  return {}
505
 
506
- def _gerar_lista_com_transicoes(self, pasta: str, video_paths: list[str], crossfade_frames: int = 8) -> list[str]:
507
- """
508
- Gera uma nova lista de vídeos aplicando transições suaves (crossfade de N frames)
509
- entre cada par de vídeos da lista original.
510
- Sanitiza logs e valida cada saída antes de adicioná-la à lista final.
511
- """
512
- if len(video_paths) < 2:
513
- print("⚠️ Lista de vídeos muito curta, nada a mesclar.")
514
- return video_paths
515
-
516
- nova_lista = []
517
- for i in range(len(video_paths) - 1):
518
- v1 = video_paths[i]
519
- v2 = video_paths[i + 1]
520
- out = os.path.join(pasta, f"transicao_{i+1}.mp4")
521
-
522
- # Comando FFmpeg com crossfade simples (exemplo usando blend)
523
- cmd = (
524
- f"ffmpeg -hide_banner -loglevel error -y "
525
- f"-i {shlex.quote(v1)} -i {shlex.quote(v2)} "
526
- f"-filter_complex "
527
- f"\"[0:v][1:v]blend=all_expr='A*(1-T/{crossfade_frames})+B*(T/{crossfade_frames})',"
528
- f"format=yuv420p\" "
529
- f"-an {shlex.quote(out)}"
530
- )
531
-
532
- print(f"[DEBUG] Gerando transição {i+1}: {cmd}")
533
- try:
534
- subprocess.run(shlex.split(cmd), check=True)
535
- except subprocess.CalledProcessError as e:
536
- print(f"❌ Erro na transição {i+1}: {e}")
537
- continue
538
 
539
- # Verifica se o arquivo foi criado
540
- if not os.path.exists(out) or os.path.getsize(out) == 0:
541
- print(f"⚠️ Transição {i+1} falhou (arquivo vazio ou ausente).")
542
- continue
543
-
544
- # Mostra o DNA do vídeo gerado antes de adicioná-lo
545
- dna = self._get_video_info(out)
546
- if not dna or dna["duração"] == 0:
547
- print(f"⚠️ Arquivo corrompido: {out}")
548
- continue
549
-
550
- nova_lista.append(out)
551
-
552
- print(f"✅ Nova lista de vídeos pronta: {nova_lista}")
553
- return nova_lista
554
-
555
- def _gerar_lista_com_transicoes1(self, pasta: str, video_paths: list[str], crossfade_frames: int = 8) -> list[str]:
556
  """
557
  Gera uma nova lista de vídeos aplicando transições suaves (crossfade de N frames)
558
  entre cada par de vídeos da lista original.
@@ -645,7 +597,7 @@ class VideoService:
645
  print(f"[DEBUG] Nova lista final de {len(nova_lista)} arquivos criada.")
646
  return nova_lista
647
 
648
- def _concat_mp4s_no_reencode1(self, mp4_list: List[str], out_path: str):
649
  """
650
  Concatena múltiplos MP4s sem reencode usando o demuxer do ffmpeg.
651
  ATENÇÃO: todos os arquivos precisam ter mesmo codec, fps, resolução etc.
 
503
  print(f"⚠️ Falha ao ler metadados de {path}")
504
  return {}
505
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
506
 
507
+ def _gerar_lista_com_transicoes(self, pasta: str, video_paths: list[str], crossfade_frames: int = 8) -> list[str]:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
508
  """
509
  Gera uma nova lista de vídeos aplicando transições suaves (crossfade de N frames)
510
  entre cada par de vídeos da lista original.
 
597
  print(f"[DEBUG] Nova lista final de {len(nova_lista)} arquivos criada.")
598
  return nova_lista
599
 
600
+ def _concat_mp4s_no_reencode(self, mp4_list: List[str], out_path: str):
601
  """
602
  Concatena múltiplos MP4s sem reencode usando o demuxer do ffmpeg.
603
  ATENÇÃO: todos os arquivos precisam ter mesmo codec, fps, resolução etc.