Spaces:
Sleeping
Sleeping
import streamlit as st | |
from streamlit_webrtc import webrtc_streamer, VideoTransformerBase | |
import av | |
import cv2 | |
# Video Transformer Class for Rotating Stream | |
class RotatedVideoTransformer(VideoTransformerBase): | |
def transform(self, frame): | |
img = frame.to_ndarray(format="bgr24") | |
rotated_img = cv2.rotate(img, cv2.ROTATE_90_COUNTERCLOCKWISE) # Rotate 90 degrees | |
return av.VideoFrame.from_ndarray(rotated_img, format="bgr24") | |
# Streamlit UI | |
st.title("Live Webcam Streaming with Rotation") | |
# Text Input and Confirm Button | |
user_input = st.text_input("Enter some text:") | |
if st.button("Confirm"): | |
st.write(f"You entered: {user_input}") | |
# WebRTC Configuration with STUN + TURN Server | |
rtc_configuration = { | |
"iceServers": [ | |
{"urls": ["stun:stun.l.google.com:19302"]}, # Google STUN Server | |
{ | |
"urls": "turn:turn.nordvpn.com:1194", # Free TURN server (NordVPN) | |
"username": "random_username", | |
"credential": "random_password" | |
} | |
] | |
} | |
# Original Webcam Stream | |
st.subheader("Original Video Stream") | |
webrtc_streamer( | |
key="original", | |
media_stream_constraints={"video": True, "audio": False}, | |
rtc_configuration=rtc_configuration, # Use STUN + TURN | |
) | |
# Rotated Webcam Stream | |
st.subheader("Rotated Video Stream") | |
webrtc_streamer( | |
key="rotated", | |
video_transformer_factory=RotatedVideoTransformer, | |
media_stream_constraints={"video": True, "audio": False}, | |
rtc_configuration=rtc_configuration, # Use STUN + TURN | |
) | |