Uniaff commited on
Commit
c3dd560
·
verified ·
1 Parent(s): 79ec25e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +38 -37
app.py CHANGED
@@ -1,7 +1,6 @@
1
  import gradio as gr
2
  import subprocess
3
  import os
4
- import tempfile
5
 
6
  def generate(video, audio, checkpoint, no_smooth, resize_factor, pad_top, pad_bottom, pad_left, pad_right, save_as_video):
7
  if video is None or audio is None or checkpoint is None:
@@ -20,47 +19,49 @@ def generate(video, audio, checkpoint, no_smooth, resize_factor, pad_top, pad_bo
20
  print(f"Путь к видео: {video_path}")
21
  print(f"Путь к аудио: {audio_path}")
22
 
23
- # Создание временной директории для сохранения выходного видео
24
- with tempfile.TemporaryDirectory() as temp_dir:
25
- # Определение выходного файла
26
- output_path = os.path.join(temp_dir, "output.mp4")
27
- print(f"Путь к выходному файлу: {output_path}")
28
 
29
- # Подготовка аргументов для инференса
30
- args = [
31
- "--checkpoint_path", f"checkpoints/{checkpoint}.pth",
32
- "--segmentation_path", "checkpoints/face_segmentation.pth",
33
- "--enhance_face", "gfpgan",
34
- "--face", video_path,
35
- "--audio", audio_path,
36
- "--outfile", output_path,
37
- "--resize_factor", str(resize_factor),
38
- "--pads", str(pad_top), str(pad_bottom), str(pad_left), str(pad_right)
39
- ]
40
 
41
- if no_smooth:
42
- args.append("--nosmooth")
43
-
44
- if save_as_video:
45
- args.append("--save_as_video")
 
 
 
 
 
 
46
 
47
- try:
48
- # Вызов команды инференса без изменения рабочей директории
49
- cmd = ["python", "inference.py"] + args
50
- print(f"Запуск инференса с командой: {' '.join(cmd)}")
51
- subprocess.run(cmd, check=True)
52
- except subprocess.CalledProcessError as e:
53
- print(f"Ошибка при выполнении команды: {e}")
54
- return f"Произошла ошибка при обработке: {e}"
55
 
56
- # Проверка наличия выходного файла
57
- if not os.path.exists(output_path):
58
- print("Выходной файл не существует.")
59
- return "Не удалось создать выходное видео."
60
 
61
- # Возвращаем путь к выходному файлу
62
- print(f"Выходной файл создан по пути: {output_path}")
63
- return output_path # Gradio автоматически обработает путь и выведет видео
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
 
65
  # Корректная структура Gradio Blocks
66
  with gr.Blocks() as ui:
 
1
  import gradio as gr
2
  import subprocess
3
  import os
 
4
 
5
  def generate(video, audio, checkpoint, no_smooth, resize_factor, pad_top, pad_bottom, pad_left, pad_right, save_as_video):
6
  if video is None or audio is None or checkpoint is None:
 
19
  print(f"Путь к видео: {video_path}")
20
  print(f"Путь к аудио: {audio_path}")
21
 
22
+ # Создание директории 'outputs' для сохранения выходного видео
23
+ output_dir = "outputs"
24
+ os.makedirs(output_dir, exist_ok=True)
 
 
25
 
26
+ # Определение выходного файла
27
+ output_path = os.path.join(output_dir, "output.mp4")
28
+ print(f"Путь к выходному файлу: {output_path}")
 
 
 
 
 
 
 
 
29
 
30
+ # Подготовка аргументов для инференса
31
+ args = [
32
+ "--checkpoint_path", f"checkpoints/{checkpoint}.pth",
33
+ "--segmentation_path", "checkpoints/face_segmentation.pth",
34
+ "--enhance_face", "gfpgan",
35
+ "--face", video_path,
36
+ "--audio", audio_path,
37
+ "--outfile", output_path,
38
+ "--resize_factor", str(resize_factor),
39
+ "--pads", str(pad_top), str(pad_bottom), str(pad_left), str(pad_right)
40
+ ]
41
 
42
+ if no_smooth:
43
+ args.append("--nosmooth")
 
 
 
 
 
 
44
 
45
+ if save_as_video:
46
+ args.append("--save_as_video")
 
 
47
 
48
+ try:
49
+ # Вызов команды инференса без изменения рабочей директории
50
+ cmd = ["python", "inference.py"] + args
51
+ print(f"Запуск инференса с командой: {' '.join(cmd)}")
52
+ subprocess.run(cmd, check=True)
53
+ except subprocess.CalledProcessError as e:
54
+ print(f"Ошибка при выполнении команды: {e}")
55
+ return f"Произошла ошибка при обработке: {e}"
56
+
57
+ # Проверка наличия выходного файла
58
+ if not os.path.exists(output_path):
59
+ print("Выходной файл не существует.")
60
+ return "Не удалось создать выходное видео."
61
+
62
+ # Возвращаем путь к выходному файлу
63
+ print(f"Выходной файл создан по пути: {output_path}")
64
+ return output_path # Gradio автоматически обработает путь и выведет видео
65
 
66
  # Корректная структура Gradio Blocks
67
  with gr.Blocks() as ui: