import os import gradio as gr from pathlib import Path # Importa o singleton do nosso novo servidor LTX try: from services.ltx_server import ltx_server_singleton as server except Exception as e: print(f"ERRO FATAL: Não foi possível importar o LTXServer. A aplicação não pode iniciar.") print(f"Detalhe do erro: {e}") raise # --- Função de Callback da UI --- def generate_video_from_image( prompt: str, image_input: str, height: int, width: int, num_frames: int, seed: int, progress=gr.Progress(track_tqdm=True) # <<< ADICIONADO PROGRESSO AQUI ): """Callback para a UI que chama o backend LTXServer.""" progress(0.1, desc="Validando entradas...") if not image_input or not Path(image_input).exists(): gr.Warning("Por favor, faça o upload de uma imagem de entrada.") return None if not prompt or not prompt.strip(): gr.Warning("Por favor, insira um prompt.") return None try: progress(0.5, desc="Enviando tarefa para o backend LTX (Q8). A inferência pode demorar um pouco...") video_path = server.run_inference( prompt=prompt, image_path=image_input, height=int(height), width=int(width), num_frames=int(num_frames), seed=int(seed) ) progress(1.0, desc="Inferência concluída!") return video_path except Exception as e: print(f"[UI LTX ERROR] A inferência falhou: {e}") gr.Error(f"Erro na Geração: {e}") return None # --- Definição da Interface Gráfica com Gradio --- with gr.Blocks(title="LTX-Video (Q8 Img2Vid)") as demo: gr.HTML( """
Interface de teste isolada para o modelo LTX-Video quantizado.