Fabrice-TIERCELIN commited on
Commit
8d213cd
·
verified ·
1 Parent(s): d1508ba
Files changed (1) hide show
  1. app_endframe.py +43 -4
app_endframe.py CHANGED
@@ -107,6 +107,9 @@ stream = AsyncStream()
107
  outputs_folder = './outputs/'
108
  os.makedirs(outputs_folder, exist_ok=True)
109
 
 
 
 
110
  # 20250506 pftq: Added function to encode input video frames into latents
111
  @torch.no_grad()
112
  def video_encode(video_path, resolution, no_resize, vae, vae_batch_size=16, device="cuda", width=None, height=None):
@@ -667,7 +670,16 @@ def get_duration(input_video, end_frame, end_frame_weight, prompt, n_prompt, see
667
 
668
  @spaces.GPU(duration=get_duration)
669
  def process(input_video, end_frame, end_frame_weight, prompt, n_prompt, seed, batch, resolution, total_second_length, latent_window_size, steps, cfg, gs, rs, gpu_memory_preservation, use_teacache, no_resize, mp4_crf, num_clean_frames, vae_batch):
670
- global stream, high_vram
 
 
 
 
 
 
 
 
 
671
  # 20250506 pftq: Updated assertion for video input
672
  assert input_video is not None, 'No input video!'
673
 
@@ -741,8 +753,8 @@ with block:
741
  #example_quick_prompts.click(lambda x: x[0], inputs=[example_quick_prompts], outputs=prompt, show_progress=False, queue=False)
742
 
743
  with gr.Row():
744
- start_button = gr.Button(value="Start Generation")
745
- end_button = gr.Button(value="End Generation", interactive=False)
746
 
747
  with gr.Group():
748
  with gr.Row():
@@ -783,13 +795,18 @@ with block:
783
 
784
  mp4_crf = gr.Slider(label="MP4 Compression", minimum=0, maximum=100, value=16, step=1, info="Lower means better quality. 0 is uncompressed. Change to 16 if you get black outputs. ")
785
 
 
 
 
 
786
  with gr.Column():
787
  preview_image = gr.Image(label="Next Latents", height=200, visible=False)
788
  result_video = gr.Video(label="Finished Frames", autoplay=True, show_share_button=False, height=512, loop=True)
789
  progress_desc = gr.Markdown('', elem_classes='no-generating-animation')
790
  progress_bar = gr.HTML('', elem_classes='no-generating-animation')
791
 
792
- gr.Examples(
 
793
  examples = [
794
  [
795
  "./img_examples/Example1.mp4", # input_video
@@ -830,4 +847,26 @@ with block:
830
  end_button.click(fn=end_process)
831
 
832
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
833
  block.launch(share=True)
 
107
  outputs_folder = './outputs/'
108
  os.makedirs(outputs_folder, exist_ok=True)
109
 
110
+ input_video_debug_value = None
111
+ prompt_debug_value = None
112
+
113
  # 20250506 pftq: Added function to encode input video frames into latents
114
  @torch.no_grad()
115
  def video_encode(video_path, resolution, no_resize, vae, vae_batch_size=16, device="cuda", width=None, height=None):
 
670
 
671
  @spaces.GPU(duration=get_duration)
672
  def process(input_video, end_frame, end_frame_weight, prompt, n_prompt, seed, batch, resolution, total_second_length, latent_window_size, steps, cfg, gs, rs, gpu_memory_preservation, use_teacache, no_resize, mp4_crf, num_clean_frames, vae_batch):
673
+ global stream, high_vram, input_video_debug_value, prompt_debug_value
674
+
675
+ if input_video_debug_value is not None:
676
+ input_video = input_video_debug_value
677
+ input_video_debug_value = None
678
+
679
+ if prompt_debug_value is not None:
680
+ prompt = prompt_debug_value
681
+ prompt_debug_value = None
682
+
683
  # 20250506 pftq: Updated assertion for video input
684
  assert input_video is not None, 'No input video!'
685
 
 
753
  #example_quick_prompts.click(lambda x: x[0], inputs=[example_quick_prompts], outputs=prompt, show_progress=False, queue=False)
754
 
755
  with gr.Row():
756
+ start_button = gr.Button(value="Start Generation", variant="primary")
757
+ end_button = gr.Button(value="End Generation", variant="stop", interactive=False)
758
 
759
  with gr.Group():
760
  with gr.Row():
 
795
 
796
  mp4_crf = gr.Slider(label="MP4 Compression", minimum=0, maximum=100, value=16, step=1, info="Lower means better quality. 0 is uncompressed. Change to 16 if you get black outputs. ")
797
 
798
+ with gr.Row():
799
+ input_video_debug = gr.Video(sources='upload', label="Input Video Debug", height=320)
800
+ prompt_debug = gr.Textbox(label="Prompt Debug", value='')
801
+
802
  with gr.Column():
803
  preview_image = gr.Image(label="Next Latents", height=200, visible=False)
804
  result_video = gr.Video(label="Finished Frames", autoplay=True, show_share_button=False, height=512, loop=True)
805
  progress_desc = gr.Markdown('', elem_classes='no-generating-animation')
806
  progress_bar = gr.HTML('', elem_classes='no-generating-animation')
807
 
808
+ with gr.Row(visible=False):
809
+ gr.Examples(
810
  examples = [
811
  [
812
  "./img_examples/Example1.mp4", # input_video
 
847
  end_button.click(fn=end_process)
848
 
849
 
850
+ def handle_input_video_debug_upload(input):
851
+ global input_video_debug_value
852
+ input_video_debug_value = input
853
+ return []
854
+
855
+ def handle_prompt_debug_change(input):
856
+ global prompt_debug_value
857
+ prompt_debug_value = input
858
+ return []
859
+
860
+ input_video_debug.upload(
861
+ fn=handle_input_video_debug_upload,
862
+ inputs=[input_video_debug],
863
+ outputs=[]
864
+ )
865
+
866
+ prompt_debug.change(
867
+ fn=handle_prompt_debug_change,
868
+ inputs=[prompt_debug],
869
+ outputs=[]
870
+ )
871
+
872
  block.launch(share=True)