Spaces:
Build error
Build error
Update app.py
Browse files
app.py
CHANGED
@@ -6,6 +6,7 @@ import ffmpeg
|
|
6 |
import requests
|
7 |
import os
|
8 |
import tempfile
|
|
|
9 |
|
10 |
# Configuração do Hugging Face e ElevenLabs
|
11 |
HF_MODEL = "Helsinki-NLP/opus-mt-mul-en"
|
@@ -64,6 +65,15 @@ def replace_audio(video_path: str, new_audio_path: str) -> str:
|
|
64 |
except Exception as e:
|
65 |
return f"Erro na substituição do áudio: {str(e)}"
|
66 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
67 |
# Pipeline completo
|
68 |
def process_video(video_file):
|
69 |
try:
|
@@ -96,7 +106,13 @@ def process_video(video_file):
|
|
96 |
if "Erro" in output_video_path:
|
97 |
return output_video_path
|
98 |
|
99 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
100 |
except Exception as e:
|
101 |
return f"Erro inesperado: {str(e)}"
|
102 |
|
@@ -104,9 +120,9 @@ def process_video(video_file):
|
|
104 |
iface = gr.Interface(
|
105 |
fn=process_video,
|
106 |
inputs=gr.File(label="Carregar Vídeo (MP4)"),
|
107 |
-
outputs=gr.
|
108 |
title="Tradutor de Vídeos para Português",
|
109 |
description="Faz a transcrição, tradução e substituição de áudio em vídeos automaticamente."
|
110 |
)
|
111 |
|
112 |
-
iface.launch()
|
|
|
6 |
import requests
|
7 |
import os
|
8 |
import tempfile
|
9 |
+
import shutil
|
10 |
|
11 |
# Configuração do Hugging Face e ElevenLabs
|
12 |
HF_MODEL = "Helsinki-NLP/opus-mt-mul-en"
|
|
|
65 |
except Exception as e:
|
66 |
return f"Erro na substituição do áudio: {str(e)}"
|
67 |
|
68 |
+
# Função para mover o arquivo gerado para um local público
|
69 |
+
def move_video_to_public(output_video_path: str) -> str:
|
70 |
+
try:
|
71 |
+
public_path = f"/app/public/{os.path.basename(output_video_path)}" # Ajuste para o ambiente de produção
|
72 |
+
shutil.move(output_video_path, public_path)
|
73 |
+
return public_path
|
74 |
+
except Exception as e:
|
75 |
+
return f"Erro ao mover o vídeo para o diretório público: {str(e)}"
|
76 |
+
|
77 |
# Pipeline completo
|
78 |
def process_video(video_file):
|
79 |
try:
|
|
|
106 |
if "Erro" in output_video_path:
|
107 |
return output_video_path
|
108 |
|
109 |
+
# Passo 5: Mover o vídeo para um local público (link acessível)
|
110 |
+
public_video_path = move_video_to_public(output_video_path)
|
111 |
+
if "Erro" in public_video_path:
|
112 |
+
return public_video_path
|
113 |
+
|
114 |
+
# Retorna o link público para o vídeo
|
115 |
+
return f"Vídeo processado com sucesso! Você pode visualizar o vídeo no seguinte link: [Clique aqui para ver o vídeo](/{os.path.basename(public_video_path)})"
|
116 |
except Exception as e:
|
117 |
return f"Erro inesperado: {str(e)}"
|
118 |
|
|
|
120 |
iface = gr.Interface(
|
121 |
fn=process_video,
|
122 |
inputs=gr.File(label="Carregar Vídeo (MP4)"),
|
123 |
+
outputs=gr.HTML(label="Link para o Vídeo"),
|
124 |
title="Tradutor de Vídeos para Português",
|
125 |
description="Faz a transcrição, tradução e substituição de áudio em vídeos automaticamente."
|
126 |
)
|
127 |
|
128 |
+
iface.launch(share=True)
|