"""A sample to use WebRTC in sendonly mode to transfer frames from the browser to the server and to render frames via `st.image`.""" import logging import queue import streamlit as st from streamlit_webrtc import WebRtcMode, webrtc_streamer from sample_utils.turn import get_ice_servers logger = logging.getLogger(__name__) webrtc_ctx = webrtc_streamer( key="video-sendonly", mode=WebRtcMode.SENDONLY, rtc_configuration={"iceServers": get_ice_servers()}, media_stream_constraints={"video": True}, ) image_place = st.empty() while True: if webrtc_ctx.video_receiver: try: video_frame = webrtc_ctx.video_receiver.get_frame(timeout=1) except queue.Empty: logger.warning("Queue is empty. Abort.") break img_rgb = video_frame.to_ndarray(format="rgb24") image_place.image(img_rgb) else: logger.warning("AudioReciver is not set. Abort.") break