Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import roop.globals | |
| import ui.globals | |
| fake_cam_image = None | |
| current_cam_image = None | |
| cam_swapping = False | |
| camthread = None | |
| def livecam_tab(): | |
| with gr.Tab("🎥 Live Cam"): | |
| with gr.Row(): | |
| with gr.Column(scale=2): | |
| cam_toggle = gr.Checkbox(label='Activate', value=ui.globals.ui_live_cam_active) | |
| with gr.Column(scale=1): | |
| vcam_toggle = gr.Checkbox(label='Stream to virtual camera', value=False) | |
| with gr.Column(scale=1): | |
| camera_num = gr.Slider(0, 2, value=0, label="Camera Number", step=1.0, interactive=True) | |
| if ui.globals.ui_live_cam_active: | |
| with gr.Row(): | |
| with gr.Column(): | |
| cam = gr.Webcam(label='Camera', source='webcam', interactive=True, streaming=False) | |
| with gr.Column(): | |
| fake_cam_image = gr.Image(label='Fake Camera Output', interactive=False) | |
| cam_toggle.change(fn=on_cam_toggle, inputs=[cam_toggle]) | |
| if ui.globals.ui_live_cam_active: | |
| vcam_toggle.change(fn=on_vcam_toggle, inputs=[vcam_toggle, camera_num], outputs=[cam, fake_cam_image]) | |
| cam.stream(on_stream_swap_cam, inputs=[cam, ui.globals.ui_selected_enhancer, ui.globals.ui_blend_ratio], outputs=[fake_cam_image], preprocess=True, postprocess=True, show_progress="hidden") | |
| def on_cam_toggle(state): | |
| ui.globals.ui_live_cam_active = state | |
| gr.Warning('Server will be restarted for this change!') | |
| ui.globals.ui_restart_server = True | |
| def on_vcam_toggle(state, num): | |
| from roop.virtualcam import stop_virtual_cam, start_virtual_cam | |
| if state: | |
| yield gr.Webcam.update(interactive=False), None | |
| start_virtual_cam(num) | |
| return gr.Webcam.update(interactive=False), None | |
| else: | |
| stop_virtual_cam() | |
| return gr.Webcam.update(interactive=True), None | |
| def on_stream_swap_cam(camimage, enhancer, blend_ratio): | |
| from roop.core import live_swap | |
| global current_cam_image, cam_swapping, fake_cam_image | |
| roop.globals.selected_enhancer = enhancer | |
| roop.globals.blend_ratio = blend_ratio | |
| if not cam_swapping: | |
| cam_swapping = True | |
| if len(roop.globals.INPUT_FACESETS) > 0: | |
| current_cam_image = live_swap(camimage, "all", False, None, ui.globals.ui_SELECTED_INPUT_FACE_INDEX) | |
| else: | |
| current_cam_image = camimage | |
| cam_swapping = False | |
| return current_cam_image | |