我有一个用Streamlit构建的网站,托管在谷歌的应用程序引擎上。使用streamlit_webRTC,我实现了一个拖缆,可以从访客的相机读取图像,将其输入到我的算法(人脸检测、遮罩开/关分类),并将处理后的图像返回给播放器
WEBRTC_CLIENT_SETTINGS = ClientSettings(
rtc_configuration={"iceServers": [{"urls": ["stun:stun.l.google.com:19302"]}]},
media_stream_constraints={"video": True, "audio": False},
)
def app_mask_detection():
class OpenCVVideoTransformer(VideoTransformerBase):
def __init__(self) -> None:
self.assembly = ModelAssembly()
def transform(self, frame: av.VideoFrame) -> av.VideoFrame:
img = frame.to_ndarray(format="bgr24")
return self.assembly.forwardFrame(img)
webrtc_ctx = webrtc_streamer(
key="opencv-filter",
mode=WebRtcMode.SENDRECV,
client_settings=WEBRTC_CLIENT_SETTINGS,
video_transformer_factory=OpenCVVideoTransformer,
async_transform=True,
)
问题是一次只能有一名访客使用拖缆。 在我看来,活动实例正在被阻塞,直到访问者关闭拖缆。我看到两种可能的解决方案:
a)修改应用程序引擎设置,为每个访问者创建单独的实例
b)在代码中修改某种拖缆的设置
即使这些解决方案是有效的,我也完全不知道该去哪里寻找方法,这就是我写这篇文章的原因。任何提示都将受到高度赞赏
根据评论,OP找到了解决方案:
如果您有类似的问题,请考虑升级到0.9.0或更高版本。
相关问题 更多 >
编程相关推荐