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("
Merge Queue: Empty (0 clips)
") 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 }