File size: 3,892 Bytes
0d338e8
34947c3
52a6df6
d79183c
52a6df6
 
 
 
 
d79183c
0d338e8
4196959
 
 
0d338e8
 
52a6df6
0d338e8
52a6df6
0d338e8
 
 
 
 
 
52a6df6
 
 
 
 
 
 
34947c3
 
 
 
 
 
 
52a6df6
34947c3
 
 
af3ede9
 
0d338e8
 
4196959
 
 
0d338e8
 
52a6df6
0d338e8
52a6df6
0d338e8
 
 
 
 
 
52a6df6
 
 
 
 
 
 
34947c3
 
 
 
 
 
 
52a6df6
34947c3
 
 
af3ede9
 
34947c3
0d338e8
 
 
 
 
 
 
 
 
 
69afee6
 
52a6df6
 
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import streamlit as st
from streamlit_webrtc import webrtc_streamer, get_hf_ice_servers, get_twilio_ice_servers, __version__ as st_webrtc_version
import aiortc

frontend_ice_type = st.selectbox("Frontend ICE type", ["Empty", "Google STUN", "Twilio STUN/TURN", "Twilio STUN/TURN and Google STUN", "HF TURN only", "HF TURN and Google STUN", "None configured"])
backend_ice_type = st.selectbox("Backend ICE type", ["Empty", "Google STUN", "Twilio STUN/TURN", "Twilio STUN/TURN and Google STUN", "HF TURN only", "HF TURN and Google STUN", "None configured"])

# google_stun_ice_servers = [{"urls": ["stun:stun.l.google.com:19302"]}]
google_stun_ice_servers = [{"urls": "stun:stun.l.google.com:19302", "url": "stun:stun.l.google.com:19302"}]

if frontend_ice_type == "Empty":
    frontend_rtc_configuration = {
        "iceServers": []
    }
elif frontend_ice_type == "Google STUN":
    frontend_rtc_configuration = {
        "iceServers": google_stun_ice_servers
    }
elif frontend_ice_type == "Twilio STUN/TURN":
    frontend_rtc_configuration = {
        "iceServers": get_twilio_ice_servers(
            twilio_sid=st.secrets["TWILIO_ACCOUNT_SID"],
            twilio_token=st.secrets["TWILIO_AUTH_TOKEN"],
        )
    }
elif frontend_ice_type == "Twilio STUN/TURN and Google STUN":
    frontend_rtc_configuration = {
        "iceServers": google_stun_ice_servers + get_twilio_ice_servers(
            twilio_sid=st.secrets["TWILIO_ACCOUNT_SID"],
            twilio_token=st.secrets["TWILIO_AUTH_TOKEN"],
        )
    }
elif frontend_ice_type == "HF TURN only":
    hf_ice_servers = get_hf_ice_servers(token=st.secrets["HF_TOKEN"])
    frontend_rtc_configuration = {
        "iceServers": hf_ice_servers
    }
elif frontend_ice_type == "HF TURN and Google STUN":
    hf_ice_servers = get_hf_ice_servers(token=st.secrets["HF_TOKEN"])
    ice_servers = hf_ice_servers + google_stun_ice_servers
    frontend_rtc_configuration = {
        "iceServers": ice_servers
    }
elif frontend_ice_type == "None configured":
    frontend_rtc_configuration = None

if backend_ice_type == "Empty":
    backend_rtc_configuration = {
        "iceServers": []
    }
elif backend_ice_type == "Google STUN":
    backend_rtc_configuration = {
        "iceServers": google_stun_ice_servers
    }
elif backend_ice_type == "Twilio STUN/TURN":
    backend_rtc_configuration = {
        "iceServers": get_twilio_ice_servers(
            twilio_sid=st.secrets["TWILIO_ACCOUNT_SID"],
            twilio_token=st.secrets["TWILIO_AUTH_TOKEN"],
        )
    }
elif backend_ice_type == "Twilio STUN/TURN and Google STUN":
    backend_rtc_configuration = {
        "iceServers": google_stun_ice_servers + get_twilio_ice_servers(
            twilio_sid=st.secrets["TWILIO_ACCOUNT_SID"],
            twilio_token=st.secrets["TWILIO_AUTH_TOKEN"],
        ) + google_stun_ice_servers
    }
elif backend_ice_type == "HF TURN only":
    hf_ice_servers = get_hf_ice_servers(token=st.secrets["HF_TOKEN"])
    backend_rtc_configuration = {
        "iceServers": hf_ice_servers
    }
elif backend_ice_type == "HF TURN and Google STUN":
    hf_ice_servers = get_hf_ice_servers(token=st.secrets["HF_TOKEN"])
    ice_servers = hf_ice_servers + google_stun_ice_servers
    backend_rtc_configuration = {
        "iceServers": ice_servers
    }
elif backend_ice_type == "None configured":
    backend_rtc_configuration = None


st.write("Frontend ICE configuration:", frontend_rtc_configuration)
st.write("Backend ICE configuration:", backend_rtc_configuration)

webrtc_streamer(
    key="example",
    media_stream_constraints={"video": True, "audio": False},
    frontend_rtc_configuration=frontend_rtc_configuration,
    server_rtc_configuration=backend_rtc_configuration,
)

st.write(f"Streamlit version: {st.__version__}")
st.write(f"Streamlit-WebRTC version: {st_webrtc_version}")
st.write(f"aiortc version: {aiortc.__version__}")