Spaces:
Running on Zero
Running on Zero
| import gradio as gr | |
| def render_column_player(): | |
| with gr.Column(scale=4): | |
| video_output = gr.Video( | |
| label="📹 Generated Video Result", | |
| autoplay=True, | |
| sources=["upload"], | |
| buttons=["download", "share"], | |
| interactive=True, | |
| elem_id="generated-video" | |
| ) | |
| with gr.Row(): | |
| grab_frame_btn = gr.Button("📸 Frame -> Input Image", variant="secondary") | |
| grab_last_frame_btn = gr.Button("🏁 Frame -> Last Frame", variant="secondary") | |
| grab_swap_target_btn = gr.Button("👤 Frame -> Swap Target", variant="secondary") | |
| timestamp_box = gr.Number(value=0, label="Timestamp", visible=True, elem_id="hidden-timestamp") | |
| gpu_report_box = gr.HTML() | |
| file_output = gr.File(label="📥 Download Video File") | |
| with gr.Accordion("🖼️ Last Image (Optional End Frame)", open=False): | |
| last_image_component = gr.Image( | |
| type="pil", | |
| label="Last Image (Optional End Frame)", | |
| sources=["upload", "clipboard"], | |
| height=200 | |
| ) | |
| play_result_video = gr.Checkbox(label="Display Video Preview", value=True, interactive=True) | |
| merge_queue_state = gr.State(value=[]) | |
| with gr.Accordion("🔗 Standalone Video Merge & Stitcher", open=False): | |
| with gr.Row(): | |
| append_merge_btn = gr.Button("➕ Append Output Video & Merge", variant="primary") | |
| clear_merge_btn = gr.Button("🗑️ Clear Queue", variant="stop") | |
| merge_status_box = gr.HTML("<div style='color: #94a3b8; font-size: 0.85rem; padding: 4px 0;'>Merge Queue: Empty (0 clips)</div>") | |
| merged_video_output = gr.Video( | |
| label="🎬 Merged Video Result", | |
| autoplay=True, | |
| sources=["upload"], | |
| buttons=["download"], | |
| height=220 | |
| ) | |
| merged_file_output = gr.File(label="📥 Download Merged MP4") | |
| return { | |
| "video_output": video_output, | |
| "grab_frame_btn": grab_frame_btn, | |
| "grab_last_frame_btn": grab_last_frame_btn, | |
| "grab_swap_target_btn": grab_swap_target_btn, | |
| "timestamp_box": timestamp_box, | |
| "gpu_report_box": gpu_report_box, | |
| "file_output": file_output, | |
| "last_image_component": last_image_component, | |
| "play_result_video": play_result_video, | |
| "merge_queue_state": merge_queue_state, | |
| "append_merge_btn": append_merge_btn, | |
| "clear_merge_btn": clear_merge_btn, | |
| "merge_status_box": merge_status_box, | |
| "merged_video_output": merged_video_output, | |
| "merged_file_output": merged_file_output | |
| } | |