Skip to content

Commit a88f919

Browse files
committed
continuing on video tab
Signed-off-by: Vladimir Mandic <[email protected]>
1 parent 9ac936a commit a88f919

File tree

2 files changed

+18
-10
lines changed

2 files changed

+18
-10
lines changed

modules/ui_video.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ def run_video(*args):
3838
if selected and 'Hunyuan' in selected.name:
3939
return hunyuan.generate(*args)
4040
shared.log.error(f'Video model not found: args={args}')
41-
return [], '', '', f'Video model not found: engine={engine} model={model}'
41+
return [], None, '', '', f'Video model not found: engine={engine} model={model}'
4242

4343

4444
def create_ui():
@@ -85,8 +85,14 @@ def create_ui():
8585
video_type, video_duration, video_loop, video_pad, video_interpolate = ui_sections.create_video_inputs(tab='video')
8686
override_settings = ui_common.create_override_inputs('video')
8787

88-
# output panel with gallery
89-
gallery, gen_info, html_info, _html_info_formatted, html_log = ui_common.create_output_panel("video", prompt=prompt, preview=False, transfer=False, scale=2)
88+
# output panel with gallery and video tabs
89+
with gr.Column(elem_id='video-output-column', scale=3) as _column_output:
90+
with gr.Tabs(elem_classes=['video-output-tabs'], elem_id='video-output-tabs'):
91+
with gr.Tab('Frames', id='out-gallery'):
92+
gallery, gen_info, html_info, _html_info_formatted, html_log = ui_common.create_output_panel("video", prompt=prompt, preview=False, transfer=False, scale=2)
93+
with gr.Tab('Video', id='out-video'):
94+
video = gr.Video(label="Output", show_label=False, elem_id='control_output_video', elem_classes=['control-image'])
95+
9096
# connect reuse seed button
9197
ui_common.connect_reuse_seed(seed, reuse_seed, gen_info, is_subseed=False)
9298
random_seed.click(fn=lambda: -1, show_progress=False, inputs=[], outputs=[seed])
@@ -132,7 +138,7 @@ def create_ui():
132138
fn=call_queue.wrap_gradio_gpu_call(run_video, extra_outputs=[None, '', ''], name='Video'),
133139
_js="submit_video",
134140
inputs=video_args,
135-
outputs=[gallery, gen_info, html_info, html_log],
141+
outputs=[gallery, video, gen_info, html_info, html_log],
136142
show_progress=False,
137143
)
138144
prompt.submit(**video_dict)

modules/video_models/hunyuan.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -166,14 +166,14 @@ def generate(*args, **kwargs):
166166
task_id, ui_state, engine, model, prompt, negative, styles, width, height, frames, steps, sampler_index, sampler_shift, seed, guidance_scale, guidance_true, init_image, vae_type, vae_tile_frames, save_frames, video_type, video_duration, video_loop, video_pad, video_interpolate, override_settings = args
167167
if engine is None or model is None or engine == 'None' or model == 'None':
168168
shared.log.error('Video: model not selected')
169-
return [], '', '', 'Video model not selected'
169+
return [], None, '', '', 'Video model not selected'
170170
if not shared.sd_loaded or 'Hunyuan' not in shared.sd_model.__class__.__name__:
171171
found = [model.name for model in models.get(engine, [])]
172172
selected = [m for m in models[engine] if m.name == model][0] if len(found) > 0 else None
173173
load(selected)
174174
if not shared.sd_loaded or 'Hunyuan' not in shared.sd_model.__class__.__name__:
175175
shared.log.error('Video: model not loaded')
176-
return [], '', '', 'Video model not loaded'
176+
return [], None, '', '', 'Video model not loaded'
177177
debug(f'Video generate: task={task_id} args={args} kwargs={kwargs}')
178178

179179
p = processing.StableDiffusionProcessingVideo(
@@ -201,7 +201,7 @@ def generate(*args, **kwargs):
201201
if 'I2V' in model:
202202
if init_image is None:
203203
shared.log.error('Video: init image not set')
204-
return [], '', '', 'Error: init image not set'
204+
return [], None, '', '', 'Error: init image not set'
205205
p.task_args['image'] = init_image
206206

207207
shared.sd_model = sd_models.apply_balanced_offload(shared.sd_model)
@@ -251,10 +251,12 @@ def generate(*args, **kwargs):
251251

252252
p.close()
253253
if processed is None or len(processed.images) == 0:
254-
return [], '', '', 'Error: processing failed'
254+
return [], None, '', '', 'Error: processing failed'
255255
shared.log.info(f'Video: frames={len(processed.images)} time={t1-t0:.2f}')
256256
if video_type != 'None':
257-
images.save_video(p, filename=None, images=processed.images, video_type=video_type, duration=video_duration, loop=video_loop, pad=video_pad, interpolate=video_interpolate)
257+
video_file = images.save_video(p, filename=None, images=processed.images, video_type=video_type, duration=video_duration, loop=video_loop, pad=video_pad, interpolate=video_interpolate)
258+
else:
259+
video_file = None
258260

259261
generation_info_js = processed.js() if processed is not None else ''
260-
return processed.images, generation_info_js, processed.info, ui_common.plaintext_to_html(processed.comments)
262+
return processed.images, video_file, generation_info_js, processed.info, ui_common.plaintext_to_html(processed.comments)

0 commit comments

Comments
 (0)