|
"""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 |
|
|
|
logger = logging.getLogger(__name__) |
|
|
|
|
|
webrtc_ctx = webrtc_streamer( |
|
key="video-sendonly", |
|
mode=WebRtcMode.SENDONLY, |
|
rtc_configuration={"iceServers": [{"urls": ["stun:stun.l.google.com:19302"]}]}, |
|
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 |
|
|