File size: 1,524 Bytes
b5a56e1
df11c7f
9fdee07
df11c7f
c803588
df11c7f
 
 
 
 
 
c7f4ab1
9fdee07
dbd9537
c7f4ab1
df11c7f
9fdee07
 
 
 
e94a2f3
df11c7f
e94a2f3
a737070
e94a2f3
a737070
 
 
e94a2f3
 
df11c7f
 
dbd9537
df11c7f
 
 
e94a2f3
df11c7f
0597779
df11c7f
dbd9537
df11c7f
 
 
 
e94a2f3
df11c7f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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
)