File size: 3,982 Bytes
eaccf59
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
@REM Handy script for post-process pipeline
@ECHO OFF
SETLOCAL

TITLE Post-processing for prompt-travel...

REM remeber base path and script name
SET _=%~dp0
SET $=%~nx0
SHIFT

REM init configs or make default
SET CONFIG_FILE=%_%postprocess-config.cmd
IF EXIST %CONFIG_FILE% GOTO skip_init_cfg
COPY %CONFIG_FILE%.example %CONFIG_FILE%
IF ERRORLEVEL 1 GOTO die
:skip_init_cfg

REM load configs
CALL %CONFIG_FILE%
IF ERRORLEVEL 1 GOTO die

REM assert required arguments
IF /I "%~0"=="-c" (
  SET CLEAN_FLAG=1
  SHIFT
)
SET IMAGE_FOLDER=%~0
SHIFT

REM show help
IF NOT EXIST "%IMAGE_FOLDER%" (
  ECHO Usage: %$% [-c] ^<image_folder^> [upscale] [interp] [fps] [resr_model] [rife_model]
  ECHO    -c            clean cache data when done
  ECHO    upscale       image upsampling rate ^(default: %RESR_UPSCALE%^)
  ECHO    interp        interpolated video frame count ^(default: %RIFE_INTERP%^)
  ECHO    fps           rendered video frame rate ^(default: %FPS%^)
  ECHO    resr_model    Real-ESRGAN model checkpoint name ^(default: %RESR_MODEL%^)
  ECHO    rife_model    RIFE model checkpoint name ^(default: %RIFE_MODEL%^)
  ECHO.
  ECHO    e.g. %$% D:\images
  ECHO         %$% -c D:\images
  ECHO         %$% D:\images 2 0
  ECHO         %$% D:\images 4 120 24
  ECHO         %$% D:\images 4 0 24 realesr-animevideov3 rife-v2.3
  ECHO    note:
  ECHO         ^<args^> arguments are required
  ECHO         ^[args^] arguments are optional
  ECHO.
  GOTO :end
)

REM override optional arguments by command line
IF NOT "%~0"=="" (
  SET RESR_UPSCALE=%~0
  SHIFT
)
IF NOT "%~0"=="" (
  SET RIFE_INTERP=%~0
  SHIFT
)
IF NOT "%~0"=="" (
  SET FPS=%~0
  SHIFT
)
IF NOT "%~0"=="" (
  SET RESR_MODEL=%~0
  SHIFT
)
IF NOT "%~0"=="" (
  SET RIFE_MODEL=%~0
  SHIFT
)

REM prepare paths
SET TOOL_HOME=%_%tools
SET RESR_HOME=%TOOL_HOME%\realesrgan-ncnn-vulkan
SET RIFE_HOME=%TOOL_HOME%\rife-ncnn-vulkan
SET FFMPEG_HOME=%TOOL_HOME%\ffmpeg

SET BBOX_BIN=busybox.exe
SET RESR_BIN=realesrgan-ncnn-vulkan.exe
SET RIFE_BIN=rife-ncnn-vulkan.exe
SET FFMPEG_BIN=ffmpeg.exe

PATH %TOOL_HOME%;%PATH%
PATH %RESR_HOME%;%PATH%
PATH %RIFE_HOME%;%PATH%
PATH %FFMPEG_HOME%\bin;%FFMPEG_HOME%;%PATH%

SET RESR_FOLDER=%IMAGE_FOLDER%\resr
SET RIFE_FOLDER=%IMAGE_FOLDER%\rife
SET OUT_FILE=%IMAGE_FOLDER%\synth.mp4

REM show configs for debug
ECHO ==================================================
ECHO RESR_MODEL   = %RESR_MODEL%
ECHO RESR_UPSCALE = %RESR_UPSCALE%
ECHO RIFE_MODEL   = %RIFE_MODEL%
ECHO RIFE_INTERP  = %RIFE_INTERP%
ECHO FPS          = %FPS%
ECHO RESR_FOLDER  = %RESR_FOLDER%
ECHO RIFE_FOLDER  = %RIFE_FOLDER%
ECHO OUT_FILE     = %OUT_FILE%
ECHO.

ECHO ^>^> wait for %WAIT_BEFORE_START% seconds before start...
%BBOX_BIN% sleep %WAIT_BEFORE_START%
IF ERRORLEVEL 1 GOTO die
ECHO ^>^> start processing!

REM start processing
ECHO ==================================================

ECHO [1/3] image super-resolution
IF EXIST %RESR_FOLDER% GOTO skip_resr
MKDIR %RESR_FOLDER%
%RESR_BIN% -v -s %RESR_UPSCALE% -n %RESR_MODEL% -i %IMAGE_FOLDER% -o %RESR_FOLDER%
IF ERRORLEVEL 1 GOTO die
:skip_resr

ECHO ==================================================

ECHO [2/3] video frame-interpolation
IF EXIST %RIFE_FOLDER% GOTO skip_rife
MKDIR %RIFE_FOLDER%
SET NFRAMES=%RESR_FOLDER%

%RIFE_BIN% -v -n %RIFE_INTERP% -m %RIFE_MODEL% -i %RESR_FOLDER% -o %RIFE_FOLDER%
IF ERRORLEVEL 1 GOTO die
:skip_rife

ECHO ==================================================

ECHO [3/3] render video
%FFMPEG_BIN% -y -framerate %FPS% -i %RIFE_FOLDER%\%%08d.png -crf 20 -c:v libx264 -pix_fmt yuv420p %OUT_FILE%
IF ERRORLEVEL 1 GOTO die

ECHO ==================================================

REM clean cache
IF "%CLEAN_FLAG%"=="1" (
  RMDIR /S /Q %RESR_FOLDER%
  RMDIR /S /Q %RIFE_FOLDER%
)

REM finished
ECHO ^>^> file saved to %OUT_FILE%
IF "%EXPLORER_FLAG%"=="1" (
  explorer.exe /e,/select,%OUT_FILE%
)

ECHO ^>^> Done!
ECHO.
GOTO :end

REM error handle
:die
ECHO ^<^< Error!
ECHO ^<^< errorlevel: %ERRORLEVEL%
ECHO.

:end
PAUSE