fixed local + hosted STUN/TURN
Browse files- app.py +2 -1
- utils/turn.py +12 -4
app.py
CHANGED
@@ -134,11 +134,12 @@ def video_frame_callback(frame: av.VideoFrame) -> av.VideoFrame:
|
|
134 |
|
135 |
return av.VideoFrame.from_ndarray(image, format="bgr24")
|
136 |
|
|
|
137 |
|
138 |
webrtc_ctx = webrtc_streamer(
|
139 |
key="object-detection",
|
140 |
mode=WebRtcMode.SENDRECV,
|
141 |
-
rtc_configuration=
|
142 |
video_frame_callback=video_frame_callback,
|
143 |
media_stream_constraints={"video": True, "audio": False},
|
144 |
async_processing=True,
|
|
|
134 |
|
135 |
return av.VideoFrame.from_ndarray(image, format="bgr24")
|
136 |
|
137 |
+
ice_servers = get_ice_servers()
|
138 |
|
139 |
webrtc_ctx = webrtc_streamer(
|
140 |
key="object-detection",
|
141 |
mode=WebRtcMode.SENDRECV,
|
142 |
+
rtc_configuration=ice_servers,
|
143 |
video_frame_callback=video_frame_callback,
|
144 |
media_stream_constraints={"video": True, "audio": False},
|
145 |
async_processing=True,
|
utils/turn.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
import logging
|
2 |
import os
|
3 |
|
4 |
import streamlit as st
|
@@ -16,6 +16,11 @@ def get_ice_servers():
|
|
16 |
See https://github.com/whitphx/streamlit-webrtc/issues/1213
|
17 |
"""
|
18 |
|
|
|
|
|
|
|
|
|
|
|
19 |
# Ref: https://www.twilio.com/docs/stun-turn/api
|
20 |
try:
|
21 |
account_sid = os.environ["TWILIO_ACCOUNT_SID"]
|
@@ -24,7 +29,7 @@ def get_ice_servers():
|
|
24 |
logger.warning(
|
25 |
"Twilio credentials are not set. Fallback to a free STUN server from Google." # noqa: E501
|
26 |
)
|
27 |
-
return
|
28 |
|
29 |
client = Client(account_sid, auth_token)
|
30 |
|
@@ -34,6 +39,9 @@ def get_ice_servers():
|
|
34 |
st.warning(
|
35 |
f"Error occurred while accessing Twilio API. Fallback to a free STUN server from Google. ({e})" # noqa: E501
|
36 |
)
|
37 |
-
return
|
38 |
|
39 |
-
return
|
|
|
|
|
|
|
|
1 |
+
import logging
|
2 |
import os
|
3 |
|
4 |
import streamlit as st
|
|
|
16 |
See https://github.com/whitphx/streamlit-webrtc/issues/1213
|
17 |
"""
|
18 |
|
19 |
+
GOOGLE_RTC_CONFIGURATION = {
|
20 |
+
"iceServers": [{"urls": ["stun:stun.l.google.com:19302"]}],
|
21 |
+
"iceTransportPolicy": "all",
|
22 |
+
}
|
23 |
+
|
24 |
# Ref: https://www.twilio.com/docs/stun-turn/api
|
25 |
try:
|
26 |
account_sid = os.environ["TWILIO_ACCOUNT_SID"]
|
|
|
29 |
logger.warning(
|
30 |
"Twilio credentials are not set. Fallback to a free STUN server from Google." # noqa: E501
|
31 |
)
|
32 |
+
return GOOGLE_RTC_CONFIGURATION
|
33 |
|
34 |
client = Client(account_sid, auth_token)
|
35 |
|
|
|
39 |
st.warning(
|
40 |
f"Error occurred while accessing Twilio API. Fallback to a free STUN server from Google. ({e})" # noqa: E501
|
41 |
)
|
42 |
+
return GOOGLE_RTC_CONFIGURATION
|
43 |
|
44 |
+
return {
|
45 |
+
"iceServers": token.ice_servers,
|
46 |
+
"iceTransportPolicy": "all",
|
47 |
+
}
|