Update app.py
Browse files
app.py
CHANGED
|
@@ -26,10 +26,10 @@ mediapy.set_ffmpeg(ffmpeg_path)
|
|
| 26 |
|
| 27 |
|
| 28 |
|
| 29 |
-
def do_interpolation(frame1, frame2):
|
| 30 |
print(frame1, frame2)
|
| 31 |
input_frames = [frame1, frame2]
|
| 32 |
-
times_to_interpolate = 2
|
| 33 |
frames = list(
|
| 34 |
util.interpolate_recursively_from_files(
|
| 35 |
input_frames, times_to_interpolate, interpolator))
|
|
@@ -83,12 +83,8 @@ def create_video(frames, fps, type):
|
|
| 83 |
|
| 84 |
return type + "_result.mp4"
|
| 85 |
|
| 86 |
-
def convertG2V(imported_gif):
|
| 87 |
-
clip = VideoFileClip(imported_gif.name)
|
| 88 |
-
clip.write_videofile("my_gif_video.mp4")
|
| 89 |
-
return "my_gif_video.mp4"
|
| 90 |
|
| 91 |
-
def infer(video_in):
|
| 92 |
|
| 93 |
|
| 94 |
# 1. break video into frames and get FPS
|
|
@@ -112,7 +108,7 @@ def infer(video_in):
|
|
| 112 |
for idx, frame in enumerate(frames_list):
|
| 113 |
if idx < len(frames_list) - 1:
|
| 114 |
next_frame = frames_list[idx+1]
|
| 115 |
-
interpolated_frames = do_interpolation(frame, next_frame) # should return a list of 3 interpolated frames
|
| 116 |
break_interpolated_video = get_frames(interpolated_frames, "interpol")
|
| 117 |
print(break_interpolated_video[0])
|
| 118 |
for j, img in enumerate(break_interpolated_video[0]):
|
|
@@ -121,7 +117,7 @@ def infer(video_in):
|
|
| 121 |
result_frames.append(f"{frame}_to_{next_frame}_{j}.jpg")
|
| 122 |
print("frames " + str(idx) + " & " + str(idx+1) + "/" + str(n_frame) + ": done;")
|
| 123 |
|
| 124 |
-
final_vid = create_video(result_frames,
|
| 125 |
|
| 126 |
files = [final_vid]
|
| 127 |
|
|
@@ -153,8 +149,8 @@ with gr.Blocks() as demo:
|
|
| 153 |
with gr.Row():
|
| 154 |
with gr.Column():
|
| 155 |
video_input = gr.Video(source="upload", type="filepath")
|
| 156 |
-
|
| 157 |
-
|
| 158 |
submit_btn = gr.Button("Submit")
|
| 159 |
|
| 160 |
with gr.Column():
|
|
@@ -169,6 +165,6 @@ with gr.Blocks() as demo:
|
|
| 169 |
#cache_examples=False
|
| 170 |
#)
|
| 171 |
|
| 172 |
-
submit_btn.click(fn=infer, inputs=[video_input], outputs=[video_output, file_output])
|
| 173 |
|
| 174 |
demo.launch()
|
|
|
|
| 26 |
|
| 27 |
|
| 28 |
|
| 29 |
+
def do_interpolation(frame1, frame2, times_to_interpolate):
|
| 30 |
print(frame1, frame2)
|
| 31 |
input_frames = [frame1, frame2]
|
| 32 |
+
#times_to_interpolate = 2
|
| 33 |
frames = list(
|
| 34 |
util.interpolate_recursively_from_files(
|
| 35 |
input_frames, times_to_interpolate, interpolator))
|
|
|
|
| 83 |
|
| 84 |
return type + "_result.mp4"
|
| 85 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 86 |
|
| 87 |
+
def infer(video_in,interpolation,fps_output):
|
| 88 |
|
| 89 |
|
| 90 |
# 1. break video into frames and get FPS
|
|
|
|
| 108 |
for idx, frame in enumerate(frames_list):
|
| 109 |
if idx < len(frames_list) - 1:
|
| 110 |
next_frame = frames_list[idx+1]
|
| 111 |
+
interpolated_frames = do_interpolation(frame, next_frame,interpolation) # should return a list of 3 interpolated frames
|
| 112 |
break_interpolated_video = get_frames(interpolated_frames, "interpol")
|
| 113 |
print(break_interpolated_video[0])
|
| 114 |
for j, img in enumerate(break_interpolated_video[0]):
|
|
|
|
| 117 |
result_frames.append(f"{frame}_to_{next_frame}_{j}.jpg")
|
| 118 |
print("frames " + str(idx) + " & " + str(idx+1) + "/" + str(n_frame) + ": done;")
|
| 119 |
|
| 120 |
+
final_vid = create_video(result_frames, fps_output, "interpolated")
|
| 121 |
|
| 122 |
files = [final_vid]
|
| 123 |
|
|
|
|
| 149 |
with gr.Row():
|
| 150 |
with gr.Column():
|
| 151 |
video_input = gr.Video(source="upload", type="filepath")
|
| 152 |
+
interpolation = gr.Slider(minimum=2,maximum=4,step=1, value=1, label="Interpolation Steps")
|
| 153 |
+
fps_output = gr.Radio([8, 12, 24], label="FPS output")
|
| 154 |
submit_btn = gr.Button("Submit")
|
| 155 |
|
| 156 |
with gr.Column():
|
|
|
|
| 165 |
#cache_examples=False
|
| 166 |
#)
|
| 167 |
|
| 168 |
+
submit_btn.click(fn=infer, inputs=[video_input,interpolation,fps_output], outputs=[video_output, file_output])
|
| 169 |
|
| 170 |
demo.launch()
|